dolfin-1.3.0/0000755000175000017500000000000012263015072012644 5ustar johannrjohannrdolfin-1.3.0/COPYING.LESSER0000644000175000017500000001672712263014601014705 0ustar johannrjohannr GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. dolfin-1.3.0/data/0000755000175000017500000000000012263014601013552 5ustar johannrjohannrdolfin-1.3.0/data/README0000644000175000017500000000041312263014601014430 0ustar johannrjohannrThe data in this directory, including example meshes, have been moved to the FEniCS web server to decrease the size of this repository. For a selection of meshes, please visit http://fenicsproject.org/download/data.html http://fenicsproject.org/pub/data/meshes/ dolfin-1.3.0/bench/0000755000175000017500000000000012263014601013720 5ustar johannrjohannrdolfin-1.3.0/bench/bench.py0000644000175000017500000000607012263014601015354 0ustar johannrjohannr"Run all benchmarks" # Copyright (C) 2010 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Johannes Ring, 2011, 2012 # # First added: 2010-03-26 # Last changed: 2012-03-15 import os, sys, time failed = [] def run_bench(arg, directory, files): # Skip directories not containing a benchmark bench_exec = "bench_" + "_".join(directory.split(os.path.sep)[1:]) if not bench_exec in files: return # Get name of benchmark name = directory.replace("./", "").replace("/", "-") print "Running benchmark %s..." % name # Remove old logfile cwd = os.getcwd() logfile = os.path.join(cwd, "logs", name + ".log") try: os.remove(logfile) except: pass # Run benchmark os.chdir(directory) t0 = time.time() status = os.system(os.path.join(os.curdir, bench_exec) + " > %s" % logfile) elapsed_time = time.time() - t0 # Change to toplevel directory os.chdir(cwd) # Report timing if status == 0: print "Completed in %g seconds\n" % elapsed_time else: global failed failed.append(name) print "*** Failed\n" return # Get description of benchmark f = open(logfile) description = f.read().split("\n")[0] f.close() # Get timings (if any) f = open(logfile) run_timings = [("", elapsed_time)] for line in [line for line in f.read().split("\n") if "BENCH" in line]: words = [word.strip() for word in line.split(" ")] # Override total time if len(words) == 2: run_timings[0] = ("", float(words[1])) # Add sub timing elif len(words) == 3: run_timings.append((words[1].lower(), float(words[2]))) f.close() # Append to log file d = time.gmtime() date = str((d.tm_year, d.tm_mon, d.tm_mday, d.tm_hour, d.tm_min, d.tm_sec)) f = open(os.path.join("logs", "bench.log"), "a") for (postfix, timing) in run_timings: if postfix == "": n = name d = description else: n = "%s-%s" % (name, postfix) d = "%s (%s)" % (description, postfix) f.write('%s %s %g "%s"\n' % (date, n, timing, d)) return status == 0 # Iterate over benchmarks os.path.walk(".", run_bench, None) # Print summary if len(failed) == 0: print "All benchmarks OK" else: print "%d benchmark(s) failed:" % len(failed) for name in failed: print " " + name sys.exit(len(failed)) dolfin-1.3.0/bench/logs/0000755000175000017500000000000012263014601014664 5ustar johannrjohannrdolfin-1.3.0/bench/logs/milestones.log0000644000175000017500000000052212263014601017550 0ustar johannrjohannr2008-02-18 DOLFIN 0.7.2 2008-04-30 DOLFIN 0.7.3 2008-06-23 DOLFIN 0.8.0 2008-10-20 DOLFIN 0.8.1 2009-01-05 DOLFIN 0.9.0 2009-02-17 DOLFIN 0.9.1 2009-04-07 DOLFIN 0.9.2 2009-09-26 DOLFIN 0.9.3 2009-10-12 DOLFIN 0.9.4 2009-12-04 DOLFIN 0.9.5 2010-02-03 DOLFIN 0.9.6 2010-02-17 DOLFIN 0.9.7 2010-07-01 DOLFIN 0.9.8 2010-09-02 DOLFIN 0.9.9 dolfin-1.3.0/bench/logs/bench.log0000644000175000017500000004005512263014601016452 0ustar johannrjohannr(2008, 4, 30, 14, 12, 50) la-vector-access-cpp 15.8298 "Accessing vector of size 10000000 (100 repetitions)" (2008, 4, 30, 14, 13, 9) la-vector-assignment-cpp 18.8627 "Assigning to vector of size 10000000 (100 repetitions)" (2008, 4, 30, 14, 13, 16) fem-jit-python 0.555803 "JIT compilation (in memory cache)" (2008, 4, 30, 14, 13, 28) fem-convergence-cpp 11.4321 "Solving Poisson's equation in 2D for q = 1, n = 2." (2008, 4, 30, 14, 13, 34) mesh-unitcube-cpp 6.08171 "Creating unit cube of size 128 x 128 x 128 (10 repetitions)" (2008, 4, 30, 14, 14, 50) mesh-refinement-cpp 75.8 "Uniform refinement of unit cube of size 4 x 4 x 4 (5 refinements)" (2008, 4, 30, 14, 15, 5) mesh-iteration-cpp 14.4 "Iteration over entities of unit cube of size 128 x 128 x 128 (100 repetitions)" (2008, 6, 23, 14, 18, 43) la-vector-access-cpp 15.0198 "Accessing vector of size 10000000 (100 repetitions)" (2008, 6, 23, 14, 19, 4) la-vector-assignment-cpp 20.8082 "Assigning to vector of size 10000000 (100 repetitions)" (2008, 6, 23, 14, 19, 5) fem-jit-python 5.6982e-06 "JIT compilation (in memory cache)" (2008, 6, 23, 14, 19, 20) fem-convergence-cpp 14.7388 "Solving Poisson's equation in 2D for q = 1, n = 2." (2008, 6, 23, 14, 21, 44) fem-assembly-cpp 143.513 "Assembly for various forms and backends" (2008, 6, 23, 14, 21, 49) mesh-unitcube-cpp 5.86431 "Creating unit cube of size 128 x 128 x 128 (10 repetitions)" (2008, 6, 23, 14, 23, 5) mesh-refinement-cpp 75.54 "Uniform refinement of unit cube of size 4 x 4 x 4 (5 refinements)" (2008, 6, 23, 14, 23, 20) mesh-iteration-cpp 14.43 "Iteration over entities of unit cube of size 128 x 128 x 128 (100 repetitions)" (2008, 10, 20, 14, 31, 31) la-vector-access-cpp 14.8214 "Accessing vector of size 10000000 (100 repetitions)" (2008, 10, 20, 14, 31, 52) la-vector-assignment-cpp 20.3453 "Assigning to vector of size 10000000 (100 repetitions)" (2008, 10, 20, 14, 31, 57) fem-jit-python 9.65118e-05 "JIT compilation (in memory cache)" (2008, 10, 20, 14, 32, 8) fem-convergence-cpp 11.3695 "Solving Poisson's equation in 2D for q = 1, n = 2." (2008, 10, 20, 14, 36, 28) fem-assembly-cpp 259.766 "Assembly for various forms and backends" (2008, 10, 20, 14, 36, 34) mesh-unitcube-cpp 6.17667 "Creating unit cube of size 128 x 128 x 128 (10 repetitions)" (2008, 10, 20, 14, 37, 50) mesh-refinement-cpp 75.76 "Uniform refinement of unit cube of size 4 x 4 x 4 (5 refinements)" (2008, 10, 20, 14, 38, 5) mesh-iteration-cpp 13.98 "Iteration over entities of unit cube of size 128 x 128 x 128 (100 repetitions)" (2009, 1, 5, 14, 40, 18) la-vector-access-cpp 15.5729 "Accessing vector of size 10000000 (100 repetitions)" (2009, 1, 5, 14, 40, 37) la-vector-assignment-cpp 19.2912 "Assigning to vector of size 10000000 (100 repetitions)" (2009, 1, 5, 14, 40, 42) fem-jit-python 9.86099e-05 "JIT compilation (in memory cache)" (2009, 1, 5, 14, 40, 53) fem-convergence-cpp 11.4639 "Solving Poisson's equation in 2D for q = 1, n = 2." (2009, 1, 5, 14, 45, 15) fem-assembly-cpp 261.595 "Assembly for various forms and backends" (2009, 1, 5, 14, 45, 52) mesh-unitcube-cpp 37.4356 "Creating unit cube of size 128 x 128 x 128 (10 repetitions)" (2009, 1, 5, 14, 47, 14) mesh-refinement-cpp 81.26 "Uniform refinement of unit cube of size 4 x 4 x 4 (5 refinements)" (2009, 1, 5, 14, 47, 32) mesh-iteration-cpp 13.98 "Iteration over entities of unit cube of size 128 x 128 x 128 (100 repetitions)" (2009, 2, 17, 14, 50, 21) la-vector-access-cpp 14.8237 "Accessing vector of size 10000000 (100 repetitions)" (2009, 2, 17, 14, 50, 41) la-vector-assignment-cpp 20.2998 "Assigning to vector of size 10000000 (100 repetitions)" (2009, 2, 17, 14, 50, 46) fem-jit-python 0.00846782 "JIT compilation (in memory cache)" (2009, 2, 17, 14, 50, 57) fem-convergence-cpp 11.3066 "Solving Poisson's equation in 2D for q = 1, n = 2." (2009, 2, 17, 14, 55, 21) fem-assembly-cpp 263.869 "Assembly for various forms and backends" (2009, 2, 17, 14, 55, 59) mesh-unitcube-cpp 38.0645 "Creating unit cube of size 128 x 128 x 128 (10 repetitions)" (2009, 2, 17, 14, 57, 22) mesh-refinement-cpp 82.32 "Uniform refinement of unit cube of size 4 x 4 x 4 (5 refinements)" (2009, 2, 17, 14, 57, 40) mesh-iteration-cpp 13.98 "Iteration over entities of unit cube of size 128 x 128 x 128 (100 repetitions)" (2009, 4, 7, 15, 0, 43) la-vector-access-cpp 15.8316 "Accessing vector of size 10000000 (100 repetitions)" (2009, 4, 7, 15, 1, 2) la-vector-assignment-cpp 19.2988 "Assigning to vector of size 10000000 (100 repetitions)" (2009, 4, 7, 15, 1, 7) fem-jit-python 0.00636039 "JIT compilation (in memory cache)" (2009, 4, 7, 15, 1, 42) fem-convergence-cpp 35.5486 "Solving Poisson's equation in 2D for q = 1, n = 2." (2009, 4, 7, 15, 11, 21) fem-assembly-cpp 579.254 "Assembly for various forms and backends" (2009, 4, 7, 15, 12, 0) mesh-unitcube-cpp 38.1176 "Creating unit cube of size 128 x 128 x 128 (10 repetitions)" (2009, 4, 7, 15, 13, 22) mesh-refinement-cpp 82.04 "Uniform refinement of unit cube of size 4 x 4 x 4 (5 refinements)" (2009, 4, 7, 15, 13, 40) mesh-iteration-cpp 13.97 "Iteration over entities of unit cube of size 128 x 128 x 128 (100 repetitions)" (2009, 9, 26, 11, 43, 12) la-vector-access-cpp 46.0397 "Accessing vector of size 10000000 (100 repetitions)" (2009, 9, 26, 11, 43, 35) la-vector-assignment-cpp 22.3038 "Assigning to vector of size 10000000 (100 repetitions)" (2009, 9, 26, 11, 43, 38) fem-jit-python 0.00593891 "JIT compilation (in memory cache)" (2009, 9, 26, 11, 50, 46) fem-speedup-cpp 427.872 "Assembly/solve speedup running on 4 processors" (2009, 9, 26, 11, 50, 46) fem-speedup-cpp-assembly 2.38776 "Assembly/solve speedup running on 4 processors (assembly)" (2009, 9, 26, 11, 50, 46) fem-speedup-cpp-solve 1.73264 "Assembly/solve speedup running on 4 processors (solve)" (2009, 9, 26, 11, 51, 15) fem-convergence-cpp 28.4034 "Solving Poisson's equation in 2D for q = 1, n = 2." (2009, 9, 26, 11, 58, 24) fem-assembly-cpp 428.812 "Assembly for various forms and backends" (2009, 9, 26, 11, 59, 4) mesh-unitcube-cpp 40.7715 "Creating unit cube of size 128 x 128 x 128 (10 repetitions)" (2009, 9, 26, 12, 0, 50) mesh-refinement-cpp 106.01 "Uniform refinement of unit cube of size 4 x 4 x 4 (5 refinements)" (2009, 9, 26, 12, 1, 31) mesh-iteration-cpp 35.84 "Iteration over entities of unit cube of size 128 x 128 x 128 (100 repetitions)" (2009, 9, 26, 12, 1, 52) function-evaluation-cpp 21.8595 "Evaluations of functions at arbitrary points." (2009, 9, 26, 12, 1, 52) function-evaluation-cpp 21.74 "Evaluations of functions at arbitrary points." (2009, 10, 12, 13, 4, 9) la-vector-access-cpp 51.7174 "Accessing vector of size 10000000 (100 repetitions)" (2009, 10, 12, 13, 4, 33) la-vector-assignment-cpp 23.85 "Assigning to vector of size 10000000 (100 repetitions)" (2009, 10, 12, 13, 4, 37) fem-jit-python 0.0057328 "JIT compilation (in memory cache)" (2009, 10, 12, 13, 13, 2) fem-speedup-cpp 505.45 "Assembly/solve speedup running on 4 processors" (2009, 10, 12, 13, 13, 2) fem-speedup-cpp-assembly 2.48958 "Assembly/solve speedup running on 4 processors (assembly)" (2009, 10, 12, 13, 13, 2) fem-speedup-cpp-solve 2.27064 "Assembly/solve speedup running on 4 processors (solve)" (2009, 10, 12, 13, 13, 31) fem-convergence-cpp 28.1976 "Solving Poisson's equation in 2D for q = 1, n = 2." (2009, 10, 12, 13, 20, 34) fem-assembly-cpp 423.846 "Assembly for various forms and backends" (2009, 10, 12, 13, 21, 16) mesh-unitcube-cpp 41.0422 "Creating unit cube of size 128 x 128 x 128 (10 repetitions)" (2009, 10, 12, 13, 23, 1) mesh-refinement-cpp 105.34 "Uniform refinement of unit cube of size 4 x 4 x 4 (5 refinements)" (2009, 10, 12, 13, 23, 41) mesh-iteration-cpp 36.28 "Iteration over entities of unit cube of size 128 x 128 x 128 (100 repetitions)" (2009, 10, 12, 13, 24, 2) function-evaluation-cpp 20.9444 "Evaluations of functions at arbitrary points." (2009, 10, 12, 13, 24, 2) function-evaluation-cpp 20.86 "Evaluations of functions at arbitrary points." (2009, 12, 4, 13, 32, 55) la-vector-access-cpp 48.7269 "Accessing vector of size 10000000 (100 repetitions)" (2009, 12, 4, 13, 33, 17) la-vector-assignment-cpp 21.8355 "Assigning to vector of size 10000000 (100 repetitions)" (2009, 12, 4, 13, 33, 20) fem-jit-python 0.0060514 "JIT compilation (in memory cache)" (2009, 12, 4, 13, 41, 51) fem-speedup-cpp 510.404 "Assembly/solve speedup running on 4 processors" (2009, 12, 4, 13, 41, 51) fem-speedup-cpp-assembly 2.25234 "Assembly/solve speedup running on 4 processors (assembly)" (2009, 12, 4, 13, 41, 51) fem-speedup-cpp-solve 2.30526 "Assembly/solve speedup running on 4 processors (solve)" (2009, 12, 4, 13, 42, 19) fem-convergence-cpp 27.954 "Solving Poisson's equation in 2D for q = 1, n = 2." (2009, 12, 4, 13, 49, 34) fem-assembly-cpp 434.896 "Assembly for various forms and backends" (2009, 12, 4, 13, 50, 14) mesh-unitcube-cpp 40.4804 "Creating unit cube of size 128 x 128 x 128 (10 repetitions)" (2009, 12, 4, 13, 52, 3) mesh-refinement-cpp 109.09 "Uniform refinement of unit cube of size 4 x 4 x 4 (5 refinements)" (2009, 12, 4, 13, 52, 43) mesh-iteration-cpp 35.82 "Iteration over entities of unit cube of size 128 x 128 x 128 (100 repetitions)" (2009, 12, 4, 13, 53, 4) function-evaluation-cpp 20.7841 "Evaluations of functions at arbitrary points." (2009, 12, 4, 13, 53, 4) function-evaluation-cpp 20.7 "Evaluations of functions at arbitrary points." (2010, 2, 3, 14, 2, 51) la-vector-access-cpp 55.332 "Accessing vector of size 10000000 (100 repetitions)" (2010, 2, 3, 14, 3, 13) la-vector-assignment-cpp 21.8265 "Assigning to vector of size 10000000 (100 repetitions)" (2010, 2, 3, 14, 3, 17) fem-jit-python 0.0240756 "JIT compilation (in memory cache)" (2010, 2, 3, 14, 11, 34) fem-speedup-cpp 497.496 "Assembly/solve speedup running on 4 processors" (2010, 2, 3, 14, 11, 34) fem-speedup-cpp-assembly 1.95726 "Assembly/solve speedup running on 4 processors (assembly)" (2010, 2, 3, 14, 11, 34) fem-speedup-cpp-solve 2.28999 "Assembly/solve speedup running on 4 processors (solve)" (2010, 2, 3, 14, 11, 49) fem-convergence-cpp 14.6188 "Solving Poisson's equation in 2D for q = 1, n = 2." (2010, 2, 3, 14, 19, 12) fem-assembly-cpp 442.546 "Assembly for various forms and backends" (2010, 2, 3, 14, 19, 53) mesh-unitcube-cpp 40.8975 "Creating unit cube of size 128 x 128 x 128 (10 repetitions)" (2010, 2, 3, 14, 21, 38) mesh-refinement-cpp 104.77 "Uniform refinement of unit cube of size 4 x 4 x 4 (5 refinements)" (2010, 2, 3, 14, 22, 17) mesh-iteration-cpp 35.36 "Iteration over entities of unit cube of size 128 x 128 x 128 (100 repetitions)" (2010, 2, 3, 14, 22, 39) function-evaluation-cpp 22.0025 "Evaluations of functions at arbitrary points." (2010, 2, 3, 14, 22, 39) function-evaluation-cpp 21.89 "Evaluations of functions at arbitrary points." (2010, 2, 17, 14, 29, 56) la-vector-access-cpp 54.1729 "Accessing vector of size 10000000 (100 repetitions)" (2010, 2, 17, 14, 30, 18) la-vector-assignment-cpp 21.8163 "Assigning to vector of size 10000000 (100 repetitions)" (2010, 2, 17, 14, 30, 21) fem-jit-python 0.0254639 "JIT compilation (in memory cache)" (2010, 2, 17, 14, 37, 29) fem-speedup-cpp 427.685 "Assembly/solve speedup running on 4 processors" (2010, 2, 17, 14, 37, 29) fem-speedup-cpp-assembly 2.20183 "Assembly/solve speedup running on 4 processors (assembly)" (2010, 2, 17, 14, 37, 29) fem-speedup-cpp-solve 1.66403 "Assembly/solve speedup running on 4 processors (solve)" (2010, 2, 17, 14, 37, 44) fem-convergence-cpp 14.9222 "Solving Poisson's equation in 2D for q = 1, n = 2." (2010, 2, 17, 14, 45, 6) fem-assembly-cpp 441.941 "Assembly for various forms and backends" (2010, 2, 17, 14, 45, 47) mesh-unitcube-cpp 40.4403 "Creating unit cube of size 128 x 128 x 128 (10 repetitions)" (2010, 2, 17, 14, 47, 30) mesh-refinement-cpp 103.46 "Uniform refinement of unit cube of size 4 x 4 x 4 (5 refinements)" (2010, 2, 17, 14, 48, 10) mesh-iteration-cpp 35.36 "Iteration over entities of unit cube of size 128 x 128 x 128 (100 repetitions)" (2010, 2, 17, 14, 48, 32) function-evaluation-cpp 21.7258 "Evaluations of functions at arbitrary points." (2010, 2, 17, 14, 48, 32) function-evaluation-cpp 21.65 "Evaluations of functions at arbitrary points." (2010, 6, 19, 19, 52, 6) la-vector-access-cpp 48.4456 "Accessing vector of size 10000000 (100 repetitions)" (2010, 6, 19, 19, 52, 29) la-vector-assignment-cpp 22.5369 "Assigning to vector of size 10000000 (100 repetitions)" (2010, 6, 19, 19, 52, 30) fem-jit-python 0.0248256 "JIT compilation (in memory cache)" (2010, 6, 19, 19, 55, 12) fem-speedup-cpp 162.58 "Assembly/solve speedup running on 4 processors" (2010, 6, 19, 19, 55, 12) fem-speedup-cpp-assembly 2.52128 "Assembly/solve speedup running on 4 processors (assembly)" (2010, 6, 19, 19, 55, 12) fem-speedup-cpp-solve 1.67775 "Assembly/solve speedup running on 4 processors (solve)" (2010, 6, 19, 19, 55, 25) fem-convergence-cpp 13.031 "Solving Poisson's equation in 2D for q = 1, n = 2." (2010, 6, 19, 19, 59, 43) fem-assembly-cpp 257.852 "Assembly for various forms and backends" (2010, 6, 19, 20, 0, 24) mesh-unitcube-cpp 40.8275 "Creating unit cube of size 128 x 128 x 128 (10 repetitions)" (2010, 6, 19, 20, 2, 9) mesh-refinement-cpp 105.19 "Uniform refinement of unit cube of size 4 x 4 x 4 (5 refinements)" (2010, 6, 19, 20, 2, 49) mesh-iteration-cpp 35.39 "Iteration over entities of unit cube of size 128 x 128 x 128 (100 repetitions)" (2010, 6, 19, 20, 3, 11) function-evaluation-cpp 21.7684 "Evaluations of functions at arbitrary points." (2010, 6, 19, 20, 3, 11) function-evaluation-cpp 21.69 "Evaluations of functions at arbitrary points." (2010, 6, 20, 1, 3, 51) la-vector-access-cpp 48.4401 "Accessing vector of size 10000000 (100 repetitions)" (2010, 6, 20, 1, 4, 14) la-vector-assignment-cpp 23.8249 "Assigning to vector of size 10000000 (100 repetitions)" (2010, 6, 20, 1, 4, 16) fem-jit-python 0.024965 "JIT compilation (in memory cache)" (2010, 6, 20, 1, 6, 56) fem-speedup-cpp 160.021 "Assembly/solve speedup running on 4 processors" (2010, 6, 20, 1, 6, 56) fem-speedup-cpp-assembly 2.49474 "Assembly/solve speedup running on 4 processors (assembly)" (2010, 6, 20, 1, 6, 56) fem-speedup-cpp-solve 1.66284 "Assembly/solve speedup running on 4 processors (solve)" (2010, 6, 20, 1, 7, 8) fem-convergence-cpp 12.7508 "Solving Poisson's equation in 2D for q = 1, n = 2." (2010, 6, 20, 1, 11, 30) fem-assembly-cpp 261.657 "Assembly for various forms and backends" (2010, 6, 20, 1, 12, 11) mesh-unitcube-cpp 40.9106 "Creating unit cube of size 128 x 128 x 128 (10 repetitions)" (2010, 6, 20, 1, 13, 56) mesh-refinement-cpp 105.5 "Uniform refinement of unit cube of size 4 x 4 x 4 (5 refinements)" (2010, 6, 20, 1, 14, 36) mesh-iteration-cpp 35.35 "Iteration over entities of unit cube of size 128 x 128 x 128 (100 repetitions)" (2010, 6, 20, 1, 14, 58) function-evaluation-cpp 21.8163 "Evaluations of functions at arbitrary points." (2010, 6, 20, 1, 14, 58) function-evaluation-cpp 21.74 "Evaluations of functions at arbitrary points." (2010, 6, 21, 1, 4, 0) la-vector-access-cpp 48.4561 "Accessing vector of size 10000000 (100 repetitions)" (2010, 6, 21, 1, 4, 21) la-vector-assignment-cpp 21.824 "Assigning to vector of size 10000000 (100 repetitions)" (2010, 6, 21, 1, 4, 25) fem-jit-python 0.0251855 "JIT compilation (in memory cache)" (2010, 6, 21, 1, 7, 4) fem-speedup-cpp 159.221 "Assembly/solve speedup running on 4 processors" (2010, 6, 21, 1, 7, 4) fem-speedup-cpp-assembly 2.52128 "Assembly/solve speedup running on 4 processors (assembly)" (2010, 6, 21, 1, 7, 4) fem-speedup-cpp-solve 1.70657 "Assembly/solve speedup running on 4 processors (solve)" (2010, 6, 21, 1, 7, 17) fem-convergence-cpp 13.4156 "Solving Poisson's equation in 2D for q = 1, n = 2." (2010, 6, 21, 1, 11, 39) fem-assembly-cpp 261.596 "Assembly for various forms and backends" (2010, 6, 21, 1, 12, 20) mesh-unitcube-cpp 40.932 "Creating unit cube of size 128 x 128 x 128 (10 repetitions)" (2010, 6, 21, 1, 14, 5) mesh-refinement-cpp 104.98 "Uniform refinement of unit cube of size 4 x 4 x 4 (5 refinements)" (2010, 6, 21, 1, 14, 44) mesh-iteration-cpp 35.36 "Iteration over entities of unit cube of size 128 x 128 x 128 (100 repetitions)" (2010, 6, 21, 1, 15, 6) function-evaluation-cpp 21.8412 "Evaluations of functions at arbitrary points." (2010, 6, 21, 1, 15, 6) function-evaluation-cpp 21.77 "Evaluations of functions at arbitrary points." dolfin-1.3.0/bench/function/0000755000175000017500000000000012263014601015545 5ustar johannrjohannrdolfin-1.3.0/bench/function/extrapolation/0000755000175000017500000000000012263014601020436 5ustar johannrjohannrdolfin-1.3.0/bench/function/extrapolation/python/0000755000175000017500000000000012263014601021757 5ustar johannrjohannrdolfin-1.3.0/bench/function/extrapolation/python/bench_function_extrapolation_python0000755000175000017500000000234412263014601031246 0ustar johannrjohannr#!/usr/bin/env python """This script provides a benchmark for Extrapolation""" # Copyright (C) 2010 Marie E. Rognes # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2010-06-07 # Last changed: 2013-06-17 from dolfin import * from time import time SIZE = 4 mesh = UnitCubeMesh(SIZE, SIZE, SIZE) V = VectorFunctionSpace(mesh, "CG", 2) * FunctionSpace(mesh, "DG", 1) W = VectorFunctionSpace(mesh, "CG", 3) * FunctionSpace(mesh, "DG", 2) u = Expression(("sin(x[0])", "1.0", "x[0]*x[1]", "0.0"), degree=3) u = interpolate(u, V) w = Function(W) tic = time() w.extrapolate(u) t = time() - tic print "BENCH: ", t dolfin-1.3.0/bench/function/evaluation/0000755000175000017500000000000012263014601017714 5ustar johannrjohannrdolfin-1.3.0/bench/function/evaluation/cpp/0000755000175000017500000000000012263015065020503 5ustar johannrjohannrdolfin-1.3.0/bench/function/evaluation/cpp/P1.h0000644000175000017500000013626312263015045021145 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: False #ifndef __P1_H #define __P1_H #include #include #include #include /// This class defines the interface for a finite element. class p1_finite_element_0: public ufc::finite_element { public: /// Constructor p1_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~p1_finite_element_0() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 4; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 0; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 4; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[3][1]; for (unsigned int row = 0; row < 3; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 2) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[3][3] = {{K[0], K[1], K[2]}, {K[3], K[4], K[5]}, {K[6], K[7], K[8]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[3][3]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 4; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[3]; for (unsigned int r = 0; r < 3; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 4; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[3] = vals[0]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; vertex_values[3] = dof_values[3]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new p1_finite_element_0(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class p1_dofmap_0: public ufc::dofmap { public: /// Constructor p1_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~p1_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return false; break; } case 3: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 4; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 3; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 0; break; } case 2: { return 0; break; } case 3: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { dofs[0] = c.entity_indices[0][0]; dofs[1] = c.entity_indices[0][1]; dofs[2] = c.entity_indices[0][2]; dofs[3] = c.entity_indices[0][3]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; break; } case 3: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 2; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } case 3: { dofs[0] = 3; break; } } break; } case 1: { break; } case 2: { break; } case 3: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[0][2] = vertex_coordinates[2]; dof_coordinates[1][0] = vertex_coordinates[3]; dof_coordinates[1][1] = vertex_coordinates[4]; dof_coordinates[1][2] = vertex_coordinates[5]; dof_coordinates[2][0] = vertex_coordinates[6]; dof_coordinates[2][1] = vertex_coordinates[7]; dof_coordinates[2][2] = vertex_coordinates[8]; dof_coordinates[3][0] = vertex_coordinates[9]; dof_coordinates[3][1] = vertex_coordinates[10]; dof_coordinates[3][2] = vertex_coordinates[11]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new p1_dofmap_0(); } }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace P1 { class FunctionSpace: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) FunctionSpace(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new p1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new p1_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) FunctionSpace(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new p1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new p1_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) FunctionSpace(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new p1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new p1_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) FunctionSpace(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new p1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new p1_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) FunctionSpace(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new p1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new p1_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) FunctionSpace(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new p1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new p1_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~FunctionSpace() { } }; } #endif dolfin-1.3.0/bench/function/evaluation/cpp/CMakeLists.txt0000644000175000017500000000203112263015065023237 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_function_evaluation_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(${PROJECT_NAME} main.cpp) # Target libraries target_link_libraries(${PROJECT_NAME} ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/function/evaluation/cpp/P1.ufl0000644000175000017500000000167212263014601021474 0ustar johannrjohannr# Copyright (C) 2009 Garth N. Wells # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2009-06-18 # Last changed: # # The bilinear form a(v, u) and linear form L(v) for # projection onto piecewise quadratics. # # Compile this form with FFC: ffc -l dolfin P1.ufl element = FiniteElement("Lagrange", tetrahedron, 1) dolfin-1.3.0/bench/function/evaluation/cpp/compile.log0000644000175000017500000000772312263015045022645 0ustar johannrjohannrThis is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling element P1 Compiler stage 1: Analyzing form(s) ----------------------------------- Compiler stage 1 finished in 0.000167131 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing representation of forms Compiler stage 2 finished in 0.0101461 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- Compiler stage 3 finished in 0.000134945 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 0.0599241 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000224113 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./P1.h. Compiler stage 5 finished in 0.000549078 seconds. FFC finished in 0.071445 seconds. dolfin-1.3.0/bench/function/evaluation/cpp/main.cpp0000644000175000017500000000430412263014601022127 0ustar johannrjohannr// Copyright (C) 2010 Andre Massing // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2010-06-10 // Last changed: 2012-12-12 // // Description: Benchmark for the evaluations of functions at arbitrary points. #include #include "P1.h" using namespace dolfin; class F : public Expression { public: void eval(Array& values, const Array& x) const { values[0] = sin(3.0*x[0])*sin(3.0*x[1])*sin(3.0*x[2]); } }; #ifdef HAS_CGAL int main(int argc, char* argv[]) { not_working_in_parallel("Function evalutation benchmark"); info("Evaluations of functions at arbitrary points."); const std::size_t mesh_max_size = 32; const std::size_t num_points = 10000000; // Start timing tic(); for (std::size_t N = 10; N < mesh_max_size; N += 2) { UnitCubeMesh mesh(N, N, N); P1::FunctionSpace V0(mesh); Function f0(V0); F f; f0.interpolate(f); Array X(3); Array value(1); // Initialize random generator generator (produces same sequence each test). srand(1); for (std::size_t i = 1; i <= num_points; ++i) { X[0] = std::rand()/static_cast(RAND_MAX); X[1] = std::rand()/static_cast(RAND_MAX); X[2] = std::rand()/static_cast(RAND_MAX); f.eval(value, X); } // Use X variable. info("x = %.12e\ty = %.12e\tz = %.12e\tf(x) = %.12e", X[0], X[1], X[2], value[0]); } info("BENCH %g",toc()); return 0; } #else int main() { info("DOLFIN must be compiled with CGAL to run function eval benchmark."); return 0; } #endif dolfin-1.3.0/bench/function/interpolation/0000755000175000017500000000000012263014601020434 5ustar johannrjohannrdolfin-1.3.0/bench/function/interpolation/python/0000755000175000017500000000000012263014601021755 5ustar johannrjohannrdolfin-1.3.0/bench/function/interpolation/python/bench_function_interpolation_python0000755000175000017500000000264312263014601031244 0ustar johannrjohannr#!/usr/bin/env python """This script provides a benchmark for interpolation between meshes""" # Copyright (C) 2013 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2013-06-17 # Last changed: 2013-06-21 from dolfin import * from time import time # FIXME: Temporary testing import sys if len(sys.argv) == 2 and sys.argv[1] == "DOLFIN": parameters["use_cgal_intersection"] = False SIZE_0 = 21 #71 SIZE_1 = 23 #73 parameters["allow_extrapolation"] = True mesh_0 = UnitCubeMesh(SIZE_0, SIZE_0, SIZE_0) mesh_1 = UnitCubeMesh(SIZE_1, SIZE_1, SIZE_1) V0 = FunctionSpace(mesh_0, "CG", 1) V1 = FunctionSpace(mesh_1, "CG", 1) v0 = interpolate(Expression("sin(5*x[0])*cos(7*x[1])"), V0) tic = time() v1 = interpolate(v0, V1) t = time() - tic plot(v1, interactive=True) print "BENCH: ", t dolfin-1.3.0/bench/README0000644000175000017500000000162412263014601014603 0ustar johannrjohannrThis directory (and its sub directories) contain a benchmark suite for DOLFIN. To run all benchmarks, simply run the script demo.py. This script runs all executables/scripts named 'bench' found in the directory tree and records the result for benchmark found in foo/bar under the name 'foo-bar' in logs/bench.log. Two pieces of information are extracted from each benchmark: 1. A short description of the benchmark. This is extracted as the first line of output from the benchmark. 2. One or more timings. These are extracted from output in the form BENCH BENCH If no output is given (or is not given), then the total running time of the program is recorded. Important notice: To run the benchmarks correctly, you need to compile DOLFIN with option --enable-optimization. Compiling DOLFIN with --enable-debug will slow down some of the benchmarks considerably. dolfin-1.3.0/bench/CMakeLists.txt0000644000175000017500000000172512263014601016465 0ustar johannrjohannr# Require CMake 2.8 cmake_minimum_required(VERSION 2.8) # FIXME: Temporary fix for whitespace error cmake_policy(SET CMP0004 OLD) # Find DOLFIN config file (not used here, but check that benchmarks will be # able to find it find_package(DOLFIN REQUIRED) # If config file is found, add all demo sub-directories, else print helper # message if (DOLFIN_FOUND) # Build list of all cpp directories file( GLOB_RECURSE list "main.cpp") list( SORT list ) string(REGEX REPLACE "/main.cpp" "" list "${list}") # Add each C++ code directory foreach (cpp_dir ${list}) #message(STATUS "Add C++ benchmark: ${cpp_dir}") add_subdirectory(${cpp_dir}) endforeach() # Add fem/speedup/cpp manually (no main.cpp so not picked up automatically) add_subdirectory(fem/speedup/cpp) else() message(STATUS "Could not locate DOLFINConfig.cmake file. Did you do 'make install' for the DOLFIN library and set the appropriate paths (source /dolfin.conf)?") endif() dolfin-1.3.0/bench/plot.py0000644000175000017500000002002212263014601015244 0ustar johannrjohannr#!/usr/bin/env python """ This script parses logs/bench.log and create plots for each case with the timings function of time (date plot). It also creates a web page index.html for easy viewing of the generated plots. """ # Copyright (C) 2010 Johannes Ring # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2010-04-06 # Last changed: 2010-04-13 import os import re import time import datetime import textwrap import numpy import matplotlib.pyplot as plt import matplotlib.dates as mdates # Change some of the default Matplotlib parameters plt.rcParams.update({'figure.figsize': [6, 4], 'font.size' : 10, 'axes.labelsize' : 10, 'axes.grid': True, 'text.fontsize' : 10, 'legend.fontsize' : 8, 'xtick.labelsize' : 8, 'ytick.labelsize' : 8, }) # Write to web page index.html outfile = open("index.html", "w") outfile.write("

DOLFIN Benchmarks

\n") outfile.write("Last updated: %s.\n\n" % time.asctime()) # Open and read in logs/bench.log benchlog = "logs/bench.log" lines = open(benchlog, 'r').readlines() benchmarks = {} pattern = "\((.*)\)\s+(.*)\s+(.*)\s+\"(.*)\"" # Extract data from logfile print "Parsing %s..." % benchlog for line in lines: match = re.search(pattern, line) if match: year, month, day, hour, minute, second = \ [int(i) for i in match.group(1).split(',')] #date = datetime.datetime(year, month, day, hour, minute, second) date = datetime.date(year, month, day) name = match.group(2) elapsed_time = float(match.group(3)) description = match.group(4) if not name in benchmarks: benchmarks[name] = [[date], [elapsed_time], description] else: benchmarks[name][0].append(date) benchmarks[name][1].append(elapsed_time) # Open and read in logs/milestones.log milestones = [] milestoneslog = "logs/milestones.log" if os.path.isfile(milestoneslog): lines = open(milestoneslog, 'r').readlines() for line in lines: date = datetime.datetime.strptime(line.split()[0], "%Y-%m-%d") progname = ' '.join(line.split()[1:]) milestones.append([date, progname]) # Get Matplotlib line markers for use later markers = [] for m in plt.Line2D.markers: try: if len(m) == 1 and m != ' ': markers.append(m) except TypeError: pass year = datetime.timedelta(days=365) month = datetime.timedelta(days=30) week = datetime.timedelta(days=7) today = datetime.date.today() lasts = ['week', 'month', 'year', 'five years'] locators = [mdates.DayLocator(), mdates.DayLocator(interval=2), mdates.MonthLocator(), mdates.YearLocator()] date_fmts = ['%Y-%m-%d', '%d %b', '%b %Y', '%Y'] xmins = [today - week, today - month, today - year, today - 5*year] outfile.write("

All benchmarks

\n") outfile.write("

\n") outfile.write("\n") def get_maxtime(dates, min_date, max_date, run_timings): """Return the maximum time between min_date and max_date""" max_time = 0 for i, date in enumerate(dates): if date < min_date: continue elif date > max_date: break else: if max_time < run_timings[i]: max_time = run_timings[i] return max_time # Create normalized plots with all benchmarks in same plot for # last week, last month, last year, and last five years print "Generating plots for all benchmarks..." for last, locator, date_fmt, xmin in zip(lasts, locators, date_fmts, xmins): fig = plt.figure() ax = fig.gca() num = 0 ymax = 0 for benchmark, values in benchmarks.items(): num += 1 dates = values[0] run_timings = values[1]/numpy.linalg.norm(values[1]) ax.plot(dates, run_timings, marker=markers[num % len(markers)], markersize=3, label=benchmark) ax.hold(True) maxtime = get_maxtime(dates, xmin, today, run_timings) if maxtime > ymax: ymax = maxtime ax.xaxis.set_major_locator(locator) ax.xaxis.set_major_formatter(mdates.DateFormatter(date_fmt)) ax.set_xlim(xmin, today) ax.set_ylim(0, ymax) # Add milestones to plot for milestone in milestones: milestone_num = mdates.date2num(milestone[0]) ax.annotate(milestone[1], xy=(milestone_num, 0.1E-10), xycoords='data', xytext=(0, 30), textcoords='offset points', horizontalalignment='center', verticalalignment='bottom', style='italic', fontsize=6, alpha=0.7, rotation='vertical', arrowprops=dict(arrowstyle="->", alpha=0.3) ) lgd = plt.legend(loc='best') fig.autofmt_xdate() plt.title("All benchmarks (last %s)" % last) filename = "all_last_%s.png" % last.replace(' ', '_') plt.savefig(filename, facecolor='#eeeeee') # Add plots to web page if last in ['week', 'year']: outfile.write(" \n" % filename) else: outfile.write(" \n" % filename) outfile.write("
\n") outfile.write("
\n") # Now create separate plots for every benchmark for benchmark, values in benchmarks.items(): print "Generating plots for %s..." % benchmark outfile.write("

%s

\n" % benchmark) outfile.write("

\n") outfile.write("\n") dates = values[0] run_timings = values[1] description = values[2] # Wrap the lines in the description description = textwrap.fill(description, width=30) # Create plots for last week, last month, last year, and last five years for last, locator, date_fmt, xmin in zip(lasts, locators, date_fmts, xmins): fig = plt.figure() ax = fig.gca() ax.plot(dates, run_timings, marker='o', markersize=3) ax.set_ylabel("time (seconds)") maxtime = get_maxtime(dates, xmin, today, run_timings) ax.set_ylim(0, maxtime + maxtime/2) ax.legend((description,), loc='best') ax.xaxis.set_major_locator(locator) ax.xaxis.set_major_formatter(mdates.DateFormatter(date_fmt)) ax.set_xlim(xmin, today) # Add milestones to plot for milestone in milestones: milestone_num = mdates.date2num(milestone[0]) ax.annotate(milestone[1], xy=(milestone_num, 0.1E-10), xycoords='data', xytext=(0, 30), textcoords='offset points', horizontalalignment='center', verticalalignment='bottom', style='italic', fontsize=6, alpha=0.7, rotation='vertical', arrowprops=dict(arrowstyle="->", alpha=0.3) ) fig.autofmt_xdate() plt.title("%s (last %s)" % (benchmark, last)) filename = "%s_last_%s.png" % (benchmark, last.replace(' ', '_')) plt.savefig(filename, facecolor='#eeeeee') # Add plots to web page if last in ['week', 'year']: outfile.write(" \n" % filename) else: outfile.write(" \n" % filename) outfile.write("
\n") outfile.write("
\n") dolfin-1.3.0/bench/la/0000755000175000017500000000000012263014601014314 5ustar johannrjohannrdolfin-1.3.0/bench/la/cusp/0000755000175000017500000000000012263014601015266 5ustar johannrjohannrdolfin-1.3.0/bench/la/cusp/python/0000755000175000017500000000000012263014601016607 5ustar johannrjohannrdolfin-1.3.0/bench/la/cusp/python/bench_la_cusp_python0000755000175000017500000000476112263014601022733 0ustar johannrjohannr#!/usr/bin/env python # Copyright (C) 2012 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2012-03-09 # Last changed: 2012-04-25 from dolfin import * from time import time SIZE = 32 NUM_REPS = 3 print "Solving the linear system for Poisson's equation using PETSc CUSP" # Check that we have the PETSc Cusp backend if not has_linear_algebra_backend("PETScCusp"): print "Cannot run this benchmark since PETSc Cusp is not available." print "BENCH: 0.0" exit(0) # Function for running test def run_bench(linear_algebra_backend): info("") info("Linear algebra backend: %s" % linear_algebra_backend) # Set linear algebra backend parameters["linear_algebra_backend"] = linear_algebra_backend # Create matrix and vector print "Assembling matrix and vector" mesh = UnitCube(SIZE, SIZE, SIZE) V = FunctionSpace(mesh, "Lagrange", 1) u = TrialFunction(V) v = TestFunction(V) f = Constant(1.0) a = dot(grad(u), grad(v))*dx L = f*v*dx bc = DirichletBC(V, 0.0, DomainBoundary()) A, b = assemble_system(a, L, bc) # Create linear solver solver = KrylovSolver("cg", "jacobi") # Use hack to get around PETSc Cusp bug solver.parameters["use_petsc_cusp_hack"] = True # Solve linear system info("Solving linear system %d times" % NUM_REPS) x = Vector() cpu_time = time() for i in range(NUM_REPS): x.zero() solver.solve(A, x, b) print "residual =", residual(A, x, b) cpu_time = (time() - cpu_time) / float(NUM_REPS) return cpu_time # Run benchmarks cpu_time_petsc_cusp = run_bench("PETScCusp") cpu_time_petsc = run_bench("PETSc") # Compute speedup speedup = cpu_time_petsc / cpu_time_petsc_cusp # Report results print print "PETSc: ", cpu_time_petsc print "PETSc Cusp:", cpu_time_petsc_cusp print "Speedup: ", speedup print print "BENCH: ", speedup dolfin-1.3.0/bench/la/vector/0000755000175000017500000000000012263014601015616 5ustar johannrjohannrdolfin-1.3.0/bench/la/vector/access/0000755000175000017500000000000012263014601017057 5ustar johannrjohannrdolfin-1.3.0/bench/la/vector/access/cpp/0000755000175000017500000000000012263015065017646 5ustar johannrjohannrdolfin-1.3.0/bench/la/vector/access/cpp/CMakeLists.txt0000644000175000017500000000202612263015065022406 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_la_vector_access_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(${PROJECT_NAME} main.cpp) # Target libraries target_link_libraries(${PROJECT_NAME} ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/la/vector/access/cpp/main.cpp0000644000175000017500000000240112263014601021266 0ustar johannrjohannr// Copyright (C) 2010 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Anders Logg, 2010. // // First added: 2010-03-30 // Last changed: 2010-05-03 #include using namespace dolfin; #define SIZE 10000000 #define NUM_REPS 100 int main(int argc, char* argv[]) { info("Accessing vector of size %d (%d repetitions)", SIZE, NUM_REPS); parameters.parse(argc, argv); Vector x(SIZE); x.zero(); double sum = 0.0; for (unsigned int i = 0; i < NUM_REPS; i++) for (unsigned int j = 0; j < SIZE; j++) sum += x[j]; dolfin::cout << "Sum is " << sum << dolfin::endl; return 0; } dolfin-1.3.0/bench/la/vector/assignment/0000755000175000017500000000000012263014601017766 5ustar johannrjohannrdolfin-1.3.0/bench/la/vector/assignment/cpp/0000755000175000017500000000000012263015065020555 5ustar johannrjohannrdolfin-1.3.0/bench/la/vector/assignment/cpp/CMakeLists.txt0000644000175000017500000000203212263015065023312 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_la_vector_assignment_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(${PROJECT_NAME} main.cpp) # Target libraries target_link_libraries(${PROJECT_NAME} ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/la/vector/assignment/cpp/main.cpp0000644000175000017500000000227112263014601022202 0ustar johannrjohannr// Copyright (C) 2006 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Anders Logg, 2010. // // First added: 2006-08-18 // Last changed: 2010-05-03 #include using namespace dolfin; #define NUM_REPS 100 #define SIZE 10000000 int main(int argc, char* argv[]) { info("Assigning to vector of size %d (%d repetitions)", SIZE, NUM_REPS); parameters.parse(argc, argv); Vector x(SIZE); for (unsigned int i = 0; i < NUM_REPS; i++) for (unsigned int j = 0; j < SIZE; j++) x.setitem(j, 1.0); return 0; } dolfin-1.3.0/bench/common/0000755000175000017500000000000012263014601015210 5ustar johannrjohannrdolfin-1.3.0/bench/common/progress/0000755000175000017500000000000012263014601017054 5ustar johannrjohannrdolfin-1.3.0/bench/common/progress/cpp/0000755000175000017500000000000012263015065017643 5ustar johannrjohannrdolfin-1.3.0/bench/common/progress/cpp/CMakeLists.txt0000644000175000017500000000202512263015065022402 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_common_progress_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(${PROJECT_NAME} main.cpp) # Target libraries target_link_libraries(${PROJECT_NAME} ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/common/progress/cpp/main.cpp0000644000175000017500000000232412263014601021267 0ustar johannrjohannr// Copyright (C) 2010 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2010-06-29 // Last changed: 2010-11-16 #include using namespace dolfin; #define NUM_REPS 5 #define SIZE 500000000 int main(int argc, char* argv[]) { info("Creating progress bar with %d steps (%d repetitions)", SIZE, NUM_REPS); for (int i = 0; i < NUM_REPS; i++) { Progress p("Stepping", SIZE); double sum = 0.0; for (int j = 0; j < SIZE; j++) { sum += 0.1; p++; } dolfin::cout << "sum = " << sum << dolfin::endl; } return 0; } dolfin-1.3.0/bench/common/timing/0000755000175000017500000000000012263014601016477 5ustar johannrjohannrdolfin-1.3.0/bench/common/timing/cpp/0000755000175000017500000000000012263015065017266 5ustar johannrjohannrdolfin-1.3.0/bench/common/timing/cpp/CMakeLists.txt0000644000175000017500000000202312263015065022023 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_common_timing_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(${PROJECT_NAME} main.cpp) # Target libraries target_link_libraries(${PROJECT_NAME} ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/common/timing/cpp/main.cpp0000644000175000017500000000275712263014601020724 0ustar johannrjohannr// Copyright (C) 2010 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2010-11-16 // Last changed: 2010-11-16 #include using namespace dolfin; #define NUM_REPS 10000000 int main(int argc, char* argv[]) { info("Timing access and registration of timings (%d repetitions)", NUM_REPS); // Access to timer double sum = 0.0; double t0 = time(); double t1 = t0; Timer timer_function("time() function"); for (int i = 0; i < NUM_REPS; i++) { t0 = time(); t1 = time(); sum += t1 - t0; } timer_function.stop(); dolfin::cout << "sum = " << sum << dolfin::endl << dolfin::endl; // Test timer Timer timer_loop("timer start/stop"); Timer timer_class("Timer class"); for (int i = 0; i < NUM_REPS; i++) { timer_loop.start(); timer_loop.stop(); } timer_class.stop(); summary(); return 0; } dolfin-1.3.0/bench/geometry/0000755000175000017500000000000012263014601015553 5ustar johannrjohannrdolfin-1.3.0/bench/geometry/bounding_box_tree_build/0000755000175000017500000000000012263014601022426 5ustar johannrjohannrdolfin-1.3.0/bench/geometry/bounding_box_tree_build/cpp/0000755000175000017500000000000012263015065023215 5ustar johannrjohannrdolfin-1.3.0/bench/geometry/bounding_box_tree_build/cpp/CMakeLists.txt0000644000175000017500000000204612263015065025757 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_geometry_bounding_box_tree_build_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(${PROJECT_NAME} main.cpp) # Target libraries target_link_libraries(${PROJECT_NAME} ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/geometry/bounding_box_tree_build/cpp/main.cpp0000644000175000017500000000230612263014601024641 0ustar johannrjohannr// Copyright (C) 2013 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // This benchmark measures the performance of building a BoundingBoxTree (and // one call to compute_entities, which is dominated by building). // // First added: 2013-04-18 // Last changed: 2013-06-25 #include #include using namespace dolfin; #define SIZE 128 int main(int argc, char* argv[]) { // Create mesh UnitCubeMesh mesh(SIZE, SIZE, SIZE); // Create and build tree tic(); BoundingBoxTree tree; tree.build(mesh); info("BENCH %g", toc()); return 0; } dolfin-1.3.0/bench/geometry/bounding_box_tree_compute_entity_collisions/0000755000175000017500000000000012263014601026635 5ustar johannrjohannrdolfin-1.3.0/bench/geometry/bounding_box_tree_compute_entity_collisions/cpp/0000755000175000017500000000000012263015065027424 5ustar johannrjohannrdolfin-1.3.0/bench/geometry/bounding_box_tree_compute_entity_collisions/cpp/CMakeLists.txt0000644000175000017500000000207212263015065032165 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_geometry_bounding_box_tree_compute_entity_collisions_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(${PROJECT_NAME} main.cpp) # Target libraries target_link_libraries(${PROJECT_NAME} ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/geometry/bounding_box_tree_compute_entity_collisions/cpp/main.cpp0000644000175000017500000000313112263014601031045 0ustar johannrjohannr// Copyright (C) 2013 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // This benchmark measures the performance of compute_entity_collisions. // // First added: 2013-05-23 // Last changed: 2013-09-04 #include #include using namespace dolfin; #define NUM_REPS 5000000 #define SIZE 64 int main(int argc, char* argv[]) { // Create mesh UnitCubeMesh mesh(SIZE, SIZE, SIZE); // First call BoundingBoxTree tree; tree.build(mesh); Point point(0.0, 0.0, 0.0); tree.compute_entity_collisions(point); // Call repeatedly tic(); for (int i = 0; i < NUM_REPS; i++) { point.coordinates()[0] += 1.0 / static_cast(NUM_REPS); point.coordinates()[1] += 1.0 / static_cast(NUM_REPS); point.coordinates()[2] += 1.0 / static_cast(NUM_REPS); std::vector entities = tree.compute_entity_collisions(point); } const double t = toc(); // Report result info("BENCH %g", t); return 0; } dolfin-1.3.0/bench/geometry/bounding_box_tree_compute_closest_entity/0000755000175000017500000000000012263014601026133 5ustar johannrjohannrdolfin-1.3.0/bench/geometry/bounding_box_tree_compute_closest_entity/cpp/0000755000175000017500000000000012263015065026722 5ustar johannrjohannrdolfin-1.3.0/bench/geometry/bounding_box_tree_compute_closest_entity/cpp/CMakeLists.txt0000644000175000017500000000206712263015065031467 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_geometry_bounding_box_tree_compute_closest_entity_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(${PROJECT_NAME} main.cpp) # Target libraries target_link_libraries(${PROJECT_NAME} ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/geometry/bounding_box_tree_compute_closest_entity/cpp/main.cpp0000644000175000017500000000274712263014601030357 0ustar johannrjohannr// Copyright (C) 2013 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // This benchmark measures the performance of compute_entity_collisions. // // First added: 2013-05-23 // Last changed: 2013-09-04 #include #include using namespace dolfin; #define NUM_REPS 1000000 #define SIZE 64 int main(int argc, char* argv[]) { // Create mesh UnitCubeMesh mesh(SIZE, SIZE, SIZE); // First call BoundingBoxTree tree; tree.build(mesh); Point point(-1.0, -1.0, 0.0); tree.compute_closest_entity(point); cout << "Built tree, searching for closest point" << endl; // Call repeatedly tic(); for (int i = 0; i < NUM_REPS; i++) { tree.compute_closest_entity(point); point.coordinates()[1] += 2.0 / static_cast(NUM_REPS); } const double t = toc(); // Report result info("BENCH %g", t); return 0; } dolfin-1.3.0/bench/fem/0000755000175000017500000000000012263014601014467 5ustar johannrjohannrdolfin-1.3.0/bench/fem/multicore/0000755000175000017500000000000012263014601016472 5ustar johannrjohannrdolfin-1.3.0/bench/fem/multicore/cpp/0000755000175000017500000000000012263015065017261 5ustar johannrjohannrdolfin-1.3.0/bench/fem/multicore/cpp/Poisson.ufl0000644000175000017500000000025412263014601021417 0ustar johannrjohannr# Standard Poisson bilinear form element = FiniteElement("Lagrange", tetrahedron, 1) u = TrialFunction(element) v = TestFunction(element) a = inner(grad(u), grad(v))*dx dolfin-1.3.0/bench/fem/multicore/cpp/NavierStokes.ufl0000644000175000017500000000107512263014601022404 0ustar johannrjohannr# The bilinear form for a stabilized formulation of Navier-Stokes element = VectorElement("Lagrange", tetrahedron, 1) constant_scalar = FiniteElement("Discontinuous Lagrange", tetrahedron, 0) v = TestFunction(element) u = TrialFunction(element) w = Coefficient(element) d1 = Coefficient(constant_scalar) d2 = Coefficient(constant_scalar) k = Coefficient(constant_scalar) nu = Coefficient(constant_scalar) a = inner(u, v)*dx + 0.5*k*nu*inner(grad(u), grad(v))*dx + 0.5*k*inner(grad(u)*w, v)*dx \ + d1*0.5*k*dot(grad(u)*w, grad(v)*w)*dx + d2*0.5*k*div(u)*div(v)*dx dolfin-1.3.0/bench/fem/multicore/cpp/CMakeLists.txt0000644000175000017500000000202312263015065022016 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_fem_multicore_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(${PROJECT_NAME} main.cpp) # Target libraries target_link_libraries(${PROJECT_NAME} ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/fem/multicore/cpp/NavierStokes.h0000644000175000017500000065715112263015046022065 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: False #ifndef __NAVIERSTOKES_H #define __NAVIERSTOKES_H #include #include #include #include /// This class defines the interface for a finite element. class navierstokes_finite_element_0: public ufc::finite_element { public: /// Constructor navierstokes_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~navierstokes_finite_element_0() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "FiniteElement('Discontinuous Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 0, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 1; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 0; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants // Compute subdeterminants // Get coordinates and map to the reference (FIAT) element // Reset values *values = 0.0; // Array of basisvalues double basisvalues[1] = {0.0}; // Declare helper variables // Compute basisvalues basisvalues[0] = 1.0; // Table(s) of coefficients static const double coefficients0[1] = \ {1.0}; // Compute value(s) for (unsigned int r = 0; r < 1; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Element is constant, calling evaluate_basis. evaluate_basis(0, values, x, vertex_coordinates, cell_orientation); } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 0) { return ; } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Element is constant, calling evaluate_basis_derivatives. evaluate_basis_derivatives(0, n, values, x, vertex_coordinates, cell_orientation); } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); values[0] = vals[0]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[0]; vertex_values[2] = dof_values[0]; vertex_values[3] = dof_values[0]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new navierstokes_finite_element_0(); } }; /// This class defines the interface for a finite element. class navierstokes_finite_element_1: public ufc::finite_element { public: /// Constructor navierstokes_finite_element_1() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~navierstokes_finite_element_1() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 4; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 0; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 4; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[3][1]; for (unsigned int row = 0; row < 3; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 2) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[3][3] = {{K[0], K[1], K[2]}, {K[3], K[4], K[5]}, {K[6], K[7], K[8]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[3][3]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 4; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[3]; for (unsigned int r = 0; r < 3; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 4; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[3] = vals[0]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; vertex_values[3] = dof_values[3]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new navierstokes_finite_element_1(); } }; /// This class defines the interface for a finite element. class navierstokes_finite_element_2: public ufc::finite_element { public: /// Constructor navierstokes_finite_element_2() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~navierstokes_finite_element_2() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "VectorElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, 3, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 12; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 1; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { switch (i) { case 0: { return 3; break; } } return 0; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Reset values values[0] = 0.0; values[1] = 0.0; values[2] = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values[3] = {0.0, 0.0, 0.0}; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 12; r++) { evaluate_basis(r, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 3; s++) { values[r*3 + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < 3*num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[3][1]; for (unsigned int row = 0; row < 3; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 2) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[3][3] = {{K[0], K[1], K[2]}, {K[3], K[4], K[5]}, {K[6], K[7], K[8]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[3][3]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 12; r++) { for (unsigned int s = 0; s < 3*num_derivatives; s++) { values[r*3*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[9]; for (unsigned int r = 0; r < 9; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 12; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 3*num_derivatives; s++) { values[r*3*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[3]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[1]; break; } case 5: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[1]; break; } case 6: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[1]; break; } case 7: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[1]; break; } case 8: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[2]; break; } case 9: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[2]; break; } case 10: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[2]; break; } case 11: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[2]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[3]; // Declare variable for physical coordinates double y[3]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[4] = vals[1]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[5] = vals[1]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[6] = vals[1]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[7] = vals[1]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[8] = vals[2]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[9] = vals[2]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[10] = vals[2]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[11] = vals[2]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[3] = dof_values[1]; vertex_values[6] = dof_values[2]; vertex_values[9] = dof_values[3]; // Evaluate function and change variables vertex_values[1] = dof_values[4]; vertex_values[4] = dof_values[5]; vertex_values[7] = dof_values[6]; vertex_values[10] = dof_values[7]; // Evaluate function and change variables vertex_values[2] = dof_values[8]; vertex_values[5] = dof_values[9]; vertex_values[8] = dof_values[10]; vertex_values[11] = dof_values[11]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 3; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { switch (i) { case 0: { return new navierstokes_finite_element_1(); break; } case 1: { return new navierstokes_finite_element_1(); break; } case 2: { return new navierstokes_finite_element_1(); break; } } return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new navierstokes_finite_element_2(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class navierstokes_dofmap_0: public ufc::dofmap { public: /// Constructor navierstokes_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~navierstokes_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for FiniteElement('Discontinuous Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 0, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return false; break; } case 1: { return false; break; } case 2: { return false; break; } case 3: { return true; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return num_global_entities[3]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 1; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 0; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 0; break; } case 1: { return 0; break; } case 2: { return 0; break; } case 3: { return 1; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { dofs[0] = c.entity_indices[3][0]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { break; } case 1: { break; } case 2: { break; } case 3: { break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { break; } case 1: { break; } case 2: { break; } case 3: { if (i > 0) { throw std::runtime_error("i is larger than number of entities (0)"); } dofs[0] = 0; break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; dof_coordinates[0][1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; dof_coordinates[0][2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new navierstokes_dofmap_0(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class navierstokes_dofmap_1: public ufc::dofmap { public: /// Constructor navierstokes_dofmap_1() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~navierstokes_dofmap_1() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return false; break; } case 3: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 4; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 3; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 0; break; } case 2: { return 0; break; } case 3: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { dofs[0] = c.entity_indices[0][0]; dofs[1] = c.entity_indices[0][1]; dofs[2] = c.entity_indices[0][2]; dofs[3] = c.entity_indices[0][3]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; break; } case 3: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 2; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } case 3: { dofs[0] = 3; break; } } break; } case 1: { break; } case 2: { break; } case 3: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[0][2] = vertex_coordinates[2]; dof_coordinates[1][0] = vertex_coordinates[3]; dof_coordinates[1][1] = vertex_coordinates[4]; dof_coordinates[1][2] = vertex_coordinates[5]; dof_coordinates[2][0] = vertex_coordinates[6]; dof_coordinates[2][1] = vertex_coordinates[7]; dof_coordinates[2][2] = vertex_coordinates[8]; dof_coordinates[3][0] = vertex_coordinates[9]; dof_coordinates[3][1] = vertex_coordinates[10]; dof_coordinates[3][2] = vertex_coordinates[11]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new navierstokes_dofmap_1(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class navierstokes_dofmap_2: public ufc::dofmap { public: /// Constructor navierstokes_dofmap_2() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~navierstokes_dofmap_2() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for VectorElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, 3, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return false; break; } case 3: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return 3*num_global_entities[0]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 12; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 9; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 3; break; } case 1: { return 0; break; } case 2: { return 0; break; } case 3: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; dofs[3] = offset + c.entity_indices[0][3]; offset += num_global_entities[0]; dofs[4] = offset + c.entity_indices[0][0]; dofs[5] = offset + c.entity_indices[0][1]; dofs[6] = offset + c.entity_indices[0][2]; dofs[7] = offset + c.entity_indices[0][3]; offset += num_global_entities[0]; dofs[8] = offset + c.entity_indices[0][0]; dofs[9] = offset + c.entity_indices[0][1]; dofs[10] = offset + c.entity_indices[0][2]; dofs[11] = offset + c.entity_indices[0][3]; offset += num_global_entities[0]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; dofs[3] = 5; dofs[4] = 6; dofs[5] = 7; dofs[6] = 9; dofs[7] = 10; dofs[8] = 11; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; dofs[3] = 4; dofs[4] = 6; dofs[5] = 7; dofs[6] = 8; dofs[7] = 10; dofs[8] = 11; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; dofs[3] = 4; dofs[4] = 5; dofs[5] = 7; dofs[6] = 8; dofs[7] = 9; dofs[8] = 11; break; } case 3: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 2; dofs[3] = 4; dofs[4] = 5; dofs[5] = 6; dofs[6] = 8; dofs[7] = 9; dofs[8] = 10; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 0; dofs[1] = 4; dofs[2] = 8; break; } case 1: { dofs[0] = 1; dofs[1] = 5; dofs[2] = 9; break; } case 2: { dofs[0] = 2; dofs[1] = 6; dofs[2] = 10; break; } case 3: { dofs[0] = 3; dofs[1] = 7; dofs[2] = 11; break; } } break; } case 1: { break; } case 2: { break; } case 3: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[0][2] = vertex_coordinates[2]; dof_coordinates[1][0] = vertex_coordinates[3]; dof_coordinates[1][1] = vertex_coordinates[4]; dof_coordinates[1][2] = vertex_coordinates[5]; dof_coordinates[2][0] = vertex_coordinates[6]; dof_coordinates[2][1] = vertex_coordinates[7]; dof_coordinates[2][2] = vertex_coordinates[8]; dof_coordinates[3][0] = vertex_coordinates[9]; dof_coordinates[3][1] = vertex_coordinates[10]; dof_coordinates[3][2] = vertex_coordinates[11]; dof_coordinates[4][0] = vertex_coordinates[0]; dof_coordinates[4][1] = vertex_coordinates[1]; dof_coordinates[4][2] = vertex_coordinates[2]; dof_coordinates[5][0] = vertex_coordinates[3]; dof_coordinates[5][1] = vertex_coordinates[4]; dof_coordinates[5][2] = vertex_coordinates[5]; dof_coordinates[6][0] = vertex_coordinates[6]; dof_coordinates[6][1] = vertex_coordinates[7]; dof_coordinates[6][2] = vertex_coordinates[8]; dof_coordinates[7][0] = vertex_coordinates[9]; dof_coordinates[7][1] = vertex_coordinates[10]; dof_coordinates[7][2] = vertex_coordinates[11]; dof_coordinates[8][0] = vertex_coordinates[0]; dof_coordinates[8][1] = vertex_coordinates[1]; dof_coordinates[8][2] = vertex_coordinates[2]; dof_coordinates[9][0] = vertex_coordinates[3]; dof_coordinates[9][1] = vertex_coordinates[4]; dof_coordinates[9][2] = vertex_coordinates[5]; dof_coordinates[10][0] = vertex_coordinates[6]; dof_coordinates[10][1] = vertex_coordinates[7]; dof_coordinates[10][2] = vertex_coordinates[8]; dof_coordinates[11][0] = vertex_coordinates[9]; dof_coordinates[11][1] = vertex_coordinates[10]; dof_coordinates[11][2] = vertex_coordinates[11]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 3; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { switch (i) { case 0: { return new navierstokes_dofmap_1(); break; } case 1: { return new navierstokes_dofmap_1(); break; } case 2: { return new navierstokes_dofmap_1(); break; } } return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new navierstokes_dofmap_2(); } }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class navierstokes_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor navierstokes_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor virtual ~navierstokes_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Cell volume // Compute circumradius // Array of quadrature weights. static const double W4[4] = {0.0416666666666667, 0.0416666666666667, 0.0416666666666667, 0.0416666666666667}; // Quadrature points on the UFC reference element: (0.585410196624969, 0.138196601125011, 0.138196601125011), (0.138196601125011, 0.585410196624969, 0.138196601125011), (0.138196601125011, 0.138196601125011, 0.585410196624969), (0.138196601125011, 0.138196601125011, 0.138196601125011) // Value of basis functions at quadrature points. static const double FE1_C0[4][4] = \ {{0.138196601125009, 0.585410196624969, 0.138196601125011, 0.138196601125011}, {0.138196601125009, 0.138196601125011, 0.585410196624969, 0.138196601125011}, {0.138196601125009, 0.138196601125011, 0.138196601125011, 0.585410196624969}, {0.585410196624967, 0.138196601125011, 0.138196601125011, 0.138196601125011}}; // Array of non-zero columns static const unsigned int nzc0[4] = {0, 1, 2, 3}; // Array of non-zero columns static const unsigned int nzc4[4] = {4, 5, 6, 7}; // Array of non-zero columns static const unsigned int nzc8[4] = {8, 9, 10, 11}; static const double FE1_C0_D001[4][2] = \ {{-1.0, 1.0}, {-1.0, 1.0}, {-1.0, 1.0}, {-1.0, 1.0}}; // Array of non-zero columns static const unsigned int nzc1[2] = {0, 3}; // Array of non-zero columns static const unsigned int nzc3[2] = {0, 1}; // Array of non-zero columns static const unsigned int nzc9[2] = {8, 11}; // Array of non-zero columns static const unsigned int nzc2[2] = {0, 2}; // Array of non-zero columns static const unsigned int nzc6[2] = {4, 6}; // Array of non-zero columns static const unsigned int nzc7[2] = {4, 5}; // Array of non-zero columns static const unsigned int nzc11[2] = {8, 9}; // Array of non-zero columns static const unsigned int nzc10[2] = {8, 10}; // Array of non-zero columns static const unsigned int nzc5[2] = {4, 7}; // Reset values in the element tensor. for (unsigned int r = 0; r < 144; r++) { A[r] = 0.0; }// end loop over 'r' // Number of operations to compute geometry constants: 567. double G[90]; G[0] = 0.5*det*w[3][0]*(K[5]*K[5]*w[2][0] + w[4][0]*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5])); G[1] = 0.5*K[3]*K[3]*det*w[1][0]*w[3][0]; G[2] = K[3]*K[4]*det*w[1][0]*w[3][0]; G[3] = K[3]*K[5]*det*w[1][0]*w[3][0]; G[4] = 0.5*K[4]*K[4]*det*w[1][0]*w[3][0]; G[5] = K[4]*K[5]*det*w[1][0]*w[3][0]; G[6] = 0.5*K[5]*K[5]*det*w[1][0]*w[3][0]; G[7] = 0.5*det*w[3][0]*(K[2]*K[5]*w[2][0] + w[4][0]*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5])); G[8] = 0.5*K[0]*K[3]*det*w[1][0]*w[3][0]; G[9] = 0.5*det*w[1][0]*w[3][0]*(K[0]*K[4] + K[1]*K[3]); G[10] = 0.5*det*w[1][0]*w[3][0]*(K[0]*K[5] + K[2]*K[3]); G[11] = 0.5*K[1]*K[4]*det*w[1][0]*w[3][0]; G[12] = 0.5*det*w[1][0]*w[3][0]*(K[1]*K[5] + K[2]*K[4]); G[13] = 0.5*K[2]*K[5]*det*w[1][0]*w[3][0]; G[14] = 0.5*K[5]*K[6]*det*w[2][0]*w[3][0]; G[15] = 0.5*K[3]*K[5]*det*w[2][0]*w[3][0]; G[16] = 0.5*K[0]*K[5]*det*w[2][0]*w[3][0]; G[17] = 0.5*K[5]*K[7]*det*w[2][0]*w[3][0]; G[18] = 0.5*K[4]*K[5]*det*w[2][0]*w[3][0]; G[19] = 0.5*K[1]*K[5]*det*w[2][0]*w[3][0]; G[20] = 0.5*det*w[3][0]*(K[5]*K[8]*w[2][0] + w[4][0]*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8])); G[21] = 0.5*K[3]*K[6]*det*w[1][0]*w[3][0]; G[22] = 0.5*det*w[1][0]*w[3][0]*(K[3]*K[7] + K[4]*K[6]); G[23] = 0.5*det*w[1][0]*w[3][0]*(K[3]*K[8] + K[5]*K[6]); G[24] = 0.5*K[4]*K[7]*det*w[1][0]*w[3][0]; G[25] = 0.5*det*w[1][0]*w[3][0]*(K[4]*K[8] + K[5]*K[7]); G[26] = 0.5*K[5]*K[8]*det*w[1][0]*w[3][0]; G[27] = 0.5*det*w[3][0]*(K[2]*K[2]*w[2][0] + w[4][0]*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2])); G[28] = 0.5*K[0]*K[0]*det*w[1][0]*w[3][0]; G[29] = K[0]*K[1]*det*w[1][0]*w[3][0]; G[30] = K[0]*K[2]*det*w[1][0]*w[3][0]; G[31] = 0.5*K[1]*K[1]*det*w[1][0]*w[3][0]; G[32] = K[1]*K[2]*det*w[1][0]*w[3][0]; G[33] = 0.5*K[2]*K[2]*det*w[1][0]*w[3][0]; G[34] = 0.5*K[2]*K[6]*det*w[2][0]*w[3][0]; G[35] = 0.5*K[2]*K[3]*det*w[2][0]*w[3][0]; G[36] = 0.5*K[0]*K[2]*det*w[2][0]*w[3][0]; G[37] = 0.5*K[2]*K[7]*det*w[2][0]*w[3][0]; G[38] = 0.5*K[2]*K[4]*det*w[2][0]*w[3][0]; G[39] = 0.5*K[1]*K[2]*det*w[2][0]*w[3][0]; G[40] = 0.5*det*w[3][0]*(K[2]*K[8]*w[2][0] + w[4][0]*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8])); G[41] = 0.5*K[0]*K[6]*det*w[1][0]*w[3][0]; G[42] = 0.5*det*w[1][0]*w[3][0]*(K[0]*K[7] + K[1]*K[6]); G[43] = 0.5*det*w[1][0]*w[3][0]*(K[0]*K[8] + K[2]*K[6]); G[44] = 0.5*K[1]*K[7]*det*w[1][0]*w[3][0]; G[45] = 0.5*det*w[1][0]*w[3][0]*(K[1]*K[8] + K[2]*K[7]); G[46] = 0.5*K[2]*K[8]*det*w[1][0]*w[3][0]; G[47] = 0.5*det*w[3][0]*(K[6]*K[6]*w[2][0] + w[4][0]*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8])); G[48] = 0.5*K[6]*K[6]*det*w[1][0]*w[3][0]; G[49] = K[6]*K[7]*det*w[1][0]*w[3][0]; G[50] = K[6]*K[8]*det*w[1][0]*w[3][0]; G[51] = 0.5*K[7]*K[7]*det*w[1][0]*w[3][0]; G[52] = K[7]*K[8]*det*w[1][0]*w[3][0]; G[53] = 0.5*K[8]*K[8]*det*w[1][0]*w[3][0]; G[54] = 0.5*det*w[3][0]*(K[3]*K[6]*w[2][0] + w[4][0]*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8])); G[55] = 0.5*det*w[3][0]*(K[0]*K[6]*w[2][0] + w[4][0]*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8])); G[56] = 0.5*K[6]*K[7]*det*w[2][0]*w[3][0]; G[57] = 0.5*K[4]*K[6]*det*w[2][0]*w[3][0]; G[58] = 0.5*K[1]*K[6]*det*w[2][0]*w[3][0]; G[59] = 0.5*K[6]*K[8]*det*w[2][0]*w[3][0]; G[60] = 0.5*det*w[3][0]*(K[3]*K[3]*w[2][0] + w[4][0]*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5])); G[61] = 0.5*det*w[3][0]*(K[0]*K[3]*w[2][0] + w[4][0]*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5])); G[62] = 0.5*K[3]*K[7]*det*w[2][0]*w[3][0]; G[63] = 0.5*K[3]*K[4]*det*w[2][0]*w[3][0]; G[64] = 0.5*K[1]*K[3]*det*w[2][0]*w[3][0]; G[65] = 0.5*K[3]*K[8]*det*w[2][0]*w[3][0]; G[66] = 0.5*det*w[3][0]*(K[0]*K[0]*w[2][0] + w[4][0]*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2])); G[67] = 0.5*K[0]*K[7]*det*w[2][0]*w[3][0]; G[68] = 0.5*K[0]*K[4]*det*w[2][0]*w[3][0]; G[69] = 0.5*K[0]*K[1]*det*w[2][0]*w[3][0]; G[70] = 0.5*K[0]*K[8]*det*w[2][0]*w[3][0]; G[71] = 0.5*det*w[3][0]*(K[7]*K[7]*w[2][0] + w[4][0]*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8])); G[72] = 0.5*det*w[3][0]*(K[4]*K[7]*w[2][0] + w[4][0]*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8])); G[73] = 0.5*det*w[3][0]*(K[1]*K[7]*w[2][0] + w[4][0]*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8])); G[74] = 0.5*K[7]*K[8]*det*w[2][0]*w[3][0]; G[75] = 0.5*det*w[3][0]*(K[4]*K[4]*w[2][0] + w[4][0]*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5])); G[76] = 0.5*det*w[3][0]*(K[1]*K[4]*w[2][0] + w[4][0]*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5])); G[77] = 0.5*K[4]*K[8]*det*w[2][0]*w[3][0]; G[78] = 0.5*det*w[3][0]*(K[1]*K[1]*w[2][0] + w[4][0]*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2])); G[79] = 0.5*K[1]*K[8]*det*w[2][0]*w[3][0]; G[80] = 0.5*det*w[3][0]*(K[8]*K[8]*w[2][0] + w[4][0]*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8])); G[81] = 0.5*K[6]*det*w[3][0]; G[82] = 0.5*K[7]*det*w[3][0]; G[83] = 0.5*K[8]*det*w[3][0]; G[84] = 0.5*K[3]*det*w[3][0]; G[85] = 0.5*K[4]*det*w[3][0]; G[86] = 0.5*K[5]*det*w[3][0]; G[87] = 0.5*K[0]*det*w[3][0]; G[88] = 0.5*K[1]*det*w[3][0]; G[89] = 0.5*K[2]*det*w[3][0]; // Compute element tensor using UFL quadrature representation // Optimisations: ('eliminate zeros', True), ('ignore ones', True), ('ignore zero tables', True), ('optimisation', 'simplify_expressions'), ('remove zero terms', True) // Loop quadrature points for integral. // Number of operations to compute element tensor for following IP loop = 6760 for (unsigned int ip = 0; ip < 4; ip++) { // Coefficient declarations. double F0 = 0.0; double F1 = 0.0; double F2 = 0.0; // Total number of operations to compute function values = 24 for (unsigned int r = 0; r < 4; r++) { F0 += FE1_C0[ip][r]*w[0][nzc0[r]]; F1 += FE1_C0[ip][r]*w[0][nzc4[r]]; F2 += FE1_C0[ip][r]*w[0][nzc8[r]]; }// end loop over 'r' // Number of operations to compute ip constants: 334 double I[49]; // Number of operations: 16 I[0] = W4[ip]*(G[0] + F0*F0*G[1] + F1*(F0*G[2] + F1*G[4]) + F2*(F0*G[3] + F1*G[5] + F2*G[6])); // Number of operations: 16 I[1] = W4[ip]*(G[7] + F0*F0*G[8] + F1*(F0*G[9] + F1*G[11]) + F2*(F0*G[10] + F1*G[12] + F2*G[13])); // Number of operations: 1 I[2] = G[14]*W4[ip]; // Number of operations: 1 I[3] = G[15]*W4[ip]; // Number of operations: 1 I[4] = G[16]*W4[ip]; // Number of operations: 1 I[5] = G[17]*W4[ip]; // Number of operations: 1 I[6] = G[18]*W4[ip]; // Number of operations: 1 I[7] = G[19]*W4[ip]; // Number of operations: 16 I[8] = W4[ip]*(G[20] + F0*F0*G[21] + F1*(F0*G[22] + F1*G[24]) + F2*(F0*G[23] + F1*G[25] + F2*G[26])); // Number of operations: 16 I[9] = W4[ip]*(G[27] + F0*F0*G[28] + F1*(F0*G[29] + F1*G[31]) + F2*(F0*G[30] + F1*G[32] + F2*G[33])); // Number of operations: 1 I[10] = G[34]*W4[ip]; // Number of operations: 1 I[11] = G[35]*W4[ip]; // Number of operations: 1 I[12] = G[36]*W4[ip]; // Number of operations: 1 I[13] = G[37]*W4[ip]; // Number of operations: 1 I[14] = G[38]*W4[ip]; // Number of operations: 1 I[15] = G[39]*W4[ip]; // Number of operations: 16 I[16] = W4[ip]*(G[40] + F0*F0*G[41] + F1*(F0*G[42] + F1*G[44]) + F2*(F0*G[43] + F1*G[45] + F2*G[46])); // Number of operations: 16 I[17] = W4[ip]*(G[47] + F0*F0*G[48] + F1*(F0*G[49] + F1*G[51]) + F2*(F0*G[50] + F1*G[52] + F2*G[53])); // Number of operations: 16 I[18] = W4[ip]*(G[54] + F0*F0*G[21] + F1*(F0*G[22] + F1*G[24]) + F2*(F0*G[23] + F1*G[25] + F2*G[26])); // Number of operations: 16 I[19] = W4[ip]*(G[55] + F0*F0*G[41] + F1*(F0*G[42] + F1*G[44]) + F2*(F0*G[43] + F1*G[45] + F2*G[46])); // Number of operations: 1 I[20] = G[56]*W4[ip]; // Number of operations: 1 I[21] = G[57]*W4[ip]; // Number of operations: 1 I[22] = G[58]*W4[ip]; // Number of operations: 1 I[23] = G[59]*W4[ip]; // Number of operations: 16 I[24] = W4[ip]*(G[60] + F0*F0*G[1] + F1*(F0*G[2] + F1*G[4]) + F2*(F0*G[3] + F1*G[5] + F2*G[6])); // Number of operations: 16 I[25] = W4[ip]*(G[61] + F0*F0*G[8] + F1*(F0*G[9] + F1*G[11]) + F2*(F0*G[10] + F1*G[12] + F2*G[13])); // Number of operations: 1 I[26] = G[62]*W4[ip]; // Number of operations: 1 I[27] = G[63]*W4[ip]; // Number of operations: 1 I[28] = G[64]*W4[ip]; // Number of operations: 1 I[29] = G[65]*W4[ip]; // Number of operations: 16 I[30] = W4[ip]*(G[66] + F0*F0*G[28] + F1*(F0*G[29] + F1*G[31]) + F2*(F0*G[30] + F1*G[32] + F2*G[33])); // Number of operations: 1 I[31] = G[67]*W4[ip]; // Number of operations: 1 I[32] = G[68]*W4[ip]; // Number of operations: 1 I[33] = G[69]*W4[ip]; // Number of operations: 1 I[34] = G[70]*W4[ip]; // Number of operations: 16 I[35] = W4[ip]*(G[71] + F0*F0*G[48] + F1*(F0*G[49] + F1*G[51]) + F2*(F0*G[50] + F1*G[52] + F2*G[53])); // Number of operations: 16 I[36] = W4[ip]*(G[72] + F0*F0*G[21] + F1*(F0*G[22] + F1*G[24]) + F2*(F0*G[23] + F1*G[25] + F2*G[26])); // Number of operations: 16 I[37] = W4[ip]*(G[73] + F0*F0*G[41] + F1*(F0*G[42] + F1*G[44]) + F2*(F0*G[43] + F1*G[45] + F2*G[46])); // Number of operations: 1 I[38] = G[74]*W4[ip]; // Number of operations: 16 I[39] = W4[ip]*(G[75] + F0*F0*G[1] + F1*(F0*G[2] + F1*G[4]) + F2*(F0*G[3] + F1*G[5] + F2*G[6])); // Number of operations: 16 I[40] = W4[ip]*(G[76] + F0*F0*G[8] + F1*(F0*G[9] + F1*G[11]) + F2*(F0*G[10] + F1*G[12] + F2*G[13])); // Number of operations: 1 I[41] = G[77]*W4[ip]; // Number of operations: 16 I[42] = W4[ip]*(G[78] + F0*F0*G[28] + F1*(F0*G[29] + F1*G[31]) + F2*(F0*G[30] + F1*G[32] + F2*G[33])); // Number of operations: 1 I[43] = G[79]*W4[ip]; // Number of operations: 16 I[44] = W4[ip]*(G[80] + F0*F0*G[48] + F1*(F0*G[49] + F1*G[51]) + F2*(F0*G[50] + F1*G[52] + F2*G[53])); // Number of operations: 6 I[45] = W4[ip]*(F0*G[81] + F1*G[82] + F2*G[83]); // Number of operations: 6 I[46] = W4[ip]*(F0*G[84] + F1*G[85] + F2*G[86]); // Number of operations: 6 I[47] = W4[ip]*(F0*G[87] + F1*G[88] + F2*G[89]); // Number of operations: 1 I[48] = W4[ip]*det; // Number of operations for primary indices: 216 for (unsigned int j = 0; j < 4; j++) { for (unsigned int k = 0; k < 2; k++) { // Number of operations to compute entry: 3 A[nzc0[j]*12 + nzc1[k]] += FE1_C0[ip][j]*FE1_C0_D001[ip][k]*I[45]; // Number of operations to compute entry: 3 A[nzc0[j]*12 + nzc2[k]] += FE1_C0[ip][j]*FE1_C0_D001[ip][k]*I[46]; // Number of operations to compute entry: 3 A[nzc0[j]*12 + nzc3[k]] += FE1_C0[ip][j]*FE1_C0_D001[ip][k]*I[47]; // Number of operations to compute entry: 3 A[nzc4[j]*12 + nzc5[k]] += FE1_C0[ip][j]*FE1_C0_D001[ip][k]*I[45]; // Number of operations to compute entry: 3 A[nzc4[j]*12 + nzc6[k]] += FE1_C0[ip][j]*FE1_C0_D001[ip][k]*I[46]; // Number of operations to compute entry: 3 A[nzc4[j]*12 + nzc7[k]] += FE1_C0[ip][j]*FE1_C0_D001[ip][k]*I[47]; // Number of operations to compute entry: 3 A[nzc8[j]*12 + nzc10[k]] += FE1_C0[ip][j]*FE1_C0_D001[ip][k]*I[46]; // Number of operations to compute entry: 3 A[nzc8[j]*12 + nzc11[k]] += FE1_C0[ip][j]*FE1_C0_D001[ip][k]*I[47]; // Number of operations to compute entry: 3 A[nzc8[j]*12 + nzc9[k]] += FE1_C0[ip][j]*FE1_C0_D001[ip][k]*I[45]; }// end loop over 'k' }// end loop over 'j' // Number of operations for primary indices: 972 for (unsigned int j = 0; j < 2; j++) { for (unsigned int k = 0; k < 2; k++) { // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc10[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[0]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc11[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[1]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc1[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[2]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc2[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[3]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc3[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[4]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc5[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[5]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc6[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[6]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc7[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[7]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc9[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[8]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc10[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[1]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc11[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[9]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc1[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[10]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc2[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[11]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc3[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[12]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc5[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[13]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc6[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[14]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc7[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[15]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc9[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[16]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc10[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[2]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc11[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[10]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc1[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[17]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc2[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[18]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc3[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[19]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc5[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[20]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc6[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[21]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc7[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[22]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc9[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[23]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc10[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[3]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc11[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[11]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc1[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[18]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc2[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[24]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc3[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[25]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc5[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[26]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc6[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[27]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc7[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[28]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc9[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[29]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc10[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[4]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc11[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[12]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc1[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[19]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc2[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[25]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc3[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[30]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc5[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[31]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc6[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[32]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc7[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[33]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc9[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[34]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc10[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[5]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc11[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[13]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc1[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[20]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc2[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[26]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc3[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[31]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc5[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[35]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc6[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[36]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc7[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[37]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc9[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[38]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc10[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[6]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc11[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[14]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc1[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[21]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc2[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[27]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc3[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[32]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc5[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[36]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc6[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[39]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc7[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[40]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc9[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[41]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc10[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[7]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc11[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[15]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc1[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[22]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc2[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[28]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc3[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[33]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc5[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[37]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc6[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[40]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc7[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[42]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc9[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[43]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc10[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[8]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc11[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[16]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc1[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[23]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc2[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[29]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc3[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[34]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc5[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[38]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc6[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[41]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc7[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[43]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc9[k]] += FE1_C0_D001[ip][j]*FE1_C0_D001[ip][k]*I[44]; }// end loop over 'k' }// end loop over 'j' // Number of operations for primary indices: 144 for (unsigned int j = 0; j < 4; j++) { for (unsigned int k = 0; k < 4; k++) { // Number of operations to compute entry: 3 A[nzc0[j]*12 + nzc0[k]] += FE1_C0[ip][j]*FE1_C0[ip][k]*I[48]; // Number of operations to compute entry: 3 A[nzc4[j]*12 + nzc4[k]] += FE1_C0[ip][j]*FE1_C0[ip][k]*I[48]; // Number of operations to compute entry: 3 A[nzc8[j]*12 + nzc8[k]] += FE1_C0[ip][j]*FE1_C0[ip][k]*I[48]; }// end loop over 'k' }// end loop over 'j' }// end loop over 'ip' } }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class navierstokes_form_0: public ufc::form { public: /// Constructor navierstokes_form_0() : ufc::form() { // Do nothing } /// Destructor virtual ~navierstokes_form_0() { // Do nothing } /// Return a string identifying the form virtual const char* signature() const { return "2789002b2213385d6c8d99e802caca1c30b8147b23cefc76f0916136abb500848ab1ef93f03b08383fa01955f7c80e7a03c9c5fbdf89d1262330a8408fc687de"; } /// Return the rank of the global tensor (r) virtual std::size_t rank() const { return 2; } /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const { return 5; } /// Return the number of cell domains virtual std::size_t num_cell_domains() const { return 0; } /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const { return 0; } /// Return the number of point domains virtual std::size_t num_point_domains() const { return 0; } /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals virtual bool has_point_integrals() const { return false; } /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const { switch (i) { case 0: { return new navierstokes_finite_element_2(); break; } case 1: { return new navierstokes_finite_element_2(); break; } case 2: { return new navierstokes_finite_element_2(); break; } case 3: { return new navierstokes_finite_element_0(); break; } case 4: { return new navierstokes_finite_element_0(); break; } case 5: { return new navierstokes_finite_element_0(); break; } case 6: { return new navierstokes_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const { switch (i) { case 0: { return new navierstokes_dofmap_2(); break; } case 1: { return new navierstokes_dofmap_2(); break; } case 2: { return new navierstokes_dofmap_2(); break; } case 3: { return new navierstokes_dofmap_0(); break; } case 4: { return new navierstokes_dofmap_0(); break; } case 5: { return new navierstokes_dofmap_0(); break; } case 6: { return new navierstokes_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const { return new navierstokes_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const { return 0; } }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace NavierStokes { class CoefficientSpace_d1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_d1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_d1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_d1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_d1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_d1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_d1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_d1() { } }; class CoefficientSpace_d2: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_d2(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_d2(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_d2(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_d2(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_d2(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_d2(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_d2() { } }; class CoefficientSpace_k: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_k(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_k(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_k(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_k(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_k(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_k(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_k() { } }; class CoefficientSpace_nu: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_nu(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_nu(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_nu(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_nu(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_nu(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_nu(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_nu() { } }; class CoefficientSpace_w: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_w(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_w(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_w(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_w(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_w(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_w(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_w() { } }; class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new navierstokes_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new navierstokes_dofmap_2()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; typedef CoefficientSpace_w Form_a_FunctionSpace_2; typedef CoefficientSpace_d1 Form_a_FunctionSpace_3; typedef CoefficientSpace_d2 Form_a_FunctionSpace_4; typedef CoefficientSpace_k Form_a_FunctionSpace_5; typedef CoefficientSpace_nu Form_a_FunctionSpace_6; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 5), w(*this, 0), d1(*this, 1), d2(*this, 2), k(*this, 3), nu(*this, 4) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new navierstokes_form_0()); } // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0, const dolfin::GenericFunction& w, const dolfin::GenericFunction& d1, const dolfin::GenericFunction& d2, const dolfin::GenericFunction& k, const dolfin::GenericFunction& nu): dolfin::Form(2, 5), w(*this, 0), d1(*this, 1), d2(*this, 2), k(*this, 3), nu(*this, 4) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); this->w = w; this->d1 = d1; this->d2 = d2; this->k = k; this->nu = nu; _ufc_form = boost::shared_ptr(new navierstokes_form_0()); } // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0, boost::shared_ptr w, boost::shared_ptr d1, boost::shared_ptr d2, boost::shared_ptr k, boost::shared_ptr nu): dolfin::Form(2, 5), w(*this, 0), d1(*this, 1), d2(*this, 2), k(*this, 3), nu(*this, 4) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); this->w = *w; this->d1 = *d1; this->d2 = *d2; this->k = *k; this->nu = *nu; _ufc_form = boost::shared_ptr(new navierstokes_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 5), w(*this, 0), d1(*this, 1), d2(*this, 2), k(*this, 3), nu(*this, 4) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new navierstokes_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0, const dolfin::GenericFunction& w, const dolfin::GenericFunction& d1, const dolfin::GenericFunction& d2, const dolfin::GenericFunction& k, const dolfin::GenericFunction& nu): dolfin::Form(2, 5), w(*this, 0), d1(*this, 1), d2(*this, 2), k(*this, 3), nu(*this, 4) { _function_spaces[0] = V0; _function_spaces[1] = V1; this->w = w; this->d1 = d1; this->d2 = d2; this->k = k; this->nu = nu; _ufc_form = boost::shared_ptr(new navierstokes_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0, boost::shared_ptr w, boost::shared_ptr d1, boost::shared_ptr d2, boost::shared_ptr k, boost::shared_ptr nu): dolfin::Form(2, 5), w(*this, 0), d1(*this, 1), d2(*this, 2), k(*this, 3), nu(*this, 4) { _function_spaces[0] = V0; _function_spaces[1] = V1; this->w = *w; this->d1 = *d1; this->d2 = *d2; this->k = *k; this->nu = *nu; _ufc_form = boost::shared_ptr(new navierstokes_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { if (name == "w") return 0; else if (name == "d1") return 1; else if (name == "d2") return 2; else if (name == "k") return 3; else if (name == "nu") return 4; dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { switch (i) { case 0: return "w"; case 1: return "d1"; case 2: return "d2"; case 3: return "k"; case 4: return "nu"; } dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; typedef Form_a_FunctionSpace_2 CoefficientSpace_w; typedef Form_a_FunctionSpace_3 CoefficientSpace_d1; typedef Form_a_FunctionSpace_4 CoefficientSpace_d2; typedef Form_a_FunctionSpace_5 CoefficientSpace_k; typedef Form_a_FunctionSpace_6 CoefficientSpace_nu; // Coefficients dolfin::CoefficientAssigner w; dolfin::CoefficientAssigner d1; dolfin::CoefficientAssigner d2; dolfin::CoefficientAssigner k; dolfin::CoefficientAssigner nu; }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/multicore/cpp/Poisson.h0000644000175000017500000017005312263015045021070 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: False #ifndef __POISSON_H #define __POISSON_H #include #include #include #include /// This class defines the interface for a finite element. class poisson_finite_element_0: public ufc::finite_element { public: /// Constructor poisson_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~poisson_finite_element_0() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 4; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 0; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 4; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[3][1]; for (unsigned int row = 0; row < 3; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 2) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[3][3] = {{K[0], K[1], K[2]}, {K[3], K[4], K[5]}, {K[6], K[7], K[8]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[3][3]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 4; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[3]; for (unsigned int r = 0; r < 3; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 4; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[3] = vals[0]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; vertex_values[3] = dof_values[3]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new poisson_finite_element_0(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class poisson_dofmap_0: public ufc::dofmap { public: /// Constructor poisson_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~poisson_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return false; break; } case 3: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 4; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 3; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 0; break; } case 2: { return 0; break; } case 3: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { dofs[0] = c.entity_indices[0][0]; dofs[1] = c.entity_indices[0][1]; dofs[2] = c.entity_indices[0][2]; dofs[3] = c.entity_indices[0][3]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; break; } case 3: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 2; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } case 3: { dofs[0] = 3; break; } } break; } case 1: { break; } case 2: { break; } case 3: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[0][2] = vertex_coordinates[2]; dof_coordinates[1][0] = vertex_coordinates[3]; dof_coordinates[1][1] = vertex_coordinates[4]; dof_coordinates[1][2] = vertex_coordinates[5]; dof_coordinates[2][0] = vertex_coordinates[6]; dof_coordinates[2][1] = vertex_coordinates[7]; dof_coordinates[2][2] = vertex_coordinates[8]; dof_coordinates[3][0] = vertex_coordinates[9]; dof_coordinates[3][1] = vertex_coordinates[10]; dof_coordinates[3][2] = vertex_coordinates[11]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new poisson_dofmap_0(); } }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor poisson_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor virtual ~poisson_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 27 // Number of operations (multiply-add pairs) for tensor contraction: 28 // Total number of operations (multiply-add pairs): 58 // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0_0 = det*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2]); const double G0_0_1 = det*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5]); const double G0_0_2 = det*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8]); const double G0_1_0 = det*(K[3]*K[0] + K[4]*K[1] + K[5]*K[2]); const double G0_1_1 = det*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5]); const double G0_1_2 = det*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8]); const double G0_2_0 = det*(K[6]*K[0] + K[7]*K[1] + K[8]*K[2]); const double G0_2_1 = det*(K[6]*K[3] + K[7]*K[4] + K[8]*K[5]); const double G0_2_2 = det*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8]); // Compute element tensor A[0] = 0.166666666666667*G0_0_0 + 0.166666666666667*G0_0_1 + 0.166666666666667*G0_0_2 + 0.166666666666667*G0_1_0 + 0.166666666666667*G0_1_1 + 0.166666666666667*G0_1_2 + 0.166666666666667*G0_2_0 + 0.166666666666667*G0_2_1 + 0.166666666666667*G0_2_2; A[1] = -0.166666666666667*G0_0_0 - 0.166666666666667*G0_1_0 - 0.166666666666667*G0_2_0; A[2] = -0.166666666666667*G0_0_1 - 0.166666666666667*G0_1_1 - 0.166666666666667*G0_2_1; A[3] = -0.166666666666667*G0_0_2 - 0.166666666666667*G0_1_2 - 0.166666666666667*G0_2_2; A[4] = -0.166666666666667*G0_0_0 - 0.166666666666667*G0_0_1 - 0.166666666666667*G0_0_2; A[5] = 0.166666666666667*G0_0_0; A[6] = 0.166666666666667*G0_0_1; A[7] = 0.166666666666667*G0_0_2; A[8] = -0.166666666666667*G0_1_0 - 0.166666666666667*G0_1_1 - 0.166666666666667*G0_1_2; A[9] = 0.166666666666667*G0_1_0; A[10] = 0.166666666666667*G0_1_1; A[11] = 0.166666666666667*G0_1_2; A[12] = -0.166666666666667*G0_2_0 - 0.166666666666667*G0_2_1 - 0.166666666666667*G0_2_2; A[13] = 0.166666666666667*G0_2_0; A[14] = 0.166666666666667*G0_2_1; A[15] = 0.166666666666667*G0_2_2; } }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson_form_0: public ufc::form { public: /// Constructor poisson_form_0() : ufc::form() { // Do nothing } /// Destructor virtual ~poisson_form_0() { // Do nothing } /// Return a string identifying the form virtual const char* signature() const { return "b27132efd82ca50147a2cb9a277cccb3a4edce5c9094b8f34dea1203b38077d6b18223923845209093a803366ef20cca85bb5098023d6e8c607e14c9716d8c15"; } /// Return the rank of the global tensor (r) virtual std::size_t rank() const { return 2; } /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const { return 0; } /// Return the number of cell domains virtual std::size_t num_cell_domains() const { return 0; } /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const { return 0; } /// Return the number of point domains virtual std::size_t num_point_domains() const { return 0; } /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals virtual bool has_point_integrals() const { return false; } /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson_finite_element_0(); break; } case 1: { return new poisson_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson_dofmap_0(); break; } case 1: { return new poisson_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const { return new poisson_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const { return 0; } }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Poisson { class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new poisson_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new poisson_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/multicore/cpp/compile.log0000644000175000017500000016333012263015046021421 0ustar johannrjohannrThis is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Poisson Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, u]' Coefficient names: '[]' Unique elements: 'CG1(?)' Unique sub elements: 'CG1(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 0 quadrature_degree: auto --> 0 quadrature_rule: auto --> default Compiler stage 1 finished in 0.0157249 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 144 entries computed in 0.000758 seconds Shape of reference tensor: (4, 4, 3, 3) Primary multi index: rank = 2 dims = [4, 4] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 1], [1, 2], [1, 3], [2, 0], [2, 1], [2, 2], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]] Secondary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] External multi index: rank = 1 dims = [3] indices = [[0], [1], [2]] Computing representation of forms Compiler stage 2 finished in 0.00615883 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.000184059 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 0.090297 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000441074 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Poisson.h. Compiler stage 5 finished in 0.000610828 seconds. FFC finished in 0.113715 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form NavierStokes Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 2 Number of coefficients: 5 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[w_0, w_1, w_2, w_3, w_4]' Argument names: '[v, u]' Coefficient names: '[w, d1, d2, k, nu]' Unique elements: 'Vector<3 x CG1(?)>, DG0(?)' Unique sub elements: 'Vector<3 x CG1(?)>, DG0(?), CG1(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Estimated cost of tensor representation: 6 representation: auto --> quadrature Selecting quadrature degree based on total polynomial degree of integrand: 2 quadrature_degree: auto --> 2 quadrature_rule: auto --> default Compiler stage 1 finished in 0.0306208 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 3 elements Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Computing representation of 3 dofmaps Reusing element from cache Reusing element from cache Reusing element from cache Computing representation of integrals Computing quadrature representation Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache QG-utils, psi_tables: {4: {FiniteElement('Discontinuous Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 0, None): {None: {None: {(0, 0, 0): array([[ 1., 1., 1., 1.]])}}}, VectorElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, 3, None): {None: {None: {(1, 0, 0): array([[[-1., -1., -1., -1.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], [[ 1., 1., 1., 1.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [-1., -1., -1., -1.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 1., 1., 1., 1.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [-1., -1., -1., -1.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 1., 1., 1., 1.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]]]), (0, 1, 0): array([[[ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 3.88578059e-16, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 3.88578059e-16, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 3.88578059e-16, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]]), (0, 0, 0): array([[[ 0.1381966, 0.1381966, 0.1381966, 0.5854102], [ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ]], [[ 0.5854102, 0.1381966, 0.1381966, 0.1381966], [ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ]], [[ 0.1381966, 0.5854102, 0.1381966, 0.1381966], [ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ]], [[ 0.1381966, 0.1381966, 0.5854102, 0.1381966], [ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ]], [[ 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.1381966, 0.5854102], [ 0. , 0. , 0. , 0. ]], [[ 0. , 0. , 0. , 0. ], [ 0.5854102, 0.1381966, 0.1381966, 0.1381966], [ 0. , 0. , 0. , 0. ]], [[ 0. , 0. , 0. , 0. ], [ 0.1381966, 0.5854102, 0.1381966, 0.1381966], [ 0. , 0. , 0. , 0. ]], [[ 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.5854102, 0.1381966], [ 0. , 0. , 0. , 0. ]], [[ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.1381966, 0.5854102]], [[ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ], [ 0.5854102, 0.1381966, 0.1381966, 0.1381966]], [[ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ], [ 0.1381966, 0.5854102, 0.1381966, 0.1381966]], [[ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.5854102, 0.1381966]]]), (0, 0, 1): array([[[ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 1.11022302e-16, 1.11022302e-16, 4.99600361e-16, 1.11022302e-16], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 5.55111512e-17, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 1.11022302e-16, 1.11022302e-16, 4.99600361e-16, 1.11022302e-16], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 5.55111512e-17, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 1.11022302e-16, 1.11022302e-16, 4.99600361e-16, 1.11022302e-16]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 5.55111512e-17, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00]]])}}}}} QG-utils, psi_tables, flat_tables: {'FE1_C0_D001': array([[ -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 4.99600361e-16, 5.55111512e-17, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE1_C0': array([[ 0.1381966, 0.5854102, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.5854102, 0.1381966, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.1381966, 0.5854102, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0.5854102, 0.1381966, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]]), 'FE1_C1': array([[ 0. , 0. , 0. , 0. , 0.1381966, 0.5854102, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.5854102, 0.1381966, 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.1381966, 0.5854102, 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0.5854102, 0.1381966, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. ]]), 'FE1_C2': array([[ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.1381966, 0.5854102, 0.1381966, 0.1381966], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.5854102, 0.1381966], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.1381966, 0.5854102], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.5854102, 0.1381966, 0.1381966, 0.1381966]]), 'FE1_C0_D100': array([[-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]), 'FE1_C2_D001': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 4.99600361e-16, 5.55111512e-17, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00]]), 'FE1_C0_D010': array([[ -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 3.88578059e-16, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE1_C1_D010': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 3.88578059e-16, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE1_C1_D100': array([[ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.]]), 'FE1_C2_D100': array([[ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.]]), 'FE0': array([[ 1.], [ 1.], [ 1.], [ 1.]]), 'FE1_C2_D010': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 3.88578059e-16, 1.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00]]), 'FE1_C1_D001': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 4.99600361e-16, 5.55111512e-17, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]])} tables: {'FE1_C0_D001': array([[ -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 4.99600361e-16, 5.55111512e-17, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE1_C0': array([[ 0.1381966, 0.5854102, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.5854102, 0.1381966, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.1381966, 0.5854102, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0.5854102, 0.1381966, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]]), 'FE1_C1': array([[ 0. , 0. , 0. , 0. , 0.1381966, 0.5854102, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.5854102, 0.1381966, 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.1381966, 0.5854102, 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0.5854102, 0.1381966, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. ]]), 'FE1_C2': array([[ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.1381966, 0.5854102, 0.1381966, 0.1381966], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.5854102, 0.1381966], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.1381966, 0.5854102], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.5854102, 0.1381966, 0.1381966, 0.1381966]]), 'FE1_C0_D100': array([[-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]), 'FE1_C2_D001': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 4.99600361e-16, 5.55111512e-17, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00]]), 'FE1_C0_D010': array([[ -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 3.88578059e-16, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE1_C1_D010': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 3.88578059e-16, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE1_C1_D100': array([[ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.]]), 'FE1_C2_D100': array([[ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.]]), 'FE0': array([[ 1.], [ 1.], [ 1.], [ 1.]]), 'FE1_C2_D010': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 3.88578059e-16, 1.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00]]), 'FE1_C1_D001': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 4.99600361e-16, 5.55111512e-17, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]])} name_map: {} inv_name_map: {'FE1_C0_D001': 'FE1_C0_D001', 'FE1_C0': 'FE1_C0', 'FE1_C1': 'FE1_C1', 'FE1_C2': 'FE1_C2', 'FE1_C0_D100': 'FE1_C0_D100', 'FE1_C2_D001': 'FE1_C2_D001', 'FE1_C0_D010': 'FE1_C0_D010', 'FE1_C1_D010': 'FE1_C1_D010', 'FE1_C1_D100': 'FE1_C1_D100', 'FE1_C2_D100': 'FE1_C2_D100', 'FE0': 'FE0', 'FE1_C2_D010': 'FE1_C2_D010', 'FE1_C1_D001': 'FE1_C1_D001'} QG-utils, psi_tables, unique_tables: {'FE1_C0_D001': array([[-1., 1.], [-1., 1.], [-1., 1.], [-1., 1.]]), 'FE1_C0': array([[ 0.1381966, 0.5854102, 0.1381966, 0.1381966], [ 0.1381966, 0.1381966, 0.5854102, 0.1381966], [ 0.1381966, 0.1381966, 0.1381966, 0.5854102], [ 0.5854102, 0.1381966, 0.1381966, 0.1381966]]), 'FE0': array([[ 1.], [ 1.], [ 1.], [ 1.]])} QG-utils, psi_tables, name_map: {'FE1_C0_D001': ('FE1_C0_D001', (1, [0, 3]), False, False), 'FE1_C0': ('FE1_C0', (0, [0, 1, 2, 3]), False, False), 'FE1_C1': ('FE1_C0', (4, [4, 5, 6, 7]), False, False), 'FE1_C2': ('FE1_C0', (8, [8, 9, 10, 11]), False, False), 'FE1_C0_D100': ('FE1_C0_D001', (3, [0, 1]), False, False), 'FE1_C2_D001': ('FE1_C0_D001', (9, [8, 11]), False, False), 'FE1_C0_D010': ('FE1_C0_D001', (2, [0, 2]), False, False), 'FE1_C1_D010': ('FE1_C0_D001', (6, [4, 6]), False, False), 'FE1_C1_D100': ('FE1_C0_D001', (7, [4, 5]), False, False), 'FE1_C2_D100': ('FE1_C0_D001', (11, [8, 9]), False, False), 'FE0': ('FE0', (), False, True), 'FE1_C2_D010': ('FE1_C0_D001', (10, [8, 10]), False, False), 'FE1_C1_D001': ('FE1_C0_D001', (5, [4, 7]), False, False)} Transforming cell integral Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Computing representation of forms Compiler stage 2 finished in 0.208811 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- Optimising expressions for cell integral Compiler stage 3 finished in 0.045583 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 3 element(s) Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp0 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: Z Removing unused variable: Y Removing unused variable: X Removing unused variable: d_22 Removing unused variable: d_21 Removing unused variable: d_20 Removing unused variable: d_12 Removing unused variable: d_11 Removing unused variable: d_10 Removing unused variable: d_02 Removing unused variable: d_01 Removing unused variable: d_00 Removing unused variable: C2 Removing unused variable: C1 Removing unused variable: C0 Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 3 dofmap(s) Generating code for integrals Removing unused variable: circumradius Removing unused variable: area Removing unused variable: s Removing unused variable: lc Removing unused variable: lb Removing unused variable: la Removing unused variable: v2v3 Removing unused variable: v1v3 Removing unused variable: v0v3 Removing unused variable: v0v1 Removing unused variable: v0v2 Removing unused variable: v1v2 Removing unused variable: volume Cell, number of operations to compute tensor: 7327 Generating code for forms Compiler stage 4 finished in 0.234803 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000736952 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./NavierStokes.h. Compiler stage 5 finished in 0.000900984 seconds. FFC finished in 0.52178 seconds. dolfin-1.3.0/bench/fem/multicore/cpp/main.cpp0000644000175000017500000001215512263014601020710 0ustar johannrjohannr// Copyright (C) 2010 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2010-11-11 // Last changed: 2012-11-02 // // If run without command-line arguments, this benchmark iterates from // zero to MAX_NUM_THREADS. If a command-line argument --num_threads n // is given, the benchmark is run with the specified number of threads. #include #include #include #include "Poisson.h" #include "NavierStokes.h" #define MAX_NUM_THREADS 4 #define SIZE 32 #define NUM_REPS 10 using namespace dolfin; class PoissonFactory { public: static boost::shared_ptr
a(const Mesh& mesh) { // Create function space boost::shared_ptr _V(new Poisson::FunctionSpace(mesh)); boost::shared_ptr _a(new Poisson::BilinearForm(_V, _V));; return _a; } }; class NavierStokesFactory { public: static boost::shared_ptr a(const Mesh& mesh) { boost::shared_ptr _V(new NavierStokes::FunctionSpace(mesh)); boost::shared_ptr W0(new NavierStokes::Form_a_FunctionSpace_2(mesh)); boost::shared_ptr W1(new NavierStokes::Form_a_FunctionSpace_3(mesh)); boost::shared_ptr W2(new NavierStokes::Form_a_FunctionSpace_4(mesh)); boost::shared_ptr W3(new NavierStokes::Form_a_FunctionSpace_5(mesh)); boost::shared_ptr W4(new NavierStokes::Form_a_FunctionSpace_6(mesh)); boost::shared_ptr w0(new Function(W0)); boost::shared_ptr w1(new Function(W1)); boost::shared_ptr w2(new Function(W2)); boost::shared_ptr w3(new Function(W3)); boost::shared_ptr w4(new Function(W4)); boost::shared_ptr a(new NavierStokes::BilinearForm(_V, _V)); a->set_coefficient(0, w0); a->set_coefficient(1, w1); a->set_coefficient(2, w2); a->set_coefficient(3, w3); a->set_coefficient(4, w4); return a; } }; double bench(std::string form, boost::shared_ptr a) { std::size_t num_threads = parameters["num_threads"]; info_underline("Benchmarking %s, num_threads = %d", form.c_str(), num_threads); // Create matrix Matrix A; // Assemble once to initialize matrix Assembler assembler; assembler.reset_sparsity = false; assemble(A, *a); // Run timing Timer timer("Total time"); for (std::size_t i = 0; i < NUM_REPS; ++i) assemble(A, *a); const double t = timer.stop(); // Write summary summary(true); info(""); return t; } int main(int argc, char* argv[]) { // Parse command-line arguments parameters.parse(argc, argv); // Set backend //parameters["linear_algebra_backend"] = "Epetra"; // Create mesh UnitCubeMesh old_mesh(SIZE, SIZE, SIZE); old_mesh.color("vertex"); Mesh mesh = old_mesh.renumber_by_color(); // Test cases std::vector > > forms; forms.push_back(std::make_pair("Poisson", PoissonFactory::a(mesh))); forms.push_back(std::make_pair("NavierStokes", NavierStokesFactory::a(mesh))); // If parameter num_threads has been set, just run once if (parameters["num_threads"].change_count() > 0) { for (std::size_t i = 0; i < forms.size(); i++) bench(forms[i].first, forms[i].second); } // Otherwise, iterate from 1 to MAX_NUM_THREADS else { Table run_timings("Timings"); Table speedups("Speedups"); // Iterate over number of threads for (int num_threads = 0; num_threads <= MAX_NUM_THREADS; num_threads++) { // Set the number of threads parameters["num_threads"] = num_threads; // Iterate over forms for (std::size_t i = 0; i < forms.size(); i++) { // Run test case const double t = bench(forms[i].first, forms[i].second); // Store results and scale to get speedups std::stringstream s; s << num_threads << " threads"; run_timings(s.str(), forms[i].first) = t; speedups(s.str(), forms[i].first) = run_timings.get_value("0 threads", forms[i].first)/t; if (num_threads == 0) speedups(s.str(), "(rel 1 thread " + forms[i].first + ")") = "-"; else { speedups(s.str(), "(rel 1 thread " + forms[i].first + ")") = run_timings.get_value("1 threads", forms[i].first)/t; } } } // Display results info(""); info(run_timings, true); info(""); info(speedups, true); } return 0; } dolfin-1.3.0/bench/fem/convergence/0000755000175000017500000000000012263014601016765 5ustar johannrjohannrdolfin-1.3.0/bench/fem/convergence/cpp/0000755000175000017500000000000012263015065017554 5ustar johannrjohannrdolfin-1.3.0/bench/fem/convergence/cpp/Poisson3D_5.ufl0000644000175000017500000000170412263014601022326 0ustar johannrjohannr# Copyright (C) 2005-2006 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2005 # Last changed: 2006-03-28 # # Poisson's equation in 3D for q = 5 element = FiniteElement("Lagrange", tetrahedron, 5) v = TestFunction(element) U = TrialFunction(element) f = Coefficient(element) a = v.dx(i)*U.dx(i)*dx L = v*f*dx dolfin-1.3.0/bench/fem/convergence/cpp/Poisson3D_3.ufl0000644000175000017500000000170412263014601022324 0ustar johannrjohannr# Copyright (C) 2005-2006 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2005 # Last changed: 2006-03-28 # # Poisson's equation in 3D for q = 3 element = FiniteElement("Lagrange", tetrahedron, 3) v = TestFunction(element) U = TrialFunction(element) f = Coefficient(element) a = v.dx(i)*U.dx(i)*dx L = v*f*dx dolfin-1.3.0/bench/fem/convergence/cpp/Poisson3D_4.h0000644000175000017500000010754012263015060021773 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #ifndef __POISSON3D_4_H #define __POISSON3D_4_H #include #include #include #include /// This class defines the interface for a finite element. class poisson3d_4_finite_element_0: public ufc::finite_element { public: /// Constructor poisson3d_4_finite_element_0(); /// Destructor virtual ~poisson3d_4_finite_element_0(); /// Return a string identifying the finite element virtual const char* signature() const; /// Return the cell shape virtual ufc::shape cell_shape() const; /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const; /// Return the rank of the value space virtual std::size_t value_rank() const; /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const; /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const; /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const; /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const; /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const; /// Create a new class instance virtual ufc::finite_element* create() const; }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class poisson3d_4_dofmap_0: public ufc::dofmap { public: /// Constructor poisson3d_4_dofmap_0(); /// Destructor virtual ~poisson3d_4_dofmap_0(); /// Return a string identifying the dofmap virtual const char* signature() const; /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const; /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const; /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const; /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const; /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const; /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const; /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const; /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const; /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** coordinates, const double* vertex_coordinates) const; /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const; /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const; /// Create a new class instance virtual ufc::dofmap* create() const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson3d_4_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor poisson3d_4_cell_integral_0_otherwise(); /// Destructor virtual ~poisson3d_4_cell_integral_0_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson3d_4_cell_integral_1_otherwise: public ufc::cell_integral { public: /// Constructor poisson3d_4_cell_integral_1_otherwise(); /// Destructor virtual ~poisson3d_4_cell_integral_1_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson3d_4_form_0: public ufc::form { public: /// Constructor poisson3d_4_form_0(); /// Destructor virtual ~poisson3d_4_form_0(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson3d_4_form_1: public ufc::form { public: /// Constructor poisson3d_4_form_1(); /// Destructor virtual ~poisson3d_4_form_1(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Poisson3D_4 { class CoefficientSpace_f: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_f(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_f() { } }; class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new poisson3d_4_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new poisson3d_4_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; class Form_L_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_L_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_4_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_L_FunctionSpace_0() { } }; typedef CoefficientSpace_f Form_L_FunctionSpace_1; class Form_L: public dolfin::Form { public: // Constructor Form_L(const dolfin::FunctionSpace& V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _ufc_form = boost::shared_ptr(new poisson3d_4_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = f; _ufc_form = boost::shared_ptr(new poisson3d_4_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = *f; _ufc_form = boost::shared_ptr(new poisson3d_4_form_1()); } // Constructor Form_L(boost::shared_ptr V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; _ufc_form = boost::shared_ptr(new poisson3d_4_form_1()); } // Constructor Form_L(boost::shared_ptr V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = f; _ufc_form = boost::shared_ptr(new poisson3d_4_form_1()); } // Constructor Form_L(boost::shared_ptr V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = *f; _ufc_form = boost::shared_ptr(new poisson3d_4_form_1()); } // Destructor ~Form_L() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { if (name == "f") return 0; dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { switch (i) { case 0: return "f"; } dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return "unnamed"; } // Typedefs typedef Form_L_FunctionSpace_0 TestSpace; typedef Form_L_FunctionSpace_1 CoefficientSpace_f; // Coefficients dolfin::CoefficientAssigner f; }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_L LinearForm; typedef Form_L ResidualForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/convergence/cpp/Poisson2D_3.ufl0000644000175000017500000000170112263014601022320 0ustar johannrjohannr# Copyright (C) 2005-2006 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2005 # Last changed: 2006-03-28 # # Poisson's equation in 2D for q = 3 element = FiniteElement("Lagrange", triangle, 3) v = TestFunction(element) U = TrialFunction(element) f = Coefficient(element) a = v.dx(i)*U.dx(i)*dx L = v*f*dx dolfin-1.3.0/bench/fem/convergence/cpp/Poisson3D_4.cpp0000644000175000017500001060675012263015060022336 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #include "Poisson3D_4.h" /// Constructor poisson3d_4_finite_element_0::poisson3d_4_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor poisson3d_4_finite_element_0::~poisson3d_4_finite_element_0() { // Do nothing } /// Return a string identifying the finite element const char* poisson3d_4_finite_element_0::signature() const { return "FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 4, None)"; } /// Return the cell shape ufc::shape poisson3d_4_finite_element_0::cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape std::size_t poisson3d_4_finite_element_0::topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape std::size_t poisson3d_4_finite_element_0::geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space std::size_t poisson3d_4_finite_element_0::space_dimension() const { return 35; } /// Return the rank of the value space std::size_t poisson3d_4_finite_element_0::value_rank() const { return 0; } /// Return the dimension of the value space for axis i std::size_t poisson3d_4_finite_element_0::value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell void poisson3d_4_finite_element_0::evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0137464349807051, -0.0144900147488139, -0.00836581391578934, -0.00591552374999943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.00671936840905294, -0.00567890279999946, -0.00491807409042212, -0.00439885919382574, -0.00380952380952382, -0.00311046316543896, -0.00253968253968255, -0.00219942959691285, -0.00179582674587059, -0.00126984126984129, 0.0136980289516341, 0.0120805260192622, 0.0108051509532101, 0.010209907964538, 0.00913201930108942, 0.00790856070259325, 0.00790856070259325, 0.0070736317340728, 0.00612594477872281, 0.00500181296677924, 0.00456600965054471, 0.00408396318581521, 0.0035368158670364, 0.00288779806280615, 0.00204198159290761}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0137464349807054, 0.0144900147488139, -0.00836581391578937, -0.00591552374999943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00671936840905292, -0.00567890279999946, -0.00491807409042212, 0.00439885919382572, 0.00380952380952381, 0.00311046316543897, -0.00253968253968253, -0.00219942959691286, -0.00179582674587059, -0.00126984126984128, 0.0136980289516341, -0.0120805260192622, -0.0108051509532101, 0.010209907964538, 0.00913201930108942, 0.00790856070259326, -0.00790856070259325, -0.0070736317340728, -0.00612594477872282, -0.00500181296677924, 0.00456600965054471, 0.00408396318581521, 0.0035368158670364, 0.00288779806280615, 0.00204198159290761}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0137464349807053, 0.0, 0.0167316278315787, -0.00591552374999949, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0101587301587302, -0.00659828879073858, 0.00359165349174119, -0.00126984126984126, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0228300482527235, -0.0163358527432608, 0.0106104476011092, -0.00577559612561231, 0.00204198159290761}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0137464349807054, 0.0, 0.0, 0.0177465712499983, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0126984126984127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0306297238936141}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382571, 0.0, 0.0267706045305259, 0.0189296759999982, 0.0, 0.0, 0.0, 0.0581914373962646, -0.0316754064488799, 0.0111989473484216, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0406349206349206, 0.00439885919382572, -0.0143666139669648, 0.00761904761904764, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0367556686723369, -0.0424417904044368, 0.0303218796594646, -0.0122518895574456}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0329914439536929, 0.0, -0.0200779533978945, -0.0141972569999987, 0.0, 0.0, 0.0, -0.00969857289937746, 0.0712696645099799, -0.050395263067897, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04618802153517, 0.0107749604752236, -0.0190476190476191, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0495154221385096, -0.0606437593189292, 0.0306297238936141}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382573, 0.0, 0.026770604530526, 0.0189296759999982, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0671936840905293, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0359165349174119, 0.0253968253968254, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0505364660991076, -0.0408396318581521}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382573, 0.0231840235981023, -0.0133853022652629, 0.0189296759999982, 0.0433733365754904, -0.0335968420452646, -0.0274317066599274, 0.0193971457987549, 0.01583770322444, 0.0111989473484215, 0.0268774736362117, -0.0227156111999979, 0.00327871606028141, 0.0175954367753029, -0.00253968253968256, -0.0124418526617558, -0.0101587301587302, 0.0014662863979419, 0.00718330698348238, 0.00761904761904761, 0.0, 0.0, 0.0243115896447227, 0.0, -0.0205470434274512, -0.031634242810373, 0.0, 0.0159156714016638, 0.0245037791148913, 0.026259518075591, 0.0, -0.00918891716808422, -0.0141472634681456, -0.0151609398297323, -0.0122518895574456}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0329914439536929, -0.0173880176985767, 0.0100389766989472, -0.0141972569999986, -0.00722888942924837, 0.00559947367421079, 0.0617213399848368, -0.00323285763312581, -0.03563483225499, -0.050395263067897, 0.0, 0.0, 0.0344265186329548, 0.0, -0.0266666666666667, 0.00933138949631687, 0.0, 0.01539600717839, -0.00538748023761179, -0.0190476190476191, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0369066166121018, 0.0, 0.0, -0.0285877423007065, -0.052519036151182, 0.0, 0.0, 0.0165051407128365, 0.0303218796594646, 0.0306297238936141}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382572, 0.0231840235981023, -0.013385302265263, 0.0189296759999982, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0671936840905293, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0311046316543896, 0.0, 0.0, -0.017958267458706, 0.0253968253968254, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0437658634593183, 0.0, 0.0, 0.0, -0.0252682330495538, -0.0408396318581521}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382572, 0.0231840235981022, 0.013385302265263, -0.0189296759999982, 0.0433733365754904, -0.0335968420452647, -0.0274317066599275, 0.0193971457987549, 0.01583770322444, 0.0111989473484215, 0.0268774736362117, 0.0, -0.0229510124219699, -0.0117302911835353, 0.00761904761904761, 0.0165891368823411, 0.0101587301587302, -0.00146628639794191, -0.0071833069834824, -0.00761904761904762, 0.0, 0.0241610520385245, -0.00270128773830253, -0.0357346778758831, -0.0114150241263618, 0.00395428035129662, 0.0355885231616696, 0.0159156714016638, 0.00306297238936141, -0.00375135972508442, -0.0228300482527235, -0.0112308987609918, -0.00353681586703639, 0.000721949515701544, 0.00204198159290761}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.032991443953693, -0.0173880176985768, -0.0100389766989473, 0.0141972569999987, -0.00722888942924842, 0.0615942104163185, -0.00685792666498186, -0.0614242950293904, -0.00395942580610996, 0.00559947367421076, 0.0, 0.0340734167999968, -0.00491807409042212, 0.0, -0.0266666666666667, 0.00933138949631686, -0.0152380952380953, 0.0175954367753029, 0.0053874802376118, -0.0076190476190476, 0.0, 0.0, 0.0, 0.0357346778758831, -0.00913201930108942, 0.00131809345043221, -0.0593142052694494, 0.0, 0.00714693557517662, -0.00250090648338962, 0.0456600965054471, 0.0040839631858152, -0.00471575448938187, -0.00144389903140308, 0.0020419815929076}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 12: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382571, 0.0231840235981022, 0.0133853022652629, -0.0189296759999982, 0.0, 0.0, 0.0, 0.0581914373962646, -0.0316754064488799, 0.0111989473484216, 0.0, 0.0, 0.0, 0.0293257279588381, -0.0101587301587302, 0.00207364211029263, 0.0101587301587302, -0.0219942959691286, 0.017958267458706, -0.00761904761904763, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0395428035129662, -0.017684079335182, 0.00612594477872281, -0.0012504532416948, -0.0456600965054471, 0.0142938711503532, 0.0, -0.00360974757850769, 0.00204198159290761}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 13: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382574, -0.0231840235981022, -0.013385302265263, 0.0189296759999982, 0.0433733365754904, 0.0335968420452647, 0.0274317066599275, 0.0193971457987549, 0.01583770322444, 0.0111989473484216, -0.0268774736362117, -0.0227156111999978, 0.00327871606028144, -0.0175954367753029, 0.00253968253968255, 0.0124418526617558, -0.0101587301587302, 0.00146628639794191, 0.00718330698348239, 0.00761904761904764, 0.0, 0.0, -0.0243115896447228, 0.0, -0.0205470434274512, -0.031634242810373, 0.0, -0.0159156714016638, -0.0245037791148913, -0.026259518075591, 0.0, -0.00918891716808422, -0.0141472634681456, -0.0151609398297323, -0.0122518895574457}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 14: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0329914439536932, 0.0173880176985767, 0.0100389766989473, -0.0141972569999987, -0.00722888942924837, -0.00559947367421079, -0.0617213399848368, -0.00323285763312578, -0.0356348322549899, -0.050395263067897, 0.0, 0.0, 0.0344265186329548, 0.0, 0.0266666666666667, -0.00933138949631688, 0.0, 0.01539600717839, -0.00538748023761179, -0.0190476190476191, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0369066166121018, 0.0, 0.0, 0.0285877423007065, 0.052519036151182, 0.0, 0.0, 0.0165051407128365, 0.0303218796594646, 0.0306297238936141}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 15: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382572, -0.0231840235981022, -0.013385302265263, 0.0189296759999982, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0671936840905293, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0311046316543896, 0.0, 0.0, -0.017958267458706, 0.0253968253968254, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0437658634593183, 0.0, 0.0, 0.0, -0.0252682330495538, -0.0408396318581521}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 16: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382571, -0.0231840235981022, 0.013385302265263, -0.0189296759999982, 0.0433733365754904, 0.0335968420452647, 0.0274317066599275, 0.0193971457987549, 0.01583770322444, 0.0111989473484216, -0.0268774736362117, 0.0, -0.0229510124219699, 0.0117302911835353, -0.00761904761904761, -0.0165891368823411, 0.0101587301587302, -0.00146628639794191, -0.0071833069834824, -0.00761904761904761, 0.0, -0.0241610520385245, 0.00270128773830254, -0.0357346778758831, -0.0114150241263618, 0.00395428035129663, -0.0355885231616696, -0.0159156714016638, -0.00306297238936141, 0.00375135972508442, -0.0228300482527235, -0.0112308987609918, -0.00353681586703639, 0.000721949515701538, 0.0020419815929076}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 17: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0329914439536931, 0.0173880176985767, -0.0100389766989472, 0.0141972569999987, -0.00722888942924841, -0.0615942104163185, 0.00685792666498188, -0.0614242950293904, -0.00395942580610999, 0.00559947367421075, 0.0, 0.0340734167999968, -0.00491807409042211, 0.0, 0.0266666666666667, -0.00933138949631689, -0.0152380952380953, 0.0175954367753029, 0.00538748023761179, -0.00761904761904761, 0.0, 0.0, 0.0, 0.0357346778758831, -0.00913201930108942, 0.00131809345043221, 0.0593142052694494, 0.0, -0.00714693557517663, 0.00250090648338962, 0.0456600965054471, 0.0040839631858152, -0.00471575448938187, -0.00144389903140307, 0.00204198159290761}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 18: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382574, -0.0231840235981023, 0.013385302265263, -0.0189296759999982, 0.0, 0.0, 0.0, 0.0581914373962646, -0.0316754064488799, 0.0111989473484216, 0.0, 0.0, 0.0, -0.0293257279588381, 0.0101587301587302, -0.00207364211029264, 0.0101587301587302, -0.0219942959691286, 0.017958267458706, -0.00761904761904763, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0395428035129663, 0.017684079335182, -0.00612594477872281, 0.00125045324169482, -0.0456600965054471, 0.0142938711503532, 0.0, -0.00360974757850769, 0.0020419815929076}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 19: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382574, 0.0, -0.0267706045305259, -0.0189296759999982, 0.0433733365754904, 0.0335968420452647, 0.0274317066599275, 0.0193971457987549, 0.01583770322444, 0.0111989473484215, 0.0134387368181059, -0.0113578055999989, -0.00983614818084424, -0.0205280095711867, -0.0177777777777778, -0.0145154947720485, -0.0152380952380952, -0.0131965775814772, -0.0107749604752236, -0.00761904761904762, -0.0547921158065365, -0.0241610520385245, -0.0216103019064202, -0.00510495398226901, -0.00456600965054472, -0.00395428035129662, 0.00395428035129663, 0.0035368158670364, 0.0030629723893614, 0.00250090648338962, 0.00456600965054471, 0.00408396318581522, 0.0035368158670364, 0.00288779806280615, 0.0020419815929076}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 20: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0329914439536931, 0.0, 0.0200779533978945, 0.0141972569999987, -0.0867466731509807, 0.0, 0.0, 0.00969857289937748, 0.00791885161222, 0.00559947367421077, 0.0, 0.0340734167999968, 0.0295084445425327, 0.0, 0.0, 0.0, -0.0152380952380953, -0.0131965775814771, -0.0107749604752236, -0.00761904761904762, 0.0821881737098047, 0.0, 0.0, -0.010209907964538, -0.00913201930108942, -0.00790856070259324, 0.0, 0.0, 0.0, 0.0, 0.0045660096505447, 0.00408396318581518, 0.00353681586703639, 0.00288779806280616, 0.00204198159290761}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 21: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.043988591938257, 0.0, -0.026770604530526, -0.0189296759999982, 0.0433733365754904, -0.0335968420452647, -0.0274317066599274, 0.0193971457987549, 0.0158377032244399, 0.0111989473484216, -0.0134387368181058, -0.0113578055999989, -0.00983614818084423, 0.0205280095711867, 0.0177777777777778, 0.0145154947720485, -0.0152380952380952, -0.0131965775814772, -0.0107749604752236, -0.00761904761904762, -0.0547921158065365, 0.0241610520385245, 0.0216103019064202, -0.00510495398226901, -0.0045660096505447, -0.00395428035129662, -0.00395428035129662, -0.0035368158670364, -0.0030629723893614, -0.00250090648338962, 0.00456600965054471, 0.00408396318581522, 0.0035368158670364, 0.00288779806280615, 0.0020419815929076}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 22: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382571, 0.139104141588614, -0.080311813591578, -0.0567890279999947, 0.0578311154339872, 0.0335968420452646, 0.0274317066599275, -0.0420271492306356, -0.0475131096733199, -0.0167984210226323, 0.0, 0.0454312223999957, 0.039344592723377, -0.0586514559176763, 0.00253968253968255, -0.0601356211984865, 0.0406349206349207, -0.0109971479845643, 0.017958267458706, 0.0393650793650794, 0.0, 0.0, 0.0, 0.0, 0.0410940868549024, -0.0105447476034577, 0.0, -0.053052238005546, -0.0245037791148913, 0.0175063453837273, 0.0, 0.0367556686723369, 0.0235787724469094, 0.0, -0.0122518895574456}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 23: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382572, 0.0, 0.160623627183156, -0.0567890279999946, 0.0, 0.0783926314389509, -0.0274317066599274, 0.00969857289937744, 0.0475131096733199, -0.0167984210226323, 0.0, 0.0, 0.0, 0.0586514559176763, 0.033015873015873, -0.0145154947720484, -0.0609523809523809, 0.0241937255660415, -0.0610581093596003, 0.0393650793650794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.053052238005546, -0.0326717054865217, 0.00875317269186366, 0.0, -0.0551335030085053, 0.0141472634681456, 0.0151609398297323, -0.0122518895574456}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 24: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382573, 0.0, 0.0, 0.170367083999984, 0.0, -0.0111989473484215, 0.0822951199797824, 0.00969857289937743, 0.0475131096733199, -0.0167984210226324, 0.0, 0.0, 0.0, 0.0, 0.0533333333333333, 0.0435464843161453, 0.0, -0.04618802153517, 0.0251415744421884, -0.0825396825396826, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0571754846014129, -0.026259518075591, 0.0, 0.0, -0.0495154221385096, -0.0151609398297323, 0.0306297238936141}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 25: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.043988591938257, -0.139104141588614, -0.080311813591578, -0.0567890279999947, 0.0578311154339871, -0.0335968420452646, -0.0274317066599275, -0.0420271492306356, -0.0475131096733199, -0.0167984210226323, 0.0, 0.0454312223999957, 0.039344592723377, 0.0586514559176762, -0.00253968253968253, 0.0601356211984865, 0.0406349206349207, -0.0109971479845643, 0.017958267458706, 0.0393650793650794, 0.0, 0.0, 0.0, 0.0, 0.0410940868549024, -0.0105447476034577, 0.0, 0.053052238005546, 0.0245037791148913, -0.0175063453837273, 0.0, 0.0367556686723369, 0.0235787724469094, 0.0, -0.0122518895574456}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 26: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382573, 0.0, 0.160623627183156, -0.0567890279999946, 0.0, -0.0783926314389508, 0.0274317066599274, 0.00969857289937746, 0.0475131096733199, -0.0167984210226323, 0.0, 0.0, 0.0, -0.0586514559176763, -0.033015873015873, 0.0145154947720485, -0.060952380952381, 0.0241937255660415, -0.0610581093596003, 0.0393650793650794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.053052238005546, 0.0326717054865217, -0.00875317269186367, 0.0, -0.0551335030085054, 0.0141472634681456, 0.0151609398297323, -0.0122518895574456}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 27: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382573, 0.0, 0.0, 0.170367083999984, 0.0, 0.0111989473484216, -0.0822951199797823, 0.00969857289937742, 0.0475131096733198, -0.0167984210226323, 0.0, 0.0, 0.0, 0.0, -0.0533333333333333, -0.0435464843161453, 0.0, -0.04618802153517, 0.0251415744421884, -0.0825396825396826, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0571754846014129, 0.026259518075591, 0.0, 0.0, -0.0495154221385096, -0.0151609398297323, 0.0306297238936141}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 28: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382574, -0.139104141588614, -0.0803118135915779, -0.0567890279999946, -0.0433733365754904, 0.0447957893936862, -0.0548634133198549, 0.0484928644968872, 0.0, -0.0167984210226323, 0.0806324209086351, 0.0227156111999979, -0.00327871606028141, -0.00586514559176761, 0.0304761904761905, 0.045620126426438, -0.0101587301587302, 0.0271262983619253, 0.0430998419008943, 0.0393650793650794, 0.0, 0.0, 0.0729347689341683, 0.0, 0.0205470434274512, 0.031634242810373, 0.0, -0.00530522380055459, -0.00816792637163041, -0.00875317269186366, 0.0, -0.0091889171680842, -0.0141472634681456, -0.0151609398297323, -0.0122518895574456}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 29: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382572, 0.139104141588614, -0.0803118135915779, -0.0567890279999947, -0.0433733365754903, -0.0447957893936862, 0.0548634133198549, 0.0484928644968873, 0.0, -0.0167984210226323, -0.0806324209086351, 0.0227156111999979, -0.00327871606028139, 0.00586514559176762, -0.0304761904761905, -0.045620126426438, -0.0101587301587302, 0.0271262983619253, 0.0430998419008943, 0.0393650793650794, 0.0, 0.0, -0.0729347689341683, 0.0, 0.0205470434274512, 0.031634242810373, 0.0, 0.00530522380055459, 0.00816792637163041, 0.00875317269186366, 0.0, -0.00918891716808424, -0.0141472634681456, -0.0151609398297323, -0.0122518895574456}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 30: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382572, 0.0, 0.0, 0.170367083999984, 0.0144577788584968, 0.0, 0.0, -0.00323285763312585, -0.0950262193466398, -0.0167984210226324, 0.0, 0.0, -0.0688530372659097, 0.0, 0.0, 0.0, 0.0, 0.01539600717839, -0.0502831488843767, -0.0825396825396825, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0738132332242037, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0165051407128365, 0.0303218796594646, 0.0306297238936141}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 31: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382571, -0.139104141588614, -0.0803118135915779, -0.0567890279999946, -0.0433733365754904, -0.0447957893936862, 0.054863413319855, -0.00969857289937741, 0.0316754064488799, 0.0391963157194754, 0.0806324209086351, 0.0, 0.0229510124219699, 0.0527863103259086, 0.0101587301587301, -0.0124418526617558, 0.0609523809523809, 0.0168622935763319, -0.00718330698348236, -0.013968253968254, 0.0, 0.0724831561155734, -0.00810386321490761, 0.0357346778758831, 0.0114150241263618, -0.00395428035129662, -0.0118628410538899, -0.0053052238005546, -0.00102099079645379, 0.00125045324169481, -0.0228300482527235, -0.0112308987609918, -0.0035368158670364, 0.000721949515701522, 0.00204198159290762}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 32: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382571, 0.139104141588614, -0.0803118135915779, -0.0567890279999947, -0.0433733365754904, 0.0447957893936862, -0.054863413319855, -0.00969857289937742, 0.03167540644888, 0.0391963157194754, -0.0806324209086351, 0.0, 0.0229510124219699, -0.0527863103259087, -0.0101587301587302, 0.0124418526617558, 0.060952380952381, 0.0168622935763319, -0.00718330698348237, -0.013968253968254, 0.0, -0.0724831561155734, 0.00810386321490762, 0.0357346778758831, 0.0114150241263618, -0.00395428035129662, 0.0118628410538899, 0.0053052238005546, 0.0010209907964538, -0.00125045324169481, -0.0228300482527236, -0.0112308987609918, -0.0035368158670364, 0.00072194951570152, 0.00204198159290761}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 33: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382571, 0.0, 0.160623627183156, -0.0567890279999947, 0.0144577788584968, 0.0, 0.0, -0.0614242950293905, -0.0633508128977598, 0.0391963157194755, 0.0, -0.0681468335999936, 0.00983614818084426, 0.0, 0.0, 0.0, -0.0914285714285714, 0.0285925847598672, 0.0143666139669647, -0.013968253968254, 0.0, 0.0, 0.0, -0.0714693557517662, 0.0182640386021788, -0.00263618690086443, 0.0, 0.0, 0.0, 0.0, 0.0456600965054471, 0.00408396318581519, -0.00471575448938189, -0.00144389903140306, 0.00204198159290759}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 34: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.351908735506058, 0.0, 0.0, 0.0, -0.115662230867974, 0.0, 0.0, -0.129314305325033, 0.0, -0.134387368181059, 0.0, -0.0908624447999914, -0.0786891854467539, 0.0, 0.0, 0.0, 0.0406349206349207, -0.0879771838765144, 0.0, 0.0711111111111111, 0.0, 0.0, 0.0, 0.0, -0.0821881737098047, 0.0210894952069153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0367556686723369, 0.0235787724469094, 0.0, -0.0122518895574456}; // Compute value(s) for (unsigned int r = 0; r < 35; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell void poisson3d_4_finite_element_0::evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 35; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell void poisson3d_4_finite_element_0::evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 4) { return ; } // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[81][4]; for (unsigned int row = 0; row < 81; row++) { for (unsigned int col = 0; col < 4; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 2) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[3][3] = {{K[0], K[1], K[2]}, {K[3], K[4], K[5]}, {K[6], K[7], K[8]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[81][81]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0137464349807051, -0.0144900147488139, -0.00836581391578934, -0.00591552374999943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.00671936840905294, -0.00567890279999946, -0.00491807409042212, -0.00439885919382574, -0.00380952380952382, -0.00311046316543896, -0.00253968253968255, -0.00219942959691285, -0.00179582674587059, -0.00126984126984129, 0.0136980289516341, 0.0120805260192622, 0.0108051509532101, 0.010209907964538, 0.00913201930108942, 0.00790856070259325, 0.00790856070259325, 0.0070736317340728, 0.00612594477872281, 0.00500181296677924, 0.00456600965054471, 0.00408396318581521, 0.0035368158670364, 0.00288779806280615, 0.00204198159290761}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0137464349807054, 0.0144900147488139, -0.00836581391578937, -0.00591552374999943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00671936840905292, -0.00567890279999946, -0.00491807409042212, 0.00439885919382572, 0.00380952380952381, 0.00311046316543897, -0.00253968253968253, -0.00219942959691286, -0.00179582674587059, -0.00126984126984128, 0.0136980289516341, -0.0120805260192622, -0.0108051509532101, 0.010209907964538, 0.00913201930108942, 0.00790856070259326, -0.00790856070259325, -0.0070736317340728, -0.00612594477872282, -0.00500181296677924, 0.00456600965054471, 0.00408396318581521, 0.0035368158670364, 0.00288779806280615, 0.00204198159290761}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0137464349807053, 0.0, 0.0167316278315787, -0.00591552374999949, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0101587301587302, -0.00659828879073858, 0.00359165349174119, -0.00126984126984126, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0228300482527235, -0.0163358527432608, 0.0106104476011092, -0.00577559612561231, 0.00204198159290761}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0137464349807054, 0.0, 0.0, 0.0177465712499983, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0126984126984127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0306297238936141}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382571, 0.0, 0.0267706045305259, 0.0189296759999982, 0.0, 0.0, 0.0, 0.0581914373962646, -0.0316754064488799, 0.0111989473484216, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0406349206349206, 0.00439885919382572, -0.0143666139669648, 0.00761904761904764, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0367556686723369, -0.0424417904044368, 0.0303218796594646, -0.0122518895574456}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0329914439536929, 0.0, -0.0200779533978945, -0.0141972569999987, 0.0, 0.0, 0.0, -0.00969857289937746, 0.0712696645099799, -0.050395263067897, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.04618802153517, 0.0107749604752236, -0.0190476190476191, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0495154221385096, -0.0606437593189292, 0.0306297238936141}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382573, 0.0, 0.026770604530526, 0.0189296759999982, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0671936840905293, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0359165349174119, 0.0253968253968254, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0505364660991076, -0.0408396318581521}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382573, 0.0231840235981023, -0.0133853022652629, 0.0189296759999982, 0.0433733365754904, -0.0335968420452646, -0.0274317066599274, 0.0193971457987549, 0.01583770322444, 0.0111989473484215, 0.0268774736362117, -0.0227156111999979, 0.00327871606028141, 0.0175954367753029, -0.00253968253968256, -0.0124418526617558, -0.0101587301587302, 0.0014662863979419, 0.00718330698348238, 0.00761904761904761, 0.0, 0.0, 0.0243115896447227, 0.0, -0.0205470434274512, -0.031634242810373, 0.0, 0.0159156714016638, 0.0245037791148913, 0.026259518075591, 0.0, -0.00918891716808422, -0.0141472634681456, -0.0151609398297323, -0.0122518895574456}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0329914439536929, -0.0173880176985767, 0.0100389766989472, -0.0141972569999986, -0.00722888942924837, 0.00559947367421079, 0.0617213399848368, -0.00323285763312581, -0.03563483225499, -0.050395263067897, 0.0, 0.0, 0.0344265186329548, 0.0, -0.0266666666666667, 0.00933138949631687, 0.0, 0.01539600717839, -0.00538748023761179, -0.0190476190476191, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0369066166121018, 0.0, 0.0, -0.0285877423007065, -0.052519036151182, 0.0, 0.0, 0.0165051407128365, 0.0303218796594646, 0.0306297238936141}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382572, 0.0231840235981023, -0.013385302265263, 0.0189296759999982, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0671936840905293, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0311046316543896, 0.0, 0.0, -0.017958267458706, 0.0253968253968254, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0437658634593183, 0.0, 0.0, 0.0, -0.0252682330495538, -0.0408396318581521}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382572, 0.0231840235981022, 0.013385302265263, -0.0189296759999982, 0.0433733365754904, -0.0335968420452647, -0.0274317066599275, 0.0193971457987549, 0.01583770322444, 0.0111989473484215, 0.0268774736362117, 0.0, -0.0229510124219699, -0.0117302911835353, 0.00761904761904761, 0.0165891368823411, 0.0101587301587302, -0.00146628639794191, -0.0071833069834824, -0.00761904761904762, 0.0, 0.0241610520385245, -0.00270128773830253, -0.0357346778758831, -0.0114150241263618, 0.00395428035129662, 0.0355885231616696, 0.0159156714016638, 0.00306297238936141, -0.00375135972508442, -0.0228300482527235, -0.0112308987609918, -0.00353681586703639, 0.000721949515701544, 0.00204198159290761}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.032991443953693, -0.0173880176985768, -0.0100389766989473, 0.0141972569999987, -0.00722888942924842, 0.0615942104163185, -0.00685792666498186, -0.0614242950293904, -0.00395942580610996, 0.00559947367421076, 0.0, 0.0340734167999968, -0.00491807409042212, 0.0, -0.0266666666666667, 0.00933138949631686, -0.0152380952380953, 0.0175954367753029, 0.0053874802376118, -0.0076190476190476, 0.0, 0.0, 0.0, 0.0357346778758831, -0.00913201930108942, 0.00131809345043221, -0.0593142052694494, 0.0, 0.00714693557517662, -0.00250090648338962, 0.0456600965054471, 0.0040839631858152, -0.00471575448938187, -0.00144389903140308, 0.0020419815929076}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 12: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382571, 0.0231840235981022, 0.0133853022652629, -0.0189296759999982, 0.0, 0.0, 0.0, 0.0581914373962646, -0.0316754064488799, 0.0111989473484216, 0.0, 0.0, 0.0, 0.0293257279588381, -0.0101587301587302, 0.00207364211029263, 0.0101587301587302, -0.0219942959691286, 0.017958267458706, -0.00761904761904763, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0395428035129662, -0.017684079335182, 0.00612594477872281, -0.0012504532416948, -0.0456600965054471, 0.0142938711503532, 0.0, -0.00360974757850769, 0.00204198159290761}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 13: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382574, -0.0231840235981022, -0.013385302265263, 0.0189296759999982, 0.0433733365754904, 0.0335968420452647, 0.0274317066599275, 0.0193971457987549, 0.01583770322444, 0.0111989473484216, -0.0268774736362117, -0.0227156111999978, 0.00327871606028144, -0.0175954367753029, 0.00253968253968255, 0.0124418526617558, -0.0101587301587302, 0.00146628639794191, 0.00718330698348239, 0.00761904761904764, 0.0, 0.0, -0.0243115896447228, 0.0, -0.0205470434274512, -0.031634242810373, 0.0, -0.0159156714016638, -0.0245037791148913, -0.026259518075591, 0.0, -0.00918891716808422, -0.0141472634681456, -0.0151609398297323, -0.0122518895574457}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 14: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0329914439536932, 0.0173880176985767, 0.0100389766989473, -0.0141972569999987, -0.00722888942924837, -0.00559947367421079, -0.0617213399848368, -0.00323285763312578, -0.0356348322549899, -0.050395263067897, 0.0, 0.0, 0.0344265186329548, 0.0, 0.0266666666666667, -0.00933138949631688, 0.0, 0.01539600717839, -0.00538748023761179, -0.0190476190476191, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0369066166121018, 0.0, 0.0, 0.0285877423007065, 0.052519036151182, 0.0, 0.0, 0.0165051407128365, 0.0303218796594646, 0.0306297238936141}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 15: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382572, -0.0231840235981022, -0.013385302265263, 0.0189296759999982, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0671936840905293, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0311046316543896, 0.0, 0.0, -0.017958267458706, 0.0253968253968254, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0437658634593183, 0.0, 0.0, 0.0, -0.0252682330495538, -0.0408396318581521}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 16: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382571, -0.0231840235981022, 0.013385302265263, -0.0189296759999982, 0.0433733365754904, 0.0335968420452647, 0.0274317066599275, 0.0193971457987549, 0.01583770322444, 0.0111989473484216, -0.0268774736362117, 0.0, -0.0229510124219699, 0.0117302911835353, -0.00761904761904761, -0.0165891368823411, 0.0101587301587302, -0.00146628639794191, -0.0071833069834824, -0.00761904761904761, 0.0, -0.0241610520385245, 0.00270128773830254, -0.0357346778758831, -0.0114150241263618, 0.00395428035129663, -0.0355885231616696, -0.0159156714016638, -0.00306297238936141, 0.00375135972508442, -0.0228300482527235, -0.0112308987609918, -0.00353681586703639, 0.000721949515701538, 0.0020419815929076}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 17: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0329914439536931, 0.0173880176985767, -0.0100389766989472, 0.0141972569999987, -0.00722888942924841, -0.0615942104163185, 0.00685792666498188, -0.0614242950293904, -0.00395942580610999, 0.00559947367421075, 0.0, 0.0340734167999968, -0.00491807409042211, 0.0, 0.0266666666666667, -0.00933138949631689, -0.0152380952380953, 0.0175954367753029, 0.00538748023761179, -0.00761904761904761, 0.0, 0.0, 0.0, 0.0357346778758831, -0.00913201930108942, 0.00131809345043221, 0.0593142052694494, 0.0, -0.00714693557517663, 0.00250090648338962, 0.0456600965054471, 0.0040839631858152, -0.00471575448938187, -0.00144389903140307, 0.00204198159290761}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 18: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382574, -0.0231840235981023, 0.013385302265263, -0.0189296759999982, 0.0, 0.0, 0.0, 0.0581914373962646, -0.0316754064488799, 0.0111989473484216, 0.0, 0.0, 0.0, -0.0293257279588381, 0.0101587301587302, -0.00207364211029264, 0.0101587301587302, -0.0219942959691286, 0.017958267458706, -0.00761904761904763, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0395428035129663, 0.017684079335182, -0.00612594477872281, 0.00125045324169482, -0.0456600965054471, 0.0142938711503532, 0.0, -0.00360974757850769, 0.0020419815929076}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 19: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382574, 0.0, -0.0267706045305259, -0.0189296759999982, 0.0433733365754904, 0.0335968420452647, 0.0274317066599275, 0.0193971457987549, 0.01583770322444, 0.0111989473484215, 0.0134387368181059, -0.0113578055999989, -0.00983614818084424, -0.0205280095711867, -0.0177777777777778, -0.0145154947720485, -0.0152380952380952, -0.0131965775814772, -0.0107749604752236, -0.00761904761904762, -0.0547921158065365, -0.0241610520385245, -0.0216103019064202, -0.00510495398226901, -0.00456600965054472, -0.00395428035129662, 0.00395428035129663, 0.0035368158670364, 0.0030629723893614, 0.00250090648338962, 0.00456600965054471, 0.00408396318581522, 0.0035368158670364, 0.00288779806280615, 0.0020419815929076}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 20: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {-0.0329914439536931, 0.0, 0.0200779533978945, 0.0141972569999987, -0.0867466731509807, 0.0, 0.0, 0.00969857289937748, 0.00791885161222, 0.00559947367421077, 0.0, 0.0340734167999968, 0.0295084445425327, 0.0, 0.0, 0.0, -0.0152380952380953, -0.0131965775814771, -0.0107749604752236, -0.00761904761904762, 0.0821881737098047, 0.0, 0.0, -0.010209907964538, -0.00913201930108942, -0.00790856070259324, 0.0, 0.0, 0.0, 0.0, 0.0045660096505447, 0.00408396318581518, 0.00353681586703639, 0.00288779806280616, 0.00204198159290761}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 21: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.043988591938257, 0.0, -0.026770604530526, -0.0189296759999982, 0.0433733365754904, -0.0335968420452647, -0.0274317066599274, 0.0193971457987549, 0.0158377032244399, 0.0111989473484216, -0.0134387368181058, -0.0113578055999989, -0.00983614818084423, 0.0205280095711867, 0.0177777777777778, 0.0145154947720485, -0.0152380952380952, -0.0131965775814772, -0.0107749604752236, -0.00761904761904762, -0.0547921158065365, 0.0241610520385245, 0.0216103019064202, -0.00510495398226901, -0.0045660096505447, -0.00395428035129662, -0.00395428035129662, -0.0035368158670364, -0.0030629723893614, -0.00250090648338962, 0.00456600965054471, 0.00408396318581522, 0.0035368158670364, 0.00288779806280615, 0.0020419815929076}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 22: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382571, 0.139104141588614, -0.080311813591578, -0.0567890279999947, 0.0578311154339872, 0.0335968420452646, 0.0274317066599275, -0.0420271492306356, -0.0475131096733199, -0.0167984210226323, 0.0, 0.0454312223999957, 0.039344592723377, -0.0586514559176763, 0.00253968253968255, -0.0601356211984865, 0.0406349206349207, -0.0109971479845643, 0.017958267458706, 0.0393650793650794, 0.0, 0.0, 0.0, 0.0, 0.0410940868549024, -0.0105447476034577, 0.0, -0.053052238005546, -0.0245037791148913, 0.0175063453837273, 0.0, 0.0367556686723369, 0.0235787724469094, 0.0, -0.0122518895574456}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 23: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382572, 0.0, 0.160623627183156, -0.0567890279999946, 0.0, 0.0783926314389509, -0.0274317066599274, 0.00969857289937744, 0.0475131096733199, -0.0167984210226323, 0.0, 0.0, 0.0, 0.0586514559176763, 0.033015873015873, -0.0145154947720484, -0.0609523809523809, 0.0241937255660415, -0.0610581093596003, 0.0393650793650794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.053052238005546, -0.0326717054865217, 0.00875317269186366, 0.0, -0.0551335030085053, 0.0141472634681456, 0.0151609398297323, -0.0122518895574456}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 24: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382573, 0.0, 0.0, 0.170367083999984, 0.0, -0.0111989473484215, 0.0822951199797824, 0.00969857289937743, 0.0475131096733199, -0.0167984210226324, 0.0, 0.0, 0.0, 0.0, 0.0533333333333333, 0.0435464843161453, 0.0, -0.04618802153517, 0.0251415744421884, -0.0825396825396826, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0571754846014129, -0.026259518075591, 0.0, 0.0, -0.0495154221385096, -0.0151609398297323, 0.0306297238936141}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 25: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.043988591938257, -0.139104141588614, -0.080311813591578, -0.0567890279999947, 0.0578311154339871, -0.0335968420452646, -0.0274317066599275, -0.0420271492306356, -0.0475131096733199, -0.0167984210226323, 0.0, 0.0454312223999957, 0.039344592723377, 0.0586514559176762, -0.00253968253968253, 0.0601356211984865, 0.0406349206349207, -0.0109971479845643, 0.017958267458706, 0.0393650793650794, 0.0, 0.0, 0.0, 0.0, 0.0410940868549024, -0.0105447476034577, 0.0, 0.053052238005546, 0.0245037791148913, -0.0175063453837273, 0.0, 0.0367556686723369, 0.0235787724469094, 0.0, -0.0122518895574456}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 26: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382573, 0.0, 0.160623627183156, -0.0567890279999946, 0.0, -0.0783926314389508, 0.0274317066599274, 0.00969857289937746, 0.0475131096733199, -0.0167984210226323, 0.0, 0.0, 0.0, -0.0586514559176763, -0.033015873015873, 0.0145154947720485, -0.060952380952381, 0.0241937255660415, -0.0610581093596003, 0.0393650793650794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.053052238005546, 0.0326717054865217, -0.00875317269186367, 0.0, -0.0551335030085054, 0.0141472634681456, 0.0151609398297323, -0.0122518895574456}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 27: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382573, 0.0, 0.0, 0.170367083999984, 0.0, 0.0111989473484216, -0.0822951199797823, 0.00969857289937742, 0.0475131096733198, -0.0167984210226323, 0.0, 0.0, 0.0, 0.0, -0.0533333333333333, -0.0435464843161453, 0.0, -0.04618802153517, 0.0251415744421884, -0.0825396825396826, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0571754846014129, 0.026259518075591, 0.0, 0.0, -0.0495154221385096, -0.0151609398297323, 0.0306297238936141}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 28: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382574, -0.139104141588614, -0.0803118135915779, -0.0567890279999946, -0.0433733365754904, 0.0447957893936862, -0.0548634133198549, 0.0484928644968872, 0.0, -0.0167984210226323, 0.0806324209086351, 0.0227156111999979, -0.00327871606028141, -0.00586514559176761, 0.0304761904761905, 0.045620126426438, -0.0101587301587302, 0.0271262983619253, 0.0430998419008943, 0.0393650793650794, 0.0, 0.0, 0.0729347689341683, 0.0, 0.0205470434274512, 0.031634242810373, 0.0, -0.00530522380055459, -0.00816792637163041, -0.00875317269186366, 0.0, -0.0091889171680842, -0.0141472634681456, -0.0151609398297323, -0.0122518895574456}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 29: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382572, 0.139104141588614, -0.0803118135915779, -0.0567890279999947, -0.0433733365754903, -0.0447957893936862, 0.0548634133198549, 0.0484928644968873, 0.0, -0.0167984210226323, -0.0806324209086351, 0.0227156111999979, -0.00327871606028139, 0.00586514559176762, -0.0304761904761905, -0.045620126426438, -0.0101587301587302, 0.0271262983619253, 0.0430998419008943, 0.0393650793650794, 0.0, 0.0, -0.0729347689341683, 0.0, 0.0205470434274512, 0.031634242810373, 0.0, 0.00530522380055459, 0.00816792637163041, 0.00875317269186366, 0.0, -0.00918891716808424, -0.0141472634681456, -0.0151609398297323, -0.0122518895574456}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 30: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382572, 0.0, 0.0, 0.170367083999984, 0.0144577788584968, 0.0, 0.0, -0.00323285763312585, -0.0950262193466398, -0.0167984210226324, 0.0, 0.0, -0.0688530372659097, 0.0, 0.0, 0.0, 0.0, 0.01539600717839, -0.0502831488843767, -0.0825396825396825, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0738132332242037, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0165051407128365, 0.0303218796594646, 0.0306297238936141}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 31: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382571, -0.139104141588614, -0.0803118135915779, -0.0567890279999946, -0.0433733365754904, -0.0447957893936862, 0.054863413319855, -0.00969857289937741, 0.0316754064488799, 0.0391963157194754, 0.0806324209086351, 0.0, 0.0229510124219699, 0.0527863103259086, 0.0101587301587301, -0.0124418526617558, 0.0609523809523809, 0.0168622935763319, -0.00718330698348236, -0.013968253968254, 0.0, 0.0724831561155734, -0.00810386321490761, 0.0357346778758831, 0.0114150241263618, -0.00395428035129662, -0.0118628410538899, -0.0053052238005546, -0.00102099079645379, 0.00125045324169481, -0.0228300482527235, -0.0112308987609918, -0.0035368158670364, 0.000721949515701522, 0.00204198159290762}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 32: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382571, 0.139104141588614, -0.0803118135915779, -0.0567890279999947, -0.0433733365754904, 0.0447957893936862, -0.054863413319855, -0.00969857289937742, 0.03167540644888, 0.0391963157194754, -0.0806324209086351, 0.0, 0.0229510124219699, -0.0527863103259087, -0.0101587301587302, 0.0124418526617558, 0.060952380952381, 0.0168622935763319, -0.00718330698348237, -0.013968253968254, 0.0, -0.0724831561155734, 0.00810386321490762, 0.0357346778758831, 0.0114150241263618, -0.00395428035129662, 0.0118628410538899, 0.0053052238005546, 0.0010209907964538, -0.00125045324169481, -0.0228300482527236, -0.0112308987609918, -0.0035368158670364, 0.00072194951570152, 0.00204198159290761}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 33: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.0439885919382571, 0.0, 0.160623627183156, -0.0567890279999947, 0.0144577788584968, 0.0, 0.0, -0.0614242950293905, -0.0633508128977598, 0.0391963157194755, 0.0, -0.0681468335999936, 0.00983614818084426, 0.0, 0.0, 0.0, -0.0914285714285714, 0.0285925847598672, 0.0143666139669647, -0.013968253968254, 0.0, 0.0, 0.0, -0.0714693557517662, 0.0182640386021788, -0.00263618690086443, 0.0, 0.0, 0.0, 0.0, 0.0456600965054471, 0.00408396318581519, -0.00471575448938189, -0.00144389903140306, 0.00204198159290759}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 34: { // Array of basisvalues double basisvalues[35] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[20] *= std::sqrt(123.75); // Table(s) of coefficients static const double coefficients0[35] = \ {0.351908735506058, 0.0, 0.0, 0.0, -0.115662230867974, 0.0, 0.0, -0.129314305325033, 0.0, -0.134387368181059, 0.0, -0.0908624447999914, -0.0786891854467539, 0.0, 0.0, 0.0, 0.0406349206349207, -0.0879771838765144, 0.0, 0.0711111111111111, 0.0, 0.0, 0.0, 0.0, -0.0821881737098047, 0.0210894952069153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0367556686723369, 0.0235787724469094, 0.0, -0.0122518895574456}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.4210854715202e-14, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534076, -1.18321595661992, 0.0, 0.0, -1.07549646311337e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677393, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.09536992043099e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.49318211345083e-14, -1.06245530659531e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.692820323027551, 0.56568542494925, 0.400000000000003, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210818, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.15463194561016e-14, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 3.10862446895044e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08799866244193e-14, 0.0, 1.24344978758018e-14, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848296, 0.0, 0.0, 0.0, 9.52470471983253, -1.48131215963609, 0.261861468283195, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049953, 0.0, 0.0, -1.48697045807773e-14, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 1.14273987820129e-14, 0.0, 1.17756324208062e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.46381197701196e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227158, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 1.71834407161302e-14, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08414691482891e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936042, -3.43303281162798, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, 0.0, 0.611677741841198, 0.529728463363977, 0.432521479156786, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479104, 0.0, 3.54562104171167, -2.50713268211204, 4.78713553878169, 0.0, 1.03127949051107e-14, -5.56626745075489, -1.04880884817015, 0.741619848709563, 0.0, 18.8034951158402, -0.603122387046459, 0.0, 0.0, 0.0, 1.68183573174417, 0.701283781217656, 0.132137494528683, -0.0934353184302316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095217, 0.0, -1.58564993434418, 4.4848952846511, 4.28174419288838, 0.0, 2.01549958953303e-14, 0.191485421551271, -3.75233260785873, -4.31161222746203, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, -1.31613585814704e-14, 0.0, 0.844371341865031, 1.18187368057056, 1.04463861754668, 0.0, 0.0, 1.37907845000098e-14, 0.0, 1.52370013780378e-14, 0.0, 0.0, 1.22925155307371e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.14828155264968e-14, 2.59512887494071, 0.0, 0.0, 0.0, 10.0285307284481, -0.767649473578731, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061158, 0.0967147429123321, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.32115382989599, 0.0, 0.0, 0.0, 3.92428337406972, 5.49285249860477, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 17.3044631365565, -1.73008591662714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.30926389122033e-14, 2.01017818278147, 0.0, 0.0, 0.0, 1.07747732918591e-14, 8.91928088068604, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.8558564884489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.12403840463596, -1.64130361329658, 0.0, 0.0, 0.0, 11.7728501222092, -2.40312296813959, 0.485504156227611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.2761860629321, -1.48323969741914, 0.302765035409752, -0.0611677741841192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.65329983228433, 0.0, 4.15220619990514, 2.93605316083775, 0.0, 0.0, 0.0, 2.63248931621764, 9.82591326180786, -2.82261277137741, 0.0, 0.0, 0.0, 0.0, -1.06705809453988e-14, -1.18386439067295e-14, 0.0, 11.6081867662439, -3.09487177319465, 0.68387650554024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29782505861521, 0.0, 1.49829835452878, 5.50917601898535, 0.0, 0.0, 0.0, 0.0, 6.6480394532094, 4.13676892548487, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24556675176217e-14, 0.0, 0.0, 12.5636136423842, -3.55352656109508, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87616630392939, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, 1.70633522520646e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24242205304948e-14, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 1.07342726210924e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747791, 7.24568837309472, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 1.23044271576884e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04768496021549e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063976, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920392, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, -1.1958524495215e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.78617674580237e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.25786280607096e-14, -1.00255429371979e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474618, -0.999999999999997, 9.16515138991167, 7.09929573971954, -0.414039335605408, -2.04939015319192, -0.478091443733747, 0.169030850945704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463866, 3.17542648054294, 0.0, 0.0, 7.17137165600636, 0.0, -1.3801311186847, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000002, -5.69209978830308, 4.38178046004133, -0.774596669241481, 0.0, 10.998181667894, 0.962140470884734, 4.76235235991627, -0.740656079818046, 0.13093073414159, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253617, 0.0, 0.0, 0.0, 0.0, 0.0, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270665, 0.0, -3.16227766016838, -2.23606797749979, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824847, 0.377964473009232, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12613535043551e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.79999999999999, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 0.0, 0.0, 0.0, -1.2476562651985e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850487, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 1.35256877221059e-14, 8.97997772825747, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431496, 1.77281052085584, -1.25356634105602, 2.39356776939085, 6.30376871403131, -0.908295106229239, -2.78313372537744, -0.52440442408508, 0.370809924354779, 11.1242977306435, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656969, 0.114434427054265, 0.840917865872082, 0.350641890608827, 0.066068747264342, -0.0467176592151163, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047609, 2.74642624930238, -0.792824967172095, 2.24244764232555, 2.14087209644419, -0.331662479035538, 6.49923072370879, 0.0957427107756368, -1.87616630392935, -2.15580611373101, 0.0, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932517, 0.590936840285274, 0.522319308773343, 0.0, 0.0, 1.27957916967706e-14, 0.0, 1.1163086179845e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747035, 3.74574588632198, -1.05945692672795, -8.09173593712688, 5.01426536422407, -0.383824736789362, 1.80936716113937, -1.1080065755349, 0.313391585264005, 0.0, 12.7134831207354, 1.01946290306866, 8.2065180664829, -0.631738055305791, 0.0483573714561614, -2.84282124887606, -0.227958835180084, 0.139595707137606, -0.0394836284566089, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715535, 1.16057691494799, 1.34011878852098, 1.89521416591737, 2.53311402559511, 1.96214168703486, 2.74642624930239, -0.566421515598884, 3.17129986868839, -1.82198870938951, 0.0, 0.0, 11.1699829238239, 0.0, 8.65223156827827, -0.865042958313579, 0.0, -2.49768411251822, -0.998865569685867, 0.441440386136646, 0.0, 0.0, 1.12380765482301e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139074, -0.193429485824669, 3.55615782880926, 0.0, 0.0, 4.45964044034301, 0.0, -0.85825820290699, 2.67027285925187, 0.0, 0.0, 0.0, 0.0, 0.0, 8.42792824422444, 0.0, 0.0, -1.62195554683795, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973514, 4.06201920231798, -0.820651806648294, 0.0, -6.79705818718658, -2.08116553882674, 5.88642506110459, -1.20156148406979, 0.242752078113812, 0.0, 0.0, 0.0, 14.8323969741913, 0.856348838577679, 0.262202212042536, 5.13809303146605, -0.74161984870957, 0.151382517704876, -0.0305838870920608, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614217, -2.69693703815182, 2.07610309995257, 1.46802658041887, 0.0, 3.03973683071414, -6.38211787508102, 1.31624465810881, 4.91295663090392, -1.41130638568871, 0.0, 0.0, 0.0, 0.0, 13.4039795085887, 2.01017818278147, 0.0, 5.80409338312195, -1.54743588659733, 0.34193825277012, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930762, 1.29756443747036, 0.749149177264391, 2.75458800949267, 0.0, 0.0, 5.75737105184054, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8804085776374, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.938083151964695, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431072, 0.0, 9.38083151964685, 1.89521416591737, 0.0, 0.0, 0.0, -3.39852909359329, -2.77488738510234, -0.560611910581401, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7988763690296, 0.428174419288833, 0.349602949390052, 0.0706304617818621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24317566374265e-14, 0.0, 0.0, 0.0}, {3.82970843102536, 0.0, -1.49829835452878, 4.23782770691181, 0.0, 0.0, 0.0, 3.79967103839268, -3.54562104171168, -4.07409060843207, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16174739138758e-14, 0.0, 16.7549743857359, 1.11676565710082, 0.987090711415298, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.03036190139104e-14, 0.0, 0.0, 0.0, 0.0, 1.38982644482085e-14, 0.0, 0.0}, {-1.32664991614216, 0.0, 1.73008591662714, -3.18072425757423, 0.0, 0.0, 1.27392292174198e-14, 0.0, 7.6764947357874, -2.38836465270396, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12953118192662e-14, 0.0, 0.0, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07553959996438e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62480768092721, 0.0, 0.0, 5.39387407630364, 0.0, 0.0, 0.0, 0.0, 1.75693684660576e-14, 9.57317681262153, 0.0, 0.0, 0.0, 0.0, 0.0, -1.12994323236889e-14, 0.0, 0.0, 0.0, 10.0508909139074, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[35][35] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494323, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 1.08139510506637e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32287565553229, 0.0, 3.86436713231718, -0.341565025531986, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, -1.07183181713432e-14, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.00943403069993e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.7495454169735, 5.79655069847577, -1.67332005306815, -1.18321595661992, 7.74596669241483, -1.2, -0.979795897113272, 0.346410161513779, 0.282842712474631, 0.200000000000006, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141595, 7.09929573971954, -0.414039335605415, -2.04939015319192, -0.478091443733751, 0.169030850945703, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463873, 3.17542648054294, 9.07114735222145, 0.0, 7.17137165600637, 0.0, -1.38013111868469, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000001, 0.632455532033674, 4.38178046004133, -0.774596669241482, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991627, -0.740656079818041, 0.130930734141598, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505168, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.3452248382485, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613581, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 1.56971477156661e-14, 5.1845925587263, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499956, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824849, 0.0755928946018449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.90000000000001, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222146, 4.93770719878695, -0.698297248755171, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834964, 0.0, -6.26099033699941, 2.21359436211786, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941916, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497732, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 2.0077981152019e-14, 12.6996062931101, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07213777173414e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.07347873446981e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14}, {2.56904651573303, 5.80288457473997, -2.01017818278147, -1.42141062443803, 8.14215222512715, -2.10229466468021, -1.71651640581399, 0.72825623434142, 0.594618725379072, 0.420458932936043, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920597, 0.264864231681987, 0.216260739578392, -0.105945692672796, -0.0917516612761802, -0.0749149177264402, -0.0529728463363996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239552, 3.07059789431495, 1.77281052085583, -1.25356634105602, 2.39356776939084, 6.30376871403131, -0.90829510622924, -2.78313372537744, -0.524404424085074, 0.370809924354781, 1.23603308118261, 9.40174755792013, -0.301561193523231, -2.42752078113806, -0.794200206656968, 0.114434427054265, 0.840917865872084, 0.350641890608828, 0.0660687472643396, -0.046717659215116, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047611, 2.74642624930238, -0.792824967172091, 2.24244764232556, 2.1408720964442, -0.331662479035543, 6.49923072370878, 0.0957427107756334, -1.87616630392936, -2.15580611373101, 11.0554159678513, 0.0, 9.44035859331468, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932516, 0.590936840285276, 0.522319308773342, 0.0, 0.0, 1.05194542384003e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747035, 3.74574588632197, -1.05945692672795, 0.40458679685634, 5.01426536422407, -0.383824736789364, 1.80936716113937, -1.1080065755349, 0.313391585264004, 0.0, 2.82521847127454, -0.0509731451534333, 8.2065180664829, -0.631738055305791, 0.048357371456163, -2.84282124887606, -0.227958835180081, 0.139595707137603, -0.039483628456611, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715534, 1.160576914948, 1.34011878852098, 1.89521416591737, 0.361873432227873, 1.96214168703486, 2.74642624930239, -0.566421515598883, 3.17129986868838, -1.82198870938952, 0.0, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313568, 0.0, -2.49768411251822, -0.998865569685865, 0.441440386136644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741915, 1.00508909139074, -0.193429485824661, 3.55615782880926, -8.46157280212812, 0.0, 4.45964044034303, 0.0, -0.858258202906978, 2.67027285925187, 0.0, 0.0, 12.4373429638327, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683795, -2.29379153190448, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 0.335029697130245, 4.06201920231798, -0.820651806648292, 0.0, 1.69926454679664, -0.0991031208965099, 5.88642506110459, -1.2015614840698, 0.242752078113805, 0.0, 0.0, 0.0, 4.94413232473044, -0.214087209644416, 0.0124858196210723, 5.13809303146605, -0.741619848709572, 0.151382517704876, -0.0305838870920592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32664991614218, 0.299659670905757, 2.07610309995257, 1.46802658041887, 0.0, 0.868496237346888, 0.70912420834234, 1.31624465810882, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 0.0, 11.0554159678513, 3.82970843102535, -0.223353131420171, 0.0, 5.80409338312195, -1.54743588659733, 0.341938252770122, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.1489125293076, 0.259512887494076, 0.74914917726439, 2.75458800949267, 0.0, -8.46157280212812, 1.1514742103681, 0.0, 3.32401972660471, 2.06838446274243, 0.0, 0.0, 0.0, 0.0, 12.4373429638328, 2.17608171552749, 0.0, 0.0, 6.28180682119209, -1.77676328054754, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.93808315196469, 7.62808987244126, 0.0, 3.11415464992885, 0.0, 0.0, -7.52139804633611, 0.0, 0.0, 5.52707620976692, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 0.0, 0.0, 0.0, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.856348838577679, 0.0, 2.68023757704196, -0.473803541479348, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172096, 0.140152977645346, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.91061171956871, -0.642261628933263, 0.0998865569685865, -0.0176576154454655, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205071, 0.0, 1.49829835452879, 0.847565541382356, 0.0, 0.0, 0.0, 1.62843044502544, 3.54562104171167, -0.814818121686419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.0554159678513, 7.18070330817253, -1.11676565710081, 0.197418142283061, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071079, 0.0, 0.692034366650858, 1.59036212878711, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431496, 1.19418232635198, 0.0, 0.0, 0.0, 0.0, 0.0, -1.07792102518977e-14, 0.0, 12.4373429638327, 5.80288457473997, -1.02581475831036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11834313958114e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309062, 0.0, 7.62808987244125, 1.79795802543455, 0.0, 0.0, 0.0, 0.0, -7.52139804633611, 3.19105893754051, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.3615918034355, 0.0, 0.0, 8.89943818451479, 0.0, 0.0, 1.02604187135442e-14, 0.0, 0.0, -5.26497863243528, 0.0, 0.0, 0.0, 0.0, 0.0, -1.16821951643962e-14, 0.0, 0.0, 0.0, 16.583123951777, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[81]; for (unsigned int r = 0; r < 81; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[35][35] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 35; t++) { for (unsigned int u = 0; u < 35; u++) { for (unsigned int tu = 0; tu < 35; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 35; s++) { for (unsigned int t = 0; t < 35; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell void poisson3d_4_finite_element_0::evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 35; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 4) { return ; } // Helper variable to hold values of a single dof. double dof_values[81]; for (unsigned int r = 0; r < 81; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 35; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f double poisson3d_4_finite_element_0::evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = 0.75*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.75*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.75*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 5: { y[0] = 0.5*vertex_coordinates[6] + 0.5*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[7] + 0.5*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[8] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 6: { y[0] = 0.25*vertex_coordinates[6] + 0.75*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[7] + 0.75*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[8] + 0.75*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 7: { y[0] = 0.75*vertex_coordinates[3] + 0.25*vertex_coordinates[9]; y[1] = 0.75*vertex_coordinates[4] + 0.25*vertex_coordinates[10]; y[2] = 0.75*vertex_coordinates[5] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 8: { y[0] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[4] + 0.5*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[5] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 9: { y[0] = 0.25*vertex_coordinates[3] + 0.75*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[4] + 0.75*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[5] + 0.75*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 10: { y[0] = 0.75*vertex_coordinates[3] + 0.25*vertex_coordinates[6]; y[1] = 0.75*vertex_coordinates[4] + 0.25*vertex_coordinates[7]; y[2] = 0.75*vertex_coordinates[5] + 0.25*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 11: { y[0] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[6]; y[1] = 0.5*vertex_coordinates[4] + 0.5*vertex_coordinates[7]; y[2] = 0.5*vertex_coordinates[5] + 0.5*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 12: { y[0] = 0.25*vertex_coordinates[3] + 0.75*vertex_coordinates[6]; y[1] = 0.25*vertex_coordinates[4] + 0.75*vertex_coordinates[7]; y[2] = 0.25*vertex_coordinates[5] + 0.75*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 13: { y[0] = 0.75*vertex_coordinates[0] + 0.25*vertex_coordinates[9]; y[1] = 0.75*vertex_coordinates[1] + 0.25*vertex_coordinates[10]; y[2] = 0.75*vertex_coordinates[2] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 14: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 15: { y[0] = 0.25*vertex_coordinates[0] + 0.75*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.75*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.75*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 16: { y[0] = 0.75*vertex_coordinates[0] + 0.25*vertex_coordinates[6]; y[1] = 0.75*vertex_coordinates[1] + 0.25*vertex_coordinates[7]; y[2] = 0.75*vertex_coordinates[2] + 0.25*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 17: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[6]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[7]; y[2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 18: { y[0] = 0.25*vertex_coordinates[0] + 0.75*vertex_coordinates[6]; y[1] = 0.25*vertex_coordinates[1] + 0.75*vertex_coordinates[7]; y[2] = 0.25*vertex_coordinates[2] + 0.75*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 19: { y[0] = 0.75*vertex_coordinates[0] + 0.25*vertex_coordinates[3]; y[1] = 0.75*vertex_coordinates[1] + 0.25*vertex_coordinates[4]; y[2] = 0.75*vertex_coordinates[2] + 0.25*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 20: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[3]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[4]; y[2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 21: { y[0] = 0.25*vertex_coordinates[0] + 0.75*vertex_coordinates[3]; y[1] = 0.25*vertex_coordinates[1] + 0.75*vertex_coordinates[4]; y[2] = 0.25*vertex_coordinates[2] + 0.75*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 22: { y[0] = 0.5*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 23: { y[0] = 0.25*vertex_coordinates[3] + 0.5*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[4] + 0.5*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[5] + 0.5*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 24: { y[0] = 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.5*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.5*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 25: { y[0] = 0.5*vertex_coordinates[0] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[1] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[2] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 26: { y[0] = 0.25*vertex_coordinates[0] + 0.5*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.5*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.5*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 27: { y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[6] + 0.5*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[7] + 0.5*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[8] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 28: { y[0] = 0.5*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 29: { y[0] = 0.25*vertex_coordinates[0] + 0.5*vertex_coordinates[3] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.5*vertex_coordinates[4] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.5*vertex_coordinates[5] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 30: { y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.5*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.5*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 31: { y[0] = 0.5*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6]; y[1] = 0.5*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7]; y[2] = 0.5*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 32: { y[0] = 0.25*vertex_coordinates[0] + 0.5*vertex_coordinates[3] + 0.25*vertex_coordinates[6]; y[1] = 0.25*vertex_coordinates[1] + 0.5*vertex_coordinates[4] + 0.25*vertex_coordinates[7]; y[2] = 0.25*vertex_coordinates[2] + 0.5*vertex_coordinates[5] + 0.25*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 33: { y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.5*vertex_coordinates[6]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.5*vertex_coordinates[7]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.5*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 34: { y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f void poisson3d_4_finite_element_0::evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = 0.75*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.75*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.75*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); values[4] = vals[0]; y[0] = 0.5*vertex_coordinates[6] + 0.5*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[7] + 0.5*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[8] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); values[5] = vals[0]; y[0] = 0.25*vertex_coordinates[6] + 0.75*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[7] + 0.75*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[8] + 0.75*vertex_coordinates[11]; f.evaluate(vals, y, c); values[6] = vals[0]; y[0] = 0.75*vertex_coordinates[3] + 0.25*vertex_coordinates[9]; y[1] = 0.75*vertex_coordinates[4] + 0.25*vertex_coordinates[10]; y[2] = 0.75*vertex_coordinates[5] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); values[7] = vals[0]; y[0] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[4] + 0.5*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[5] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); values[8] = vals[0]; y[0] = 0.25*vertex_coordinates[3] + 0.75*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[4] + 0.75*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[5] + 0.75*vertex_coordinates[11]; f.evaluate(vals, y, c); values[9] = vals[0]; y[0] = 0.75*vertex_coordinates[3] + 0.25*vertex_coordinates[6]; y[1] = 0.75*vertex_coordinates[4] + 0.25*vertex_coordinates[7]; y[2] = 0.75*vertex_coordinates[5] + 0.25*vertex_coordinates[8]; f.evaluate(vals, y, c); values[10] = vals[0]; y[0] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[6]; y[1] = 0.5*vertex_coordinates[4] + 0.5*vertex_coordinates[7]; y[2] = 0.5*vertex_coordinates[5] + 0.5*vertex_coordinates[8]; f.evaluate(vals, y, c); values[11] = vals[0]; y[0] = 0.25*vertex_coordinates[3] + 0.75*vertex_coordinates[6]; y[1] = 0.25*vertex_coordinates[4] + 0.75*vertex_coordinates[7]; y[2] = 0.25*vertex_coordinates[5] + 0.75*vertex_coordinates[8]; f.evaluate(vals, y, c); values[12] = vals[0]; y[0] = 0.75*vertex_coordinates[0] + 0.25*vertex_coordinates[9]; y[1] = 0.75*vertex_coordinates[1] + 0.25*vertex_coordinates[10]; y[2] = 0.75*vertex_coordinates[2] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); values[13] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); values[14] = vals[0]; y[0] = 0.25*vertex_coordinates[0] + 0.75*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.75*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.75*vertex_coordinates[11]; f.evaluate(vals, y, c); values[15] = vals[0]; y[0] = 0.75*vertex_coordinates[0] + 0.25*vertex_coordinates[6]; y[1] = 0.75*vertex_coordinates[1] + 0.25*vertex_coordinates[7]; y[2] = 0.75*vertex_coordinates[2] + 0.25*vertex_coordinates[8]; f.evaluate(vals, y, c); values[16] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[6]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[7]; y[2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[8]; f.evaluate(vals, y, c); values[17] = vals[0]; y[0] = 0.25*vertex_coordinates[0] + 0.75*vertex_coordinates[6]; y[1] = 0.25*vertex_coordinates[1] + 0.75*vertex_coordinates[7]; y[2] = 0.25*vertex_coordinates[2] + 0.75*vertex_coordinates[8]; f.evaluate(vals, y, c); values[18] = vals[0]; y[0] = 0.75*vertex_coordinates[0] + 0.25*vertex_coordinates[3]; y[1] = 0.75*vertex_coordinates[1] + 0.25*vertex_coordinates[4]; y[2] = 0.75*vertex_coordinates[2] + 0.25*vertex_coordinates[5]; f.evaluate(vals, y, c); values[19] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[3]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[4]; y[2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[20] = vals[0]; y[0] = 0.25*vertex_coordinates[0] + 0.75*vertex_coordinates[3]; y[1] = 0.25*vertex_coordinates[1] + 0.75*vertex_coordinates[4]; y[2] = 0.25*vertex_coordinates[2] + 0.75*vertex_coordinates[5]; f.evaluate(vals, y, c); values[21] = vals[0]; y[0] = 0.5*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); values[22] = vals[0]; y[0] = 0.25*vertex_coordinates[3] + 0.5*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[4] + 0.5*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[5] + 0.5*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); values[23] = vals[0]; y[0] = 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.5*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.5*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); values[24] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[1] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[2] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); values[25] = vals[0]; y[0] = 0.25*vertex_coordinates[0] + 0.5*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.5*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.5*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); values[26] = vals[0]; y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[6] + 0.5*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[7] + 0.5*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[8] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); values[27] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); values[28] = vals[0]; y[0] = 0.25*vertex_coordinates[0] + 0.5*vertex_coordinates[3] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.5*vertex_coordinates[4] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.5*vertex_coordinates[5] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); values[29] = vals[0]; y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.5*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.5*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); values[30] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6]; y[1] = 0.5*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7]; y[2] = 0.5*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8]; f.evaluate(vals, y, c); values[31] = vals[0]; y[0] = 0.25*vertex_coordinates[0] + 0.5*vertex_coordinates[3] + 0.25*vertex_coordinates[6]; y[1] = 0.25*vertex_coordinates[1] + 0.5*vertex_coordinates[4] + 0.25*vertex_coordinates[7]; y[2] = 0.25*vertex_coordinates[2] + 0.5*vertex_coordinates[5] + 0.25*vertex_coordinates[8]; f.evaluate(vals, y, c); values[32] = vals[0]; y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.5*vertex_coordinates[6]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.5*vertex_coordinates[7]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.5*vertex_coordinates[8]; f.evaluate(vals, y, c); values[33] = vals[0]; y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); values[34] = vals[0]; } /// Interpolate vertex values from dof values void poisson3d_4_finite_element_0::interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; vertex_values[3] = dof_values[3]; } /// Map coordinate xhat from reference cell to coordinate x in cell void poisson3d_4_finite_element_0::map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell void poisson3d_4_finite_element_0::map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) std::size_t poisson3d_4_finite_element_0::num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) ufc::finite_element* poisson3d_4_finite_element_0::create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance ufc::finite_element* poisson3d_4_finite_element_0::create() const { return new poisson3d_4_finite_element_0(); } /// Constructor poisson3d_4_dofmap_0::poisson3d_4_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor poisson3d_4_dofmap_0::~poisson3d_4_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap const char* poisson3d_4_dofmap_0::signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 4, None)"; } /// Return true iff mesh entities of topological dimension d are needed bool poisson3d_4_dofmap_0::needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return true; break; } case 2: { return true; break; } case 3: { return true; break; } } return false; } /// Return the topological dimension of the associated cell shape std::size_t poisson3d_4_dofmap_0::topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape std::size_t poisson3d_4_dofmap_0::geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space std::size_t poisson3d_4_dofmap_0::global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0] + 3*num_global_entities[1] + 3*num_global_entities[2] + num_global_entities[3]; } /// Return the dimension of the local finite element function space for a cell std::size_t poisson3d_4_dofmap_0::local_dimension() const { return 35; } /// Return the number of dofs on each cell facet std::size_t poisson3d_4_dofmap_0::num_facet_dofs() const { return 15; } /// Return the number of dofs associated with each cell entity of dimension d std::size_t poisson3d_4_dofmap_0::num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 3; break; } case 2: { return 3; break; } case 3: { return 1; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell void poisson3d_4_dofmap_0::tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; dofs[3] = offset + c.entity_indices[0][3]; offset += num_global_entities[0]; dofs[4] = offset + 3*c.entity_indices[1][0]; dofs[5] = offset + 3*c.entity_indices[1][0] + 1; dofs[6] = offset + 3*c.entity_indices[1][0] + 2; dofs[7] = offset + 3*c.entity_indices[1][1]; dofs[8] = offset + 3*c.entity_indices[1][1] + 1; dofs[9] = offset + 3*c.entity_indices[1][1] + 2; dofs[10] = offset + 3*c.entity_indices[1][2]; dofs[11] = offset + 3*c.entity_indices[1][2] + 1; dofs[12] = offset + 3*c.entity_indices[1][2] + 2; dofs[13] = offset + 3*c.entity_indices[1][3]; dofs[14] = offset + 3*c.entity_indices[1][3] + 1; dofs[15] = offset + 3*c.entity_indices[1][3] + 2; dofs[16] = offset + 3*c.entity_indices[1][4]; dofs[17] = offset + 3*c.entity_indices[1][4] + 1; dofs[18] = offset + 3*c.entity_indices[1][4] + 2; dofs[19] = offset + 3*c.entity_indices[1][5]; dofs[20] = offset + 3*c.entity_indices[1][5] + 1; dofs[21] = offset + 3*c.entity_indices[1][5] + 2; offset += 3*num_global_entities[1]; dofs[22] = offset + 3*c.entity_indices[2][0]; dofs[23] = offset + 3*c.entity_indices[2][0] + 1; dofs[24] = offset + 3*c.entity_indices[2][0] + 2; dofs[25] = offset + 3*c.entity_indices[2][1]; dofs[26] = offset + 3*c.entity_indices[2][1] + 1; dofs[27] = offset + 3*c.entity_indices[2][1] + 2; dofs[28] = offset + 3*c.entity_indices[2][2]; dofs[29] = offset + 3*c.entity_indices[2][2] + 1; dofs[30] = offset + 3*c.entity_indices[2][2] + 2; dofs[31] = offset + 3*c.entity_indices[2][3]; dofs[32] = offset + 3*c.entity_indices[2][3] + 1; dofs[33] = offset + 3*c.entity_indices[2][3] + 2; offset += 3*num_global_entities[2]; dofs[34] = offset + c.entity_indices[3][0]; offset += num_global_entities[3]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs void poisson3d_4_dofmap_0::tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; dofs[3] = 4; dofs[4] = 5; dofs[5] = 6; dofs[6] = 7; dofs[7] = 8; dofs[8] = 9; dofs[9] = 10; dofs[10] = 11; dofs[11] = 12; dofs[12] = 22; dofs[13] = 23; dofs[14] = 24; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; dofs[3] = 4; dofs[4] = 5; dofs[5] = 6; dofs[6] = 13; dofs[7] = 14; dofs[8] = 15; dofs[9] = 16; dofs[10] = 17; dofs[11] = 18; dofs[12] = 25; dofs[13] = 26; dofs[14] = 27; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; dofs[3] = 7; dofs[4] = 8; dofs[5] = 9; dofs[6] = 13; dofs[7] = 14; dofs[8] = 15; dofs[9] = 19; dofs[10] = 20; dofs[11] = 21; dofs[12] = 28; dofs[13] = 29; dofs[14] = 30; break; } case 3: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 2; dofs[3] = 10; dofs[4] = 11; dofs[5] = 12; dofs[6] = 16; dofs[7] = 17; dofs[8] = 18; dofs[9] = 19; dofs[10] = 20; dofs[11] = 21; dofs[12] = 31; dofs[13] = 32; dofs[14] = 33; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) void poisson3d_4_dofmap_0::tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } case 3: { dofs[0] = 3; break; } } break; } case 1: { if (i > 5) { throw std::runtime_error("i is larger than number of entities (5)"); } switch (i) { case 0: { dofs[0] = 4; dofs[1] = 5; dofs[2] = 6; break; } case 1: { dofs[0] = 7; dofs[1] = 8; dofs[2] = 9; break; } case 2: { dofs[0] = 10; dofs[1] = 11; dofs[2] = 12; break; } case 3: { dofs[0] = 13; dofs[1] = 14; dofs[2] = 15; break; } case 4: { dofs[0] = 16; dofs[1] = 17; dofs[2] = 18; break; } case 5: { dofs[0] = 19; dofs[1] = 20; dofs[2] = 21; break; } } break; } case 2: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 22; dofs[1] = 23; dofs[2] = 24; break; } case 1: { dofs[0] = 25; dofs[1] = 26; dofs[2] = 27; break; } case 2: { dofs[0] = 28; dofs[1] = 29; dofs[2] = 30; break; } case 3: { dofs[0] = 31; dofs[1] = 32; dofs[2] = 33; break; } } break; } case 3: { if (i > 0) { throw std::runtime_error("i is larger than number of entities (0)"); } dofs[0] = 34; break; } } } /// Tabulate the coordinates of all dofs on a cell void poisson3d_4_dofmap_0::tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[0][2] = vertex_coordinates[2]; dof_coordinates[1][0] = vertex_coordinates[3]; dof_coordinates[1][1] = vertex_coordinates[4]; dof_coordinates[1][2] = vertex_coordinates[5]; dof_coordinates[2][0] = vertex_coordinates[6]; dof_coordinates[2][1] = vertex_coordinates[7]; dof_coordinates[2][2] = vertex_coordinates[8]; dof_coordinates[3][0] = vertex_coordinates[9]; dof_coordinates[3][1] = vertex_coordinates[10]; dof_coordinates[3][2] = vertex_coordinates[11]; dof_coordinates[4][0] = 0.75*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; dof_coordinates[4][1] = 0.75*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; dof_coordinates[4][2] = 0.75*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; dof_coordinates[5][0] = 0.5*vertex_coordinates[6] + 0.5*vertex_coordinates[9]; dof_coordinates[5][1] = 0.5*vertex_coordinates[7] + 0.5*vertex_coordinates[10]; dof_coordinates[5][2] = 0.5*vertex_coordinates[8] + 0.5*vertex_coordinates[11]; dof_coordinates[6][0] = 0.25*vertex_coordinates[6] + 0.75*vertex_coordinates[9]; dof_coordinates[6][1] = 0.25*vertex_coordinates[7] + 0.75*vertex_coordinates[10]; dof_coordinates[6][2] = 0.25*vertex_coordinates[8] + 0.75*vertex_coordinates[11]; dof_coordinates[7][0] = 0.75*vertex_coordinates[3] + 0.25*vertex_coordinates[9]; dof_coordinates[7][1] = 0.75*vertex_coordinates[4] + 0.25*vertex_coordinates[10]; dof_coordinates[7][2] = 0.75*vertex_coordinates[5] + 0.25*vertex_coordinates[11]; dof_coordinates[8][0] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[9]; dof_coordinates[8][1] = 0.5*vertex_coordinates[4] + 0.5*vertex_coordinates[10]; dof_coordinates[8][2] = 0.5*vertex_coordinates[5] + 0.5*vertex_coordinates[11]; dof_coordinates[9][0] = 0.25*vertex_coordinates[3] + 0.75*vertex_coordinates[9]; dof_coordinates[9][1] = 0.25*vertex_coordinates[4] + 0.75*vertex_coordinates[10]; dof_coordinates[9][2] = 0.25*vertex_coordinates[5] + 0.75*vertex_coordinates[11]; dof_coordinates[10][0] = 0.75*vertex_coordinates[3] + 0.25*vertex_coordinates[6]; dof_coordinates[10][1] = 0.75*vertex_coordinates[4] + 0.25*vertex_coordinates[7]; dof_coordinates[10][2] = 0.75*vertex_coordinates[5] + 0.25*vertex_coordinates[8]; dof_coordinates[11][0] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[6]; dof_coordinates[11][1] = 0.5*vertex_coordinates[4] + 0.5*vertex_coordinates[7]; dof_coordinates[11][2] = 0.5*vertex_coordinates[5] + 0.5*vertex_coordinates[8]; dof_coordinates[12][0] = 0.25*vertex_coordinates[3] + 0.75*vertex_coordinates[6]; dof_coordinates[12][1] = 0.25*vertex_coordinates[4] + 0.75*vertex_coordinates[7]; dof_coordinates[12][2] = 0.25*vertex_coordinates[5] + 0.75*vertex_coordinates[8]; dof_coordinates[13][0] = 0.75*vertex_coordinates[0] + 0.25*vertex_coordinates[9]; dof_coordinates[13][1] = 0.75*vertex_coordinates[1] + 0.25*vertex_coordinates[10]; dof_coordinates[13][2] = 0.75*vertex_coordinates[2] + 0.25*vertex_coordinates[11]; dof_coordinates[14][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[9]; dof_coordinates[14][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[10]; dof_coordinates[14][2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[11]; dof_coordinates[15][0] = 0.25*vertex_coordinates[0] + 0.75*vertex_coordinates[9]; dof_coordinates[15][1] = 0.25*vertex_coordinates[1] + 0.75*vertex_coordinates[10]; dof_coordinates[15][2] = 0.25*vertex_coordinates[2] + 0.75*vertex_coordinates[11]; dof_coordinates[16][0] = 0.75*vertex_coordinates[0] + 0.25*vertex_coordinates[6]; dof_coordinates[16][1] = 0.75*vertex_coordinates[1] + 0.25*vertex_coordinates[7]; dof_coordinates[16][2] = 0.75*vertex_coordinates[2] + 0.25*vertex_coordinates[8]; dof_coordinates[17][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[6]; dof_coordinates[17][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[7]; dof_coordinates[17][2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[8]; dof_coordinates[18][0] = 0.25*vertex_coordinates[0] + 0.75*vertex_coordinates[6]; dof_coordinates[18][1] = 0.25*vertex_coordinates[1] + 0.75*vertex_coordinates[7]; dof_coordinates[18][2] = 0.25*vertex_coordinates[2] + 0.75*vertex_coordinates[8]; dof_coordinates[19][0] = 0.75*vertex_coordinates[0] + 0.25*vertex_coordinates[3]; dof_coordinates[19][1] = 0.75*vertex_coordinates[1] + 0.25*vertex_coordinates[4]; dof_coordinates[19][2] = 0.75*vertex_coordinates[2] + 0.25*vertex_coordinates[5]; dof_coordinates[20][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[3]; dof_coordinates[20][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[4]; dof_coordinates[20][2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[5]; dof_coordinates[21][0] = 0.25*vertex_coordinates[0] + 0.75*vertex_coordinates[3]; dof_coordinates[21][1] = 0.25*vertex_coordinates[1] + 0.75*vertex_coordinates[4]; dof_coordinates[21][2] = 0.25*vertex_coordinates[2] + 0.75*vertex_coordinates[5]; dof_coordinates[22][0] = 0.5*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; dof_coordinates[22][1] = 0.5*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; dof_coordinates[22][2] = 0.5*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; dof_coordinates[23][0] = 0.25*vertex_coordinates[3] + 0.5*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; dof_coordinates[23][1] = 0.25*vertex_coordinates[4] + 0.5*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; dof_coordinates[23][2] = 0.25*vertex_coordinates[5] + 0.5*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; dof_coordinates[24][0] = 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.5*vertex_coordinates[9]; dof_coordinates[24][1] = 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.5*vertex_coordinates[10]; dof_coordinates[24][2] = 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.5*vertex_coordinates[11]; dof_coordinates[25][0] = 0.5*vertex_coordinates[0] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; dof_coordinates[25][1] = 0.5*vertex_coordinates[1] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; dof_coordinates[25][2] = 0.5*vertex_coordinates[2] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; dof_coordinates[26][0] = 0.25*vertex_coordinates[0] + 0.5*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; dof_coordinates[26][1] = 0.25*vertex_coordinates[1] + 0.5*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; dof_coordinates[26][2] = 0.25*vertex_coordinates[2] + 0.5*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; dof_coordinates[27][0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[6] + 0.5*vertex_coordinates[9]; dof_coordinates[27][1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[7] + 0.5*vertex_coordinates[10]; dof_coordinates[27][2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[8] + 0.5*vertex_coordinates[11]; dof_coordinates[28][0] = 0.5*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[9]; dof_coordinates[28][1] = 0.5*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[10]; dof_coordinates[28][2] = 0.5*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[11]; dof_coordinates[29][0] = 0.25*vertex_coordinates[0] + 0.5*vertex_coordinates[3] + 0.25*vertex_coordinates[9]; dof_coordinates[29][1] = 0.25*vertex_coordinates[1] + 0.5*vertex_coordinates[4] + 0.25*vertex_coordinates[10]; dof_coordinates[29][2] = 0.25*vertex_coordinates[2] + 0.5*vertex_coordinates[5] + 0.25*vertex_coordinates[11]; dof_coordinates[30][0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.5*vertex_coordinates[9]; dof_coordinates[30][1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.5*vertex_coordinates[10]; dof_coordinates[30][2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.5*vertex_coordinates[11]; dof_coordinates[31][0] = 0.5*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6]; dof_coordinates[31][1] = 0.5*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7]; dof_coordinates[31][2] = 0.5*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8]; dof_coordinates[32][0] = 0.25*vertex_coordinates[0] + 0.5*vertex_coordinates[3] + 0.25*vertex_coordinates[6]; dof_coordinates[32][1] = 0.25*vertex_coordinates[1] + 0.5*vertex_coordinates[4] + 0.25*vertex_coordinates[7]; dof_coordinates[32][2] = 0.25*vertex_coordinates[2] + 0.5*vertex_coordinates[5] + 0.25*vertex_coordinates[8]; dof_coordinates[33][0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.5*vertex_coordinates[6]; dof_coordinates[33][1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.5*vertex_coordinates[7]; dof_coordinates[33][2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.5*vertex_coordinates[8]; dof_coordinates[34][0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; dof_coordinates[34][1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; dof_coordinates[34][2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; } /// Return the number of sub dofmaps (for a mixed element) std::size_t poisson3d_4_dofmap_0::num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) ufc::dofmap* poisson3d_4_dofmap_0::create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance ufc::dofmap* poisson3d_4_dofmap_0::create() const { return new poisson3d_4_dofmap_0(); } /// Constructor poisson3d_4_cell_integral_0_otherwise::poisson3d_4_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson3d_4_cell_integral_0_otherwise::~poisson3d_4_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson3d_4_cell_integral_0_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 27 // Number of operations (multiply-add pairs) for tensor contraction: 6311 // Total number of operations (multiply-add pairs): 6341 // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0_0 = det*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2]); const double G0_0_1 = det*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5]); const double G0_0_2 = det*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8]); const double G0_1_0 = det*(K[3]*K[0] + K[4]*K[1] + K[5]*K[2]); const double G0_1_1 = det*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5]); const double G0_1_2 = det*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8]); const double G0_2_0 = det*(K[6]*K[0] + K[7]*K[1] + K[8]*K[2]); const double G0_2_1 = det*(K[6]*K[3] + K[7]*K[4] + K[8]*K[5]); const double G0_2_2 = det*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8]); // Compute element tensor A[0] = 0.0379188712522047*G0_0_0 + 0.0379188712522047*G0_0_1 + 0.0379188712522047*G0_0_2 + 0.0379188712522047*G0_1_0 + 0.0379188712522047*G0_1_1 + 0.0379188712522047*G0_1_2 + 0.0379188712522047*G0_2_0 + 0.0379188712522047*G0_2_1 + 0.0379188712522048*G0_2_2; A[1] = 0.00511463844797185*G0_0_0 + 0.00511463844797184*G0_1_0 + 0.00511463844797185*G0_2_0; A[2] = 0.00511463844797184*G0_0_1 + 0.00511463844797184*G0_1_1 + 0.00511463844797184*G0_2_1; A[3] = 0.00511463844797178*G0_0_2 + 0.00511463844797179*G0_1_2 + 0.00511463844797181*G0_2_2; A[4] = 0.00776014109347431*G0_0_1 + 0.00776014109347443*G0_0_2 + 0.00776014109347433*G0_1_1 + 0.00776014109347443*G0_1_2 + 0.00776014109347432*G0_2_1 + 0.00776014109347443*G0_2_2; A[5] = 0.00511463844797182*G0_0_1 + 0.00511463844797174*G0_0_2 + 0.00511463844797182*G0_1_1 + 0.00511463844797176*G0_1_2 + 0.00511463844797184*G0_2_1 + 0.00511463844797177*G0_2_2; A[6] = 0.00776014109347439*G0_0_1 + 0.00776014109347442*G0_0_2 + 0.00776014109347441*G0_1_1 + 0.00776014109347441*G0_1_2 + 0.00776014109347439*G0_2_1 + 0.00776014109347437*G0_2_2; A[7] = 0.00776014109347427*G0_0_0 + 0.00776014109347443*G0_0_2 + 0.0077601410934743*G0_1_0 + 0.00776014109347443*G0_1_2 + 0.00776014109347429*G0_2_0 + 0.00776014109347443*G0_2_2; A[8] = 0.00511463844797186*G0_0_0 + 0.00511463844797174*G0_0_2 + 0.00511463844797183*G0_1_0 + 0.00511463844797174*G0_1_2 + 0.00511463844797186*G0_2_0 + 0.00511463844797178*G0_2_2; A[9] = 0.00776014109347439*G0_0_0 + 0.00776014109347442*G0_0_2 + 0.00776014109347441*G0_1_0 + 0.00776014109347441*G0_1_2 + 0.00776014109347439*G0_2_0 + 0.00776014109347436*G0_2_2; A[10] = 0.00776014109347433*G0_0_0 + 0.00776014109347442*G0_0_1 + 0.00776014109347435*G0_1_0 + 0.00776014109347442*G0_1_1 + 0.00776014109347434*G0_2_0 + 0.00776014109347442*G0_2_1; A[11] = 0.00511463844797171*G0_0_0 + 0.00511463844797175*G0_0_1 + 0.0051146384479717*G0_1_0 + 0.00511463844797174*G0_1_1 + 0.00511463844797168*G0_2_0 + 0.00511463844797172*G0_2_1; A[12] = 0.00776014109347443*G0_0_0 + 0.00776014109347435*G0_0_1 + 0.00776014109347443*G0_1_0 + 0.00776014109347434*G0_1_1 + 0.00776014109347443*G0_2_0 + 0.00776014109347435*G0_2_1; A[13] = -0.0246913580246911*G0_0_0 - 0.0246913580246912*G0_0_1 - 0.0705467372134041*G0_0_2 - 0.0246913580246911*G0_1_0 - 0.0246913580246912*G0_1_1 - 0.0705467372134041*G0_1_2 - 0.0246913580246911*G0_2_0 - 0.0246913580246912*G0_2_1 - 0.0705467372134041*G0_2_2; A[14] = 0.0202821869488535*G0_0_0 + 0.0202821869488535*G0_0_1 + 0.052910052910053*G0_0_2 + 0.0202821869488535*G0_1_0 + 0.0202821869488535*G0_1_1 + 0.052910052910053*G0_1_2 + 0.0202821869488535*G0_2_0 + 0.0202821869488535*G0_2_1 + 0.0529100529100531*G0_2_2; A[15] = -0.00776014109347439*G0_0_0 - 0.00776014109347439*G0_0_1 - 0.0253968253968254*G0_0_2 - 0.00776014109347441*G0_1_0 - 0.00776014109347442*G0_1_1 - 0.0253968253968254*G0_1_2 - 0.00776014109347438*G0_2_0 - 0.00776014109347439*G0_2_1 - 0.0253968253968254*G0_2_2; A[16] = -0.0246913580246912*G0_0_0 - 0.0705467372134042*G0_0_1 - 0.0246913580246912*G0_0_2 - 0.0246913580246912*G0_1_0 - 0.0705467372134042*G0_1_1 - 0.0246913580246912*G0_1_2 - 0.0246913580246912*G0_2_0 - 0.0705467372134042*G0_2_1 - 0.0246913580246913*G0_2_2; A[17] = 0.0202821869488536*G0_0_0 + 0.0529100529100531*G0_0_1 + 0.0202821869488536*G0_0_2 + 0.0202821869488535*G0_1_0 + 0.0529100529100531*G0_1_1 + 0.0202821869488535*G0_1_2 + 0.0202821869488536*G0_2_0 + 0.0529100529100531*G0_2_1 + 0.0202821869488536*G0_2_2; A[18] = -0.00776014109347444*G0_0_0 - 0.0253968253968255*G0_0_1 - 0.00776014109347443*G0_0_2 - 0.00776014109347444*G0_1_0 - 0.0253968253968255*G0_1_1 - 0.00776014109347443*G0_1_2 - 0.00776014109347444*G0_2_0 - 0.0253968253968255*G0_2_1 - 0.00776014109347444*G0_2_2; A[19] = -0.0705467372134042*G0_0_0 - 0.0246913580246913*G0_0_1 - 0.0246913580246913*G0_0_2 - 0.0705467372134042*G0_1_0 - 0.0246913580246913*G0_1_1 - 0.0246913580246913*G0_1_2 - 0.0705467372134042*G0_2_0 - 0.0246913580246913*G0_2_1 - 0.0246913580246913*G0_2_2; A[20] = 0.0529100529100532*G0_0_0 + 0.0202821869488536*G0_0_1 + 0.0202821869488535*G0_0_2 + 0.0529100529100532*G0_1_0 + 0.0202821869488536*G0_1_1 + 0.0202821869488536*G0_1_2 + 0.0529100529100532*G0_2_0 + 0.0202821869488536*G0_2_1 + 0.0202821869488536*G0_2_2; A[21] = -0.0253968253968256*G0_0_0 - 0.0077601410934744*G0_0_1 - 0.00776014109347439*G0_0_2 - 0.0253968253968256*G0_1_0 - 0.00776014109347441*G0_1_1 - 0.00776014109347439*G0_1_2 - 0.0253968253968256*G0_2_0 - 0.0077601410934744*G0_2_1 - 0.00776014109347439*G0_2_2; A[22] = 0.0183421516754852*G0_0_0 + 0.0183421516754849*G0_0_1 + 0.0183421516754849*G0_0_2 + 0.0183421516754852*G0_1_0 + 0.0183421516754848*G0_1_1 + 0.0183421516754848*G0_1_2 + 0.0183421516754852*G0_2_0 + 0.0183421516754849*G0_2_1 + 0.0183421516754848*G0_2_2; A[23] = 0.0183421516754849*G0_0_0 + 0.0183421516754853*G0_0_1 + 0.018342151675485*G0_0_2 + 0.018342151675485*G0_1_0 + 0.0183421516754853*G0_1_1 + 0.018342151675485*G0_1_2 + 0.018342151675485*G0_2_0 + 0.0183421516754853*G0_2_1 + 0.018342151675485*G0_2_2; A[24] = 0.0183421516754852*G0_0_0 + 0.0183421516754852*G0_0_1 + 0.0183421516754854*G0_0_2 + 0.0183421516754853*G0_1_0 + 0.0183421516754852*G0_1_1 + 0.0183421516754855*G0_1_2 + 0.0183421516754853*G0_2_0 + 0.0183421516754852*G0_2_1 + 0.0183421516754856*G0_2_2; A[25] = 0.0493827160493826*G0_0_0 + 0.042328042328042*G0_0_1 + 0.0423280423280421*G0_0_2 + 0.0493827160493825*G0_1_0 + 0.042328042328042*G0_1_1 + 0.0423280423280421*G0_1_2 + 0.0493827160493825*G0_2_0 + 0.042328042328042*G0_2_1 + 0.042328042328042*G0_2_2; A[26] = -0.0183421516754849*G0_0_0 - 0.0253968253968252*G0_0_1 - 0.0253968253968254*G0_0_2 - 0.018342151675485*G0_1_0 - 0.0253968253968252*G0_1_1 - 0.0253968253968254*G0_1_2 - 0.018342151675485*G0_2_0 - 0.0253968253968252*G0_2_1 - 0.0253968253968254*G0_2_2; A[27] = -0.0183421516754852*G0_0_0 - 0.0253968253968253*G0_0_1 - 0.0253968253968252*G0_0_2 - 0.0183421516754852*G0_1_0 - 0.0253968253968253*G0_1_1 - 0.0253968253968252*G0_1_2 - 0.0183421516754852*G0_2_0 - 0.0253968253968253*G0_2_1 - 0.0253968253968252*G0_2_2; A[28] = 0.042328042328042*G0_0_0 + 0.0493827160493825*G0_0_1 + 0.0423280423280422*G0_0_2 + 0.042328042328042*G0_1_0 + 0.0493827160493826*G0_1_1 + 0.0423280423280422*G0_1_2 + 0.042328042328042*G0_2_0 + 0.0493827160493825*G0_2_1 + 0.0423280423280421*G0_2_2; A[29] = -0.0253968253968251*G0_0_0 - 0.0183421516754849*G0_0_1 - 0.0253968253968253*G0_0_2 - 0.0253968253968251*G0_1_0 - 0.0183421516754848*G0_1_1 - 0.0253968253968253*G0_1_2 - 0.0253968253968251*G0_2_0 - 0.0183421516754849*G0_2_1 - 0.0253968253968254*G0_2_2; A[30] = -0.0253968253968253*G0_0_0 - 0.0183421516754853*G0_0_1 - 0.0253968253968253*G0_0_2 - 0.0253968253968253*G0_1_0 - 0.0183421516754853*G0_1_1 - 0.0253968253968253*G0_1_2 - 0.0253968253968253*G0_2_0 - 0.0183421516754853*G0_2_1 - 0.0253968253968252*G0_2_2; A[31] = 0.0423280423280421*G0_0_0 + 0.0423280423280422*G0_0_1 + 0.0493827160493826*G0_0_2 + 0.0423280423280421*G0_1_0 + 0.0423280423280422*G0_1_1 + 0.0493827160493826*G0_1_2 + 0.0423280423280421*G0_2_0 + 0.0423280423280422*G0_2_1 + 0.0493827160493826*G0_2_2; A[32] = -0.0253968253968252*G0_0_0 - 0.0253968253968253*G0_0_1 - 0.0183421516754849*G0_0_2 - 0.0253968253968252*G0_1_0 - 0.0253968253968254*G0_1_1 - 0.0183421516754849*G0_1_2 - 0.0253968253968252*G0_2_0 - 0.0253968253968253*G0_2_1 - 0.0183421516754848*G0_2_2; A[33] = -0.0253968253968253*G0_0_0 - 0.0253968253968253*G0_0_1 - 0.0183421516754849*G0_0_2 - 0.0253968253968253*G0_1_0 - 0.0253968253968252*G0_1_1 - 0.018342151675485*G0_1_2 - 0.0253968253968253*G0_2_0 - 0.0253968253968253*G0_2_1 - 0.0183421516754849*G0_2_2; A[34] = -0.0677248677248679*G0_0_0 - 0.0677248677248678*G0_0_1 - 0.067724867724868*G0_0_2 - 0.0677248677248678*G0_1_0 - 0.0677248677248679*G0_1_1 - 0.067724867724868*G0_1_2 - 0.0677248677248678*G0_2_0 - 0.0677248677248678*G0_2_1 - 0.0677248677248681*G0_2_2; A[35] = 0.00511463844797185*G0_0_0 + 0.00511463844797184*G0_0_1 + 0.00511463844797185*G0_0_2; A[36] = 0.0379188712522048*G0_0_0; A[37] = -0.0051146384479718*G0_0_1; A[38] = -0.00511463844797184*G0_0_2; A[39] = -0.00776014109347447*G0_0_1 - 0.00776014109347444*G0_0_2; A[40] = -0.00511463844797174*G0_0_1 - 0.00511463844797182*G0_0_2; A[41] = -0.00776014109347443*G0_0_1 - 0.00776014109347433*G0_0_2; A[42] = -0.0246913580246914*G0_0_0 + 0.0458553791887129*G0_0_2; A[43] = 0.0202821869488536*G0_0_0 - 0.0326278659611997*G0_0_2; A[44] = -0.00776014109347442*G0_0_0 + 0.0176366843033512*G0_0_2; A[45] = -0.0246913580246913*G0_0_0 + 0.0458553791887129*G0_0_1; A[46] = 0.0202821869488536*G0_0_0 - 0.0326278659611995*G0_0_1; A[47] = -0.00776014109347445*G0_0_0 + 0.017636684303351*G0_0_1; A[48] = 0.0077601410934745*G0_0_0 + 0.00776014109347449*G0_0_1; A[49] = 0.00511463844797171*G0_0_0 + 0.0051146384479717*G0_0_1; A[50] = 0.00776014109347442*G0_0_0 + 0.00776014109347442*G0_0_1; A[51] = 0.00776014109347446*G0_0_0 + 0.00776014109347445*G0_0_2; A[52] = 0.00511463844797175*G0_0_0 + 0.00511463844797175*G0_0_2; A[53] = 0.00776014109347445*G0_0_0 + 0.00776014109347447*G0_0_2; A[54] = -0.0253968253968256*G0_0_0 - 0.017636684303351*G0_0_1 - 0.017636684303351*G0_0_2; A[55] = 0.0529100529100531*G0_0_0 + 0.0326278659611996*G0_0_1 + 0.0326278659611995*G0_0_2; A[56] = -0.0705467372134042*G0_0_0 - 0.0458553791887129*G0_0_1 - 0.0458553791887129*G0_0_2; A[57] = 0.0493827160493828*G0_0_0 + 0.00705467372134029*G0_0_1 + 0.0070546737213405*G0_0_2; A[58] = -0.0183421516754851*G0_0_0 + 0.00705467372134041*G0_0_1 + 0.00705467372134037*G0_0_2; A[59] = -0.0183421516754848*G0_0_0 + 0.00705467372134061*G0_0_1 + 0.00705467372134052*G0_0_2; A[60] = 0.018342151675485*G0_0_0; A[61] = 0.0183421516754851*G0_0_0; A[62] = 0.0183421516754848*G0_0_0; A[63] = -0.0253968253968255*G0_0_0 - 0.00705467372134048*G0_0_1; A[64] = 0.0423280423280424*G0_0_0 - 0.00705467372134026*G0_0_1; A[65] = -0.0253968253968254*G0_0_0 - 0.00705467372134063*G0_0_1; A[66] = -0.0253968253968254*G0_0_0 - 0.00705467372134037*G0_0_2; A[67] = 0.0423280423280422*G0_0_0 - 0.00705467372134043*G0_0_2; A[68] = -0.0253968253968254*G0_0_0 - 0.00705467372134036*G0_0_2; A[69] = -0.0677248677248677*G0_0_0; A[70] = 0.00511463844797184*G0_1_0 + 0.00511463844797184*G0_1_1 + 0.00511463844797184*G0_1_2; A[71] = -0.00511463844797179*G0_1_0; A[72] = 0.0379188712522048*G0_1_1; A[73] = -0.00511463844797181*G0_1_2; A[74] = -0.0246913580246914*G0_1_1 + 0.0458553791887129*G0_1_2; A[75] = 0.0202821869488536*G0_1_1 - 0.0326278659611996*G0_1_2; A[76] = -0.00776014109347458*G0_1_1 + 0.0176366843033509*G0_1_2; A[77] = -0.00776014109347446*G0_1_0 - 0.00776014109347441*G0_1_2; A[78] = -0.00511463844797169*G0_1_0 - 0.00511463844797175*G0_1_2; A[79] = -0.00776014109347458*G0_1_0 - 0.00776014109347452*G0_1_2; A[80] = 0.0176366843033511*G0_1_0 - 0.00776014109347443*G0_1_1; A[81] = -0.0326278659611996*G0_1_0 + 0.0202821869488536*G0_1_1; A[82] = 0.0458553791887128*G0_1_0 - 0.0246913580246914*G0_1_1; A[83] = 0.00776014109347445*G0_1_0 + 0.00776014109347444*G0_1_1; A[84] = 0.00511463844797169*G0_1_0 + 0.00511463844797171*G0_1_1; A[85] = 0.00776014109347457*G0_1_0 + 0.00776014109347458*G0_1_1; A[86] = -0.017636684303351*G0_1_0 - 0.0253968253968256*G0_1_1 - 0.017636684303351*G0_1_2; A[87] = 0.0326278659611995*G0_1_0 + 0.0529100529100532*G0_1_1 + 0.0326278659611995*G0_1_2; A[88] = -0.0458553791887129*G0_1_0 - 0.0705467372134042*G0_1_1 - 0.0458553791887129*G0_1_2; A[89] = 0.00776014109347447*G0_1_1 + 0.00776014109347447*G0_1_2; A[90] = 0.0051146384479718*G0_1_1 + 0.0051146384479718*G0_1_2; A[91] = 0.00776014109347443*G0_1_1 + 0.00776014109347443*G0_1_2; A[92] = 0.00705467372134048*G0_1_0 - 0.0183421516754849*G0_1_1 + 0.00705467372134043*G0_1_2; A[93] = 0.00705467372134035*G0_1_0 + 0.0493827160493827*G0_1_1 + 0.00705467372134039*G0_1_2; A[94] = 0.00705467372134015*G0_1_0 - 0.0183421516754851*G0_1_1 + 0.00705467372134029*G0_1_2; A[95] = -0.0070546737213406*G0_1_0 - 0.0253968253968254*G0_1_1; A[96] = -0.00705467372134032*G0_1_0 + 0.0423280423280423*G0_1_1; A[97] = -0.00705467372134016*G0_1_0 - 0.0253968253968253*G0_1_1; A[98] = 0.0183421516754848*G0_1_1; A[99] = 0.0183421516754849*G0_1_1; A[100] = 0.0183421516754851*G0_1_1; A[101] = -0.0253968253968254*G0_1_1 - 0.00705467372134047*G0_1_2; A[102] = -0.0253968253968254*G0_1_1 - 0.00705467372134051*G0_1_2; A[103] = 0.0423280423280423*G0_1_1 - 0.00705467372134034*G0_1_2; A[104] = -0.0677248677248675*G0_1_1; A[105] = 0.00511463844797178*G0_2_0 + 0.00511463844797179*G0_2_1 + 0.00511463844797181*G0_2_2; A[106] = -0.00511463844797184*G0_2_0; A[107] = -0.00511463844797181*G0_2_1; A[108] = 0.0379188712522048*G0_2_2; A[109] = 0.0176366843033511*G0_2_1 - 0.00776014109347449*G0_2_2; A[110] = -0.0326278659611996*G0_2_1 + 0.0202821869488537*G0_2_2; A[111] = 0.045855379188713*G0_2_1 - 0.0246913580246914*G0_2_2; A[112] = 0.0176366843033511*G0_2_0 - 0.00776014109347452*G0_2_2; A[113] = -0.0326278659611996*G0_2_0 + 0.0202821869488537*G0_2_2; A[114] = 0.045855379188713*G0_2_0 - 0.0246913580246915*G0_2_2; A[115] = -0.00776014109347448*G0_2_0 - 0.00776014109347453*G0_2_1; A[116] = -0.00511463844797174*G0_2_0 - 0.00511463844797171*G0_2_1; A[117] = -0.00776014109347446*G0_2_0 - 0.00776014109347445*G0_2_1; A[118] = -0.0176366843033511*G0_2_0 - 0.0176366843033511*G0_2_1 - 0.0253968253968255*G0_2_2; A[119] = 0.0326278659611996*G0_2_0 + 0.0326278659611997*G0_2_1 + 0.0529100529100532*G0_2_2; A[120] = -0.045855379188713*G0_2_0 - 0.045855379188713*G0_2_1 - 0.0705467372134043*G0_2_2; A[121] = 0.00776014109347442*G0_2_0 + 0.0077601410934744*G0_2_2; A[122] = 0.00511463844797173*G0_2_0 + 0.00511463844797174*G0_2_2; A[123] = 0.00776014109347446*G0_2_0 + 0.00776014109347446*G0_2_2; A[124] = 0.0077601410934744*G0_2_1 + 0.0077601410934744*G0_2_2; A[125] = 0.00511463844797174*G0_2_1 + 0.00511463844797175*G0_2_2; A[126] = 0.00776014109347453*G0_2_1 + 0.00776014109347454*G0_2_2; A[127] = 0.00705467372134042*G0_2_0 + 0.00705467372134034*G0_2_1 - 0.0183421516754851*G0_2_2; A[128] = 0.00705467372134039*G0_2_0 + 0.00705467372134051*G0_2_1 - 0.0183421516754849*G0_2_2; A[129] = 0.00705467372134039*G0_2_0 + 0.00705467372134029*G0_2_1 + 0.0493827160493827*G0_2_2; A[130] = -0.00705467372134034*G0_2_0 - 0.0253968253968253*G0_2_2; A[131] = -0.00705467372134041*G0_2_0 - 0.0253968253968254*G0_2_2; A[132] = -0.00705467372134039*G0_2_0 + 0.0423280423280422*G0_2_2; A[133] = -0.00705467372134036*G0_2_1 - 0.0253968253968253*G0_2_2; A[134] = -0.00705467372134038*G0_2_1 - 0.0253968253968254*G0_2_2; A[135] = -0.00705467372134029*G0_2_1 + 0.0423280423280423*G0_2_2; A[136] = 0.018342151675485*G0_2_2; A[137] = 0.0183421516754851*G0_2_2; A[138] = 0.018342151675485*G0_2_2; A[139] = -0.0677248677248676*G0_2_2; A[140] = 0.00776014109347431*G0_1_0 + 0.00776014109347433*G0_1_1 + 0.00776014109347432*G0_1_2 + 0.00776014109347443*G0_2_0 + 0.00776014109347443*G0_2_1 + 0.00776014109347443*G0_2_2; A[141] = -0.00776014109347447*G0_1_0 - 0.00776014109347444*G0_2_0; A[142] = -0.0246913580246914*G0_1_1 + 0.0458553791887129*G0_2_1; A[143] = 0.0176366843033511*G0_1_2 - 0.00776014109347449*G0_2_2; A[144] = 0.203174603174603*G0_1_1 + 0.0790123456790126*G0_1_2 + 0.0790123456790126*G0_2_1 + 0.158024691358026*G0_2_2; A[145] = -0.118518518518519*G0_1_1 + 0.0423280423280421*G0_1_2 - 0.0310405643738979*G0_2_1 - 0.0902998236331577*G0_2_2; A[146] = 0.0451499118165789*G0_1_1 - 0.0338624338624336*G0_1_2 + 0.0112874779541446*G0_2_1 + 0.0451499118165786*G0_2_2; A[147] = 0.0225749559082894*G0_1_0 + 0.0112874779541447*G0_1_2 + 0.0112874779541446*G0_2_0 + 0.0112874779541448*G0_2_2; A[148] = 0.0169312169312166*G0_1_0 + 0.0141093474426807*G0_1_2 + 0.00282186948853615*G0_2_0 + 0.00282186948853593*G0_2_2; A[149] = 0.0451499118165789*G0_1_0 + 0.033862433862434*G0_1_2 + 0.0112874779541446*G0_2_0 + 0.0112874779541447*G0_2_2; A[150] = 0.0338624338624338*G0_1_0 + 0.0112874779541447*G0_1_1 + 0.0451499118165788*G0_2_0 + 0.0112874779541448*G0_2_1; A[151] = -0.0592592592592594*G0_1_0 - 0.0423280423280426*G0_1_1 - 0.0902998236331578*G0_2_0 - 0.031040564373898*G0_2_1; A[152] = 0.0790123456790126*G0_1_0 + 0.101587301587302*G0_1_1 + 0.158024691358025*G0_2_0 + 0.0790123456790126*G0_2_1; A[153] = -0.0225749559082892*G0_1_0 - 0.0225749559082893*G0_1_1 - 0.0112874779541444*G0_1_2 - 0.0112874779541446*G0_2_0 - 0.0112874779541446*G0_2_1; A[154] = -0.0169312169312168*G0_1_0 - 0.0169312169312168*G0_1_1 - 0.00282186948853633*G0_1_2 - 0.00282186948853641*G0_2_0 - 0.00282186948853637*G0_2_1; A[155] = -0.0451499118165788*G0_1_0 - 0.0451499118165789*G0_1_1 - 0.0112874779541447*G0_1_2 - 0.0112874779541445*G0_2_0 - 0.0112874779541446*G0_2_1; A[156] = -0.0338624338624339*G0_1_0 - 0.022574955908289*G0_1_1 - 0.0338624338624339*G0_1_2 - 0.0451499118165787*G0_2_0 - 0.033862433862434*G0_2_1 - 0.0451499118165787*G0_2_2; A[157] = 0.0592592592592594*G0_1_0 + 0.0169312169312167*G0_1_1 + 0.0592592592592594*G0_1_2 + 0.0902998236331577*G0_2_0 + 0.0592592592592596*G0_2_1 + 0.0902998236331577*G0_2_2; A[158] = -0.0790123456790126*G0_1_0 + 0.0225749559082893*G0_1_1 - 0.0790123456790126*G0_1_2 - 0.158024691358026*G0_2_0 - 0.079012345679013*G0_2_1 - 0.158024691358026*G0_2_2; A[159] = -0.0112874779541448*G0_1_1 - 0.0112874779541448*G0_1_2 - 0.0112874779541447*G0_2_1 - 0.0112874779541447*G0_2_2; A[160] = -0.00282186948853621*G0_1_1 - 0.00282186948853615*G0_1_2 - 0.00282186948853615*G0_2_1 - 0.00282186948853608*G0_2_2; A[161] = -0.0112874779541446*G0_1_1 - 0.0112874779541446*G0_1_2 - 0.0112874779541447*G0_2_1 - 0.0112874779541447*G0_2_2; A[162] = -0.0677248677248677*G0_1_0 + 0.0225749559082892*G0_1_1 - 0.0338624338624341*G0_1_2 - 0.0225749559082894*G0_2_0 + 0.0112874779541446*G0_2_1 - 0.0225749559082894*G0_2_2; A[163] = 0.203174603174603*G0_1_0 - 0.0677248677248675*G0_1_1 + 0.101587301587302*G0_1_2 + 0.112874779541446*G0_2_0 + 0.0112874779541444*G0_2_1 + 0.112874779541446*G0_2_2; A[164] = -0.0677248677248675*G0_1_0 + 0.0677248677248678*G0_1_1 - 0.0338624338624338*G0_1_2 - 0.0225749559082896*G0_2_0 + 0.0112874779541444*G0_2_1 - 0.0225749559082895*G0_2_2; A[165] = 0.0677248677248676*G0_1_0 + 0.0902998236331568*G0_1_1 + 0.0338624338624338*G0_1_2 + 0.0225749559082888*G0_2_0 + 0.0338624338624339*G0_2_1; A[166] = -0.203174603174603*G0_1_0 - 0.270899470899471*G0_1_1 - 0.101587301587302*G0_1_2 - 0.112874779541446*G0_2_0 - 0.101587301587302*G0_2_1; A[167] = 0.0677248677248677*G0_1_0 + 0.135449735449736*G0_1_1 + 0.0338624338624338*G0_1_2 + 0.0225749559082897*G0_2_0 + 0.0338624338624343*G0_2_1; A[168] = -0.0225749559082893*G0_1_1 - 0.0112874779541444*G0_1_2 - 0.0112874779541452*G0_2_1; A[169] = -0.0225749559082893*G0_1_1 - 0.0112874779541447*G0_1_2 - 0.0112874779541447*G0_2_1; A[170] = -0.0677248677248678*G0_1_1 - 0.0112874779541447*G0_1_2 - 0.0112874779541445*G0_2_1; A[171] = 0.0451499118165788*G0_1_1 + 0.0338624338624339*G0_1_2 + 0.0338624338624341*G0_2_1 + 0.022574955908289*G0_2_2; A[172] = 0.0451499118165786*G0_1_1 + 0.0338624338624339*G0_1_2 + 0.0338624338624339*G0_2_1 + 0.022574955908289*G0_2_2; A[173] = -0.135449735449736*G0_1_1 - 0.101587301587302*G0_1_2 - 0.101587301587302*G0_2_1 - 0.112874779541446*G0_2_2; A[174] = 0.0902998236331569*G0_1_1; A[175] = 0.00511463844797182*G0_1_0 + 0.00511463844797182*G0_1_1 + 0.00511463844797184*G0_1_2 + 0.00511463844797174*G0_2_0 + 0.00511463844797177*G0_2_1 + 0.00511463844797177*G0_2_2; A[176] = -0.00511463844797175*G0_1_0 - 0.00511463844797182*G0_2_0; A[177] = 0.0202821869488536*G0_1_1 - 0.0326278659611996*G0_2_1; A[178] = -0.0326278659611996*G0_1_2 + 0.0202821869488537*G0_2_2; A[179] = -0.118518518518519*G0_1_1 - 0.0310405643738979*G0_1_2 + 0.0423280423280421*G0_2_1 - 0.0902998236331577*G0_2_2; A[180] = 0.249735449735451*G0_1_1 + 0.0825396825396829*G0_1_2 + 0.0825396825396829*G0_2_1 + 0.249735449735451*G0_2_2; A[181] = -0.0902998236331578*G0_1_1 + 0.0423280423280421*G0_1_2 - 0.0310405643738977*G0_2_1 - 0.118518518518519*G0_2_2; A[182] = 0.0169312169312167*G0_1_0 + 0.00282186948853615*G0_1_2 + 0.0141093474426809*G0_2_0 + 0.00282186948853596*G0_2_2; A[183] = -0.0211640211640206*G0_1_0 - 0.0105820105820106*G0_1_2 - 0.0105820105820106*G0_2_0 - 0.0134038800705465*G0_2_2; A[184] = -0.0902998236331577*G0_1_0 - 0.0592592592592593*G0_1_2 - 0.0310405643738977*G0_2_0 - 0.0423280423280424*G0_2_2; A[185] = 0.0141093474426808*G0_1_0 + 0.00282186948853617*G0_1_1 + 0.0169312169312166*G0_2_0 + 0.002821869488536*G0_2_1; A[186] = -0.0105820105820105*G0_1_0 - 0.0134038800705467*G0_1_1 - 0.0211640211640206*G0_2_0 - 0.0105820105820105*G0_2_1; A[187] = -0.031040564373898*G0_1_0 - 0.0423280423280424*G0_1_1 - 0.0902998236331577*G0_2_0 - 0.0592592592592593*G0_2_1; A[188] = -0.0169312169312169*G0_1_0 - 0.0169312169312169*G0_1_1 - 0.0141093474426809*G0_1_2 - 0.0141093474426808*G0_2_0 - 0.0141093474426809*G0_2_1 - 0.0112874779541446*G0_2_2; A[189] = 0.0211640211640209*G0_1_0 + 0.0211640211640209*G0_1_1 + 0.0105820105820105*G0_1_2 + 0.0105820105820109*G0_2_0 + 0.010582010582011*G0_2_1 - 0.00282186948853612*G0_2_2; A[190] = 0.0902998236331577*G0_1_0 + 0.0902998236331578*G0_1_1 + 0.0310405643738981*G0_1_2 + 0.0310405643738977*G0_2_0 + 0.0310405643738977*G0_2_1 - 0.0112874779541447*G0_2_2; A[191] = -0.0141093474426808*G0_1_0 - 0.0112874779541447*G0_1_1 - 0.0141093474426808*G0_1_2 - 0.0169312169312168*G0_2_0 - 0.0141093474426806*G0_2_1 - 0.0169312169312168*G0_2_2; A[192] = 0.0105820105820105*G0_1_0 - 0.0028218694885361*G0_1_1 + 0.0105820105820105*G0_1_2 + 0.0211640211640205*G0_2_0 + 0.0105820105820101*G0_2_1 + 0.0211640211640206*G0_2_2; A[193] = 0.0310405643738979*G0_1_0 - 0.0112874779541446*G0_1_1 + 0.0310405643738979*G0_1_2 + 0.0902998236331577*G0_2_0 + 0.0310405643738983*G0_2_1 + 0.0902998236331577*G0_2_2; A[194] = -0.00282186948853615*G0_1_1 - 0.00282186948853612*G0_1_2 - 0.00282186948853622*G0_2_1 - 0.00282186948853618*G0_2_2; A[195] = -0.00917107583774254*G0_1_1 - 0.00917107583774254*G0_1_2 - 0.00917107583774259*G0_2_1 - 0.00917107583774262*G0_2_2; A[196] = -0.00282186948853617*G0_1_1 - 0.0028218694885362*G0_1_2 - 0.002821869488536*G0_2_1 - 0.00282186948853601*G0_2_2; A[197] = -0.0846560846560849*G0_1_0 - 0.0169312169312168*G0_1_1 - 0.019753086419753*G0_1_2 - 0.0846560846560847*G0_2_0 - 0.019753086419753*G0_2_1 - 0.016931216931217*G0_2_2; A[198] = 0.050793650793651*G0_1_0 + 0.118518518518518*G0_1_1 - 0.0423280423280426*G0_1_2 + 0.186243386243387*G0_2_0 + 0.0931216931216937*G0_2_1 - 0.0846560846560845*G0_2_2; A[199] = 0.186243386243386*G0_1_0 - 0.0846560846560847*G0_1_1 + 0.0931216931216931*G0_1_2 + 0.0507936507936512*G0_2_0 - 0.0423280423280424*G0_2_1 + 0.118518518518519*G0_2_2; A[200] = 0.0846560846560849*G0_1_0 + 0.0677248677248681*G0_1_1 + 0.0649029982363317*G0_1_2 + 0.0846560846560853*G0_2_0 + 0.0649029982363317*G0_2_1 + 0.0677248677248682*G0_2_2; A[201] = -0.050793650793651*G0_1_0 + 0.0677248677248675*G0_1_1 - 0.0931216931216935*G0_1_2 - 0.186243386243387*G0_2_0 - 0.093121693121693*G0_2_1 - 0.270899470899471*G0_2_2; A[202] = -0.186243386243386*G0_1_0 - 0.270899470899471*G0_1_1 - 0.093121693121693*G0_1_2 - 0.0507936507936511*G0_2_0 - 0.0931216931216939*G0_2_1 + 0.0677248677248673*G0_2_2; A[203] = 0.0169312169312173*G0_1_1 + 0.0197530864197532*G0_1_2 + 0.0197530864197541*G0_2_1 + 0.02257495590829*G0_2_2; A[204] = 0.0169312169312169*G0_1_1 + 0.0197530864197532*G0_1_2 + 0.019753086419753*G0_2_1 + 0.0225749559082892*G0_2_2; A[205] = 0.0846560846560847*G0_1_1 + 0.0423280423280422*G0_1_2 + 0.0423280423280424*G0_2_1 + 0.0225749559082886*G0_2_2; A[206] = 0.0225749559082893*G0_1_1 + 0.0197530864197532*G0_1_2 + 0.0197530864197531*G0_2_1 + 0.0169312169312173*G0_2_2; A[207] = 0.0225749559082893*G0_1_1 + 0.0197530864197531*G0_1_2 + 0.0197530864197531*G0_2_1 + 0.0169312169312171*G0_2_2; A[208] = 0.0225749559082892*G0_1_1 + 0.0423280423280424*G0_1_2 + 0.0423280423280425*G0_2_1 + 0.0846560846560843*G0_2_2; A[209] = -0.135449735449736*G0_1_1 - 0.112874779541446*G0_1_2 - 0.112874779541448*G0_2_1 - 0.135449735449736*G0_2_2; A[210] = 0.00776014109347439*G0_1_0 + 0.00776014109347441*G0_1_1 + 0.00776014109347439*G0_1_2 + 0.00776014109347442*G0_2_0 + 0.00776014109347441*G0_2_1 + 0.00776014109347438*G0_2_2; A[211] = -0.00776014109347443*G0_1_0 - 0.00776014109347433*G0_2_0; A[212] = -0.00776014109347458*G0_1_1 + 0.0176366843033509*G0_2_1; A[213] = 0.045855379188713*G0_1_2 - 0.0246913580246914*G0_2_2; A[214] = 0.0451499118165789*G0_1_1 + 0.0112874779541446*G0_1_2 - 0.0338624338624337*G0_2_1 + 0.0451499118165786*G0_2_2; A[215] = -0.0902998236331578*G0_1_1 - 0.0310405643738977*G0_1_2 + 0.0423280423280421*G0_2_1 - 0.118518518518519*G0_2_2; A[216] = 0.158024691358026*G0_1_1 + 0.0790123456790127*G0_1_2 + 0.0790123456790127*G0_2_1 + 0.203174603174603*G0_2_2; A[217] = 0.0451499118165789*G0_1_0 + 0.0112874779541448*G0_1_2 + 0.033862433862434*G0_2_0 + 0.011287477954145*G0_2_2; A[218] = -0.0902998236331579*G0_1_0 - 0.031040564373898*G0_1_2 - 0.0592592592592595*G0_2_0 - 0.0423280423280428*G0_2_2; A[219] = 0.158024691358026*G0_1_0 + 0.0790123456790127*G0_1_2 + 0.0790123456790127*G0_2_0 + 0.101587301587302*G0_2_2; A[220] = 0.0112874779541447*G0_1_0 + 0.0112874779541448*G0_1_1 + 0.0225749559082894*G0_2_0 + 0.0112874779541449*G0_2_1; A[221] = 0.00282186948853624*G0_1_0 + 0.00282186948853603*G0_1_1 + 0.0169312169312168*G0_2_0 + 0.0141093474426806*G0_2_1; A[222] = 0.0112874779541446*G0_1_0 + 0.0112874779541448*G0_1_1 + 0.0451499118165785*G0_2_0 + 0.033862433862434*G0_2_1; A[223] = -0.0451499118165788*G0_1_0 - 0.0451499118165788*G0_1_1 - 0.0338624338624338*G0_1_2 - 0.033862433862434*G0_2_0 - 0.0338624338624339*G0_2_1 - 0.0225749559082891*G0_2_2; A[224] = 0.0902998236331578*G0_1_0 + 0.090299823633158*G0_1_1 + 0.0592592592592595*G0_1_2 + 0.0592592592592594*G0_2_0 + 0.0592592592592595*G0_2_1 + 0.0169312169312168*G0_2_2; A[225] = -0.158024691358026*G0_1_0 - 0.158024691358026*G0_1_1 - 0.079012345679013*G0_1_2 - 0.0790123456790127*G0_2_0 - 0.0790123456790127*G0_2_1 + 0.0225749559082893*G0_2_2; A[226] = -0.0112874779541448*G0_1_0 - 0.0112874779541447*G0_1_2 - 0.0225749559082894*G0_2_0 - 0.0112874779541446*G0_2_1 - 0.0225749559082893*G0_2_2; A[227] = -0.00282186948853619*G0_1_0 - 0.00282186948853617*G0_1_2 - 0.0169312169312168*G0_2_0 - 0.00282186948853612*G0_2_1 - 0.0169312169312168*G0_2_2; A[228] = -0.0112874779541446*G0_1_0 - 0.0112874779541446*G0_1_2 - 0.0451499118165786*G0_2_0 - 0.0112874779541446*G0_2_1 - 0.0451499118165786*G0_2_2; A[229] = -0.0112874779541449*G0_1_1 - 0.0112874779541449*G0_1_2 - 0.0112874779541448*G0_2_1 - 0.0112874779541448*G0_2_2; A[230] = -0.00282186948853618*G0_1_1 - 0.0028218694885362*G0_1_2 - 0.00282186948853617*G0_2_1 - 0.00282186948853618*G0_2_2; A[231] = -0.0112874779541448*G0_1_1 - 0.0112874779541448*G0_1_2 - 0.0112874779541449*G0_2_1 - 0.0112874779541449*G0_2_2; A[232] = -0.0225749559082894*G0_1_0 - 0.0225749559082893*G0_1_1 + 0.0112874779541447*G0_1_2 - 0.067724867724868*G0_2_0 - 0.0338624338624339*G0_2_1 + 0.0225749559082895*G0_2_2; A[233] = -0.022574955908289*G0_1_0 - 0.0225749559082891*G0_1_1 + 0.011287477954145*G0_1_2 - 0.0677248677248676*G0_2_0 - 0.0338624338624341*G0_2_1 + 0.0677248677248678*G0_2_2; A[234] = 0.112874779541446*G0_1_0 + 0.112874779541446*G0_1_1 + 0.0112874779541445*G0_1_2 + 0.203174603174603*G0_2_0 + 0.101587301587302*G0_2_1 - 0.0677248677248681*G0_2_2; A[235] = 0.0225749559082896*G0_1_0 + 0.0338624338624344*G0_1_2 + 0.0677248677248677*G0_2_0 + 0.0338624338624339*G0_2_1 + 0.0902998236331572*G0_2_2; A[236] = 0.022574955908289*G0_1_0 + 0.0338624338624339*G0_1_2 + 0.0677248677248676*G0_2_0 + 0.0338624338624337*G0_2_1 + 0.135449735449735*G0_2_2; A[237] = -0.112874779541446*G0_1_0 - 0.101587301587302*G0_1_2 - 0.203174603174603*G0_2_0 - 0.101587301587301*G0_2_1 - 0.270899470899471*G0_2_2; A[238] = 0.0225749559082895*G0_1_1 + 0.0338624338624345*G0_1_2 + 0.0338624338624337*G0_2_1 + 0.0451499118165787*G0_2_2; A[239] = 0.0225749559082892*G0_1_1 + 0.0338624338624341*G0_1_2 + 0.0338624338624338*G0_2_1 + 0.0451499118165789*G0_2_2; A[240] = -0.112874779541446*G0_1_1 - 0.101587301587302*G0_1_2 - 0.101587301587302*G0_2_1 - 0.135449735449736*G0_2_2; A[241] = -0.0112874779541448*G0_1_2 - 0.0112874779541446*G0_2_1 - 0.0225749559082896*G0_2_2; A[242] = -0.0112874779541449*G0_1_2 - 0.0112874779541445*G0_2_1 - 0.0225749559082897*G0_2_2; A[243] = -0.0112874779541449*G0_1_2 - 0.0112874779541447*G0_2_1 - 0.0677248677248677*G0_2_2; A[244] = 0.0902998236331576*G0_2_2; A[245] = 0.00776014109347427*G0_0_0 + 0.0077601410934743*G0_0_1 + 0.00776014109347429*G0_0_2 + 0.00776014109347443*G0_2_0 + 0.00776014109347443*G0_2_1 + 0.00776014109347443*G0_2_2; A[246] = -0.0246913580246914*G0_0_0 + 0.0458553791887129*G0_2_0; A[247] = -0.00776014109347446*G0_0_1 - 0.00776014109347441*G0_2_1; A[248] = 0.0176366843033511*G0_0_2 - 0.00776014109347452*G0_2_2; A[249] = 0.0225749559082894*G0_0_1 + 0.0112874779541446*G0_0_2 + 0.0112874779541447*G0_2_1 + 0.0112874779541448*G0_2_2; A[250] = 0.0169312169312167*G0_0_1 + 0.0141093474426809*G0_0_2 + 0.00282186948853615*G0_2_1 + 0.00282186948853596*G0_2_2; A[251] = 0.0451499118165789*G0_0_1 + 0.033862433862434*G0_0_2 + 0.0112874779541448*G0_2_1 + 0.011287477954145*G0_2_2; A[252] = 0.203174603174603*G0_0_0 + 0.0790123456790124*G0_0_2 + 0.0790123456790124*G0_2_0 + 0.158024691358026*G0_2_2; A[253] = -0.118518518518519*G0_0_0 + 0.0423280423280422*G0_0_2 - 0.0310405643738979*G0_2_0 - 0.0902998236331578*G0_2_2; A[254] = 0.0451499118165789*G0_0_0 - 0.0338624338624337*G0_0_2 + 0.0112874779541448*G0_2_0 + 0.045149911816579*G0_2_2; A[255] = 0.101587301587302*G0_0_0 + 0.0790123456790125*G0_0_1 + 0.0790123456790126*G0_2_0 + 0.158024691358026*G0_2_1; A[256] = -0.0423280423280425*G0_0_0 - 0.0592592592592595*G0_0_1 - 0.0310405643738979*G0_2_0 - 0.0902998236331577*G0_2_1; A[257] = 0.0112874779541446*G0_0_0 + 0.033862433862434*G0_0_1 + 0.0112874779541448*G0_2_0 + 0.0451499118165788*G0_2_1; A[258] = -0.0225749559082893*G0_0_0 - 0.0225749559082893*G0_0_1 - 0.0112874779541443*G0_0_2 - 0.0112874779541445*G0_2_0 - 0.0112874779541445*G0_2_1; A[259] = -0.0169312169312165*G0_0_0 - 0.0169312169312164*G0_0_1 - 0.00282186948853633*G0_0_2 - 0.00282186948853623*G0_2_0 - 0.00282186948853618*G0_2_1; A[260] = -0.0451499118165789*G0_0_0 - 0.0451499118165789*G0_0_1 - 0.0112874779541447*G0_0_2 - 0.0112874779541448*G0_2_0 - 0.0112874779541448*G0_2_1; A[261] = -0.0112874779541447*G0_0_0 - 0.0112874779541446*G0_0_2 - 0.0112874779541446*G0_2_0 - 0.0112874779541446*G0_2_2; A[262] = -0.00282186948853622*G0_0_0 - 0.00282186948853616*G0_0_2 - 0.00282186948853608*G0_2_0 - 0.00282186948853603*G0_2_2; A[263] = -0.0112874779541446*G0_0_0 - 0.0112874779541447*G0_0_2 - 0.0112874779541448*G0_2_0 - 0.0112874779541448*G0_2_2; A[264] = -0.022574955908289*G0_0_0 - 0.033862433862434*G0_0_1 - 0.0338624338624339*G0_0_2 - 0.0338624338624339*G0_2_0 - 0.0451499118165786*G0_2_1 - 0.0451499118165786*G0_2_2; A[265] = 0.0169312169312167*G0_0_0 + 0.059259259259259*G0_0_1 + 0.059259259259259*G0_0_2 + 0.0592592592592595*G0_2_0 + 0.0902998236331574*G0_2_1 + 0.0902998236331573*G0_2_2; A[266] = 0.0225749559082893*G0_0_0 - 0.0790123456790124*G0_0_1 - 0.0790123456790124*G0_0_2 - 0.0790123456790129*G0_2_0 - 0.158024691358026*G0_2_1 - 0.158024691358026*G0_2_2; A[267] = -0.0677248677248682*G0_0_0 + 0.203174603174603*G0_0_1 + 0.101587301587301*G0_0_2 + 0.0112874779541444*G0_2_0 + 0.112874779541446*G0_2_1 + 0.112874779541446*G0_2_2; A[268] = 0.0225749559082894*G0_0_0 - 0.0677248677248678*G0_0_1 - 0.0338624338624338*G0_0_2 + 0.0112874779541446*G0_2_0 - 0.0225749559082894*G0_2_1 - 0.0225749559082892*G0_2_2; A[269] = 0.0677248677248677*G0_0_0 - 0.067724867724868*G0_0_1 - 0.0338624338624342*G0_0_2 + 0.0112874779541451*G0_2_0 - 0.022574955908289*G0_2_1 - 0.0225749559082892*G0_2_2; A[270] = -0.0225749559082891*G0_0_0 - 0.0112874779541443*G0_0_2 - 0.0112874779541447*G0_2_0; A[271] = -0.0225749559082895*G0_0_0 - 0.0112874779541447*G0_0_2 - 0.0112874779541447*G0_2_0; A[272] = -0.0677248677248676*G0_0_0 - 0.0112874779541451*G0_0_2 - 0.011287477954145*G0_2_0; A[273] = 0.0902998236331567*G0_0_0 + 0.0677248677248678*G0_0_1 + 0.0338624338624342*G0_0_2 + 0.0338624338624336*G0_2_0 + 0.022574955908289*G0_2_1; A[274] = -0.270899470899471*G0_0_0 - 0.203174603174603*G0_0_1 - 0.101587301587301*G0_0_2 - 0.101587301587302*G0_2_0 - 0.112874779541446*G0_2_1; A[275] = 0.135449735449736*G0_0_0 + 0.067724867724868*G0_0_1 + 0.0338624338624335*G0_0_2 + 0.0338624338624342*G0_2_0 + 0.022574955908289*G0_2_1; A[276] = 0.0451499118165784*G0_0_0 + 0.0338624338624337*G0_0_2 + 0.0338624338624338*G0_2_0 + 0.0225749559082892*G0_2_2; A[277] = -0.135449735449735*G0_0_0 - 0.101587301587301*G0_0_2 - 0.101587301587302*G0_2_0 - 0.112874779541446*G0_2_2; A[278] = 0.0451499118165786*G0_0_0 + 0.0338624338624338*G0_0_2 + 0.033862433862434*G0_2_0 + 0.0225749559082893*G0_2_2; A[279] = 0.0902998236331571*G0_0_0; A[280] = 0.00511463844797186*G0_0_0 + 0.00511463844797183*G0_0_1 + 0.00511463844797185*G0_0_2 + 0.00511463844797174*G0_2_0 + 0.00511463844797174*G0_2_1 + 0.00511463844797177*G0_2_2; A[281] = 0.0202821869488536*G0_0_0 - 0.0326278659611997*G0_2_0; A[282] = -0.00511463844797169*G0_0_1 - 0.00511463844797175*G0_2_1; A[283] = -0.0326278659611996*G0_0_2 + 0.0202821869488537*G0_2_2; A[284] = 0.0169312169312166*G0_0_1 + 0.00282186948853615*G0_0_2 + 0.0141093474426807*G0_2_1 + 0.00282186948853593*G0_2_2; A[285] = -0.0211640211640205*G0_0_1 - 0.0105820105820106*G0_0_2 - 0.0105820105820106*G0_2_1 - 0.0134038800705465*G0_2_2; A[286] = -0.0902998236331579*G0_0_1 - 0.0592592592592595*G0_0_2 - 0.031040564373898*G0_2_1 - 0.0423280423280428*G0_2_2; A[287] = -0.118518518518519*G0_0_0 - 0.0310405643738979*G0_0_2 + 0.0423280423280421*G0_2_0 - 0.0902998236331578*G0_2_2; A[288] = 0.249735449735451*G0_0_0 + 0.0825396825396829*G0_0_2 + 0.0825396825396829*G0_2_0 + 0.249735449735451*G0_2_2; A[289] = -0.0902998236331578*G0_0_0 + 0.0423280423280422*G0_0_2 - 0.0310405643738979*G0_2_0 - 0.118518518518519*G0_2_2; A[290] = -0.0423280423280425*G0_0_0 - 0.0310405643738979*G0_0_1 - 0.0592592592592595*G0_2_0 - 0.0902998236331579*G0_2_1; A[291] = -0.0134038800705468*G0_0_0 - 0.0105820105820104*G0_0_1 - 0.0105820105820106*G0_2_0 - 0.0211640211640206*G0_2_1; A[292] = 0.00282186948853614*G0_0_0 + 0.0141093474426805*G0_0_1 + 0.00282186948853598*G0_2_0 + 0.0169312169312165*G0_2_1; A[293] = -0.0169312169312168*G0_0_0 - 0.0169312169312167*G0_0_1 - 0.0141093474426808*G0_0_2 - 0.014109347442681*G0_2_0 - 0.0141093474426809*G0_2_1 - 0.0112874779541447*G0_2_2; A[294] = 0.0211640211640205*G0_0_0 + 0.0211640211640204*G0_0_1 + 0.0105820105820104*G0_0_2 + 0.0105820105820109*G0_2_0 + 0.0105820105820108*G0_2_1 - 0.00282186948853586*G0_2_2; A[295] = 0.0902998236331579*G0_0_0 + 0.0902998236331579*G0_0_1 + 0.0310405643738983*G0_0_2 + 0.031040564373898*G0_2_0 + 0.0310405643738979*G0_2_1 - 0.0112874779541449*G0_2_2; A[296] = -0.00282186948853615*G0_0_0 - 0.00282186948853623*G0_0_2 - 0.00282186948853634*G0_2_0 - 0.00282186948853637*G0_2_2; A[297] = -0.00917107583774225*G0_0_0 - 0.00917107583774232*G0_0_2 - 0.00917107583774249*G0_2_0 - 0.00917107583774253*G0_2_2; A[298] = -0.00282186948853616*G0_0_0 - 0.0028218694885361*G0_0_2 - 0.00282186948853598*G0_2_0 - 0.00282186948853597*G0_2_2; A[299] = -0.0112874779541448*G0_0_0 - 0.0141093474426807*G0_0_1 - 0.0141093474426808*G0_0_2 - 0.0141093474426807*G0_2_0 - 0.016931216931217*G0_2_1 - 0.016931216931217*G0_2_2; A[300] = -0.00282186948853612*G0_0_0 + 0.0105820105820106*G0_0_1 + 0.0105820105820107*G0_0_2 + 0.0105820105820102*G0_2_0 + 0.0211640211640209*G0_2_1 + 0.0211640211640209*G0_2_2; A[301] = -0.0112874779541446*G0_0_0 + 0.0310405643738979*G0_0_1 + 0.0310405643738979*G0_0_2 + 0.0310405643738983*G0_2_0 + 0.0902998236331578*G0_2_1 + 0.0902998236331578*G0_2_2; A[302] = 0.118518518518519*G0_0_0 + 0.0507936507936509*G0_0_1 - 0.0423280423280424*G0_0_2 + 0.0931216931216933*G0_2_0 + 0.186243386243386*G0_2_1 - 0.084656084656085*G0_2_2; A[303] = -0.0169312169312171*G0_0_0 - 0.0846560846560847*G0_0_1 - 0.0197530864197533*G0_0_2 - 0.0197530864197531*G0_2_0 - 0.0846560846560847*G0_2_1 - 0.0169312169312172*G0_2_2; A[304] = -0.0846560846560844*G0_0_0 + 0.186243386243387*G0_0_1 + 0.0931216931216938*G0_0_2 - 0.0423280423280429*G0_2_0 + 0.0507936507936505*G0_2_1 + 0.118518518518519*G0_2_2; A[305] = 0.0169312169312167*G0_0_0 + 0.0197530864197529*G0_0_2 + 0.0197530864197532*G0_2_0 + 0.0225749559082897*G0_2_2; A[306] = 0.0169312169312171*G0_0_0 + 0.0197530864197528*G0_0_2 + 0.0197530864197531*G0_2_0 + 0.022574955908289*G0_2_2; A[307] = 0.0846560846560844*G0_0_0 + 0.0423280423280429*G0_0_2 + 0.0423280423280429*G0_2_0 + 0.0225749559082896*G0_2_2; A[308] = 0.0677248677248677*G0_0_0 + 0.0846560846560843*G0_0_1 + 0.0649029982363311*G0_0_2 + 0.0649029982363318*G0_2_0 + 0.0846560846560848*G0_2_1 + 0.067724867724868*G0_2_2; A[309] = 0.0677248677248681*G0_0_0 - 0.0507936507936508*G0_0_1 - 0.0931216931216934*G0_0_2 - 0.093121693121693*G0_2_0 - 0.186243386243386*G0_2_1 - 0.270899470899472*G0_2_2; A[310] = -0.270899470899471*G0_0_0 - 0.186243386243387*G0_0_1 - 0.0931216931216927*G0_0_2 - 0.0931216931216937*G0_2_0 - 0.0507936507936505*G0_2_1 + 0.067724867724868*G0_2_2; A[311] = 0.0225749559082894*G0_0_0 + 0.0197530864197533*G0_0_2 + 0.0197530864197536*G0_2_0 + 0.0169312169312171*G0_2_2; A[312] = 0.0225749559082892*G0_0_0 + 0.0423280423280425*G0_0_2 + 0.0423280423280423*G0_2_0 + 0.0846560846560851*G0_2_2; A[313] = 0.0225749559082891*G0_0_0 + 0.0197530864197535*G0_0_2 + 0.0197530864197532*G0_2_0 + 0.0169312169312173*G0_2_2; A[314] = -0.135449735449736*G0_0_0 - 0.112874779541447*G0_0_2 - 0.112874779541446*G0_2_0 - 0.135449735449736*G0_2_2; A[315] = 0.00776014109347439*G0_0_0 + 0.00776014109347441*G0_0_1 + 0.00776014109347439*G0_0_2 + 0.00776014109347442*G0_2_0 + 0.00776014109347441*G0_2_1 + 0.00776014109347436*G0_2_2; A[316] = -0.00776014109347442*G0_0_0 + 0.0176366843033512*G0_2_0; A[317] = -0.00776014109347459*G0_0_1 - 0.00776014109347452*G0_2_1; A[318] = 0.045855379188713*G0_0_2 - 0.0246913580246915*G0_2_2; A[319] = 0.0451499118165789*G0_0_1 + 0.0112874779541446*G0_0_2 + 0.033862433862434*G0_2_1 + 0.0112874779541447*G0_2_2; A[320] = -0.0902998236331577*G0_0_1 - 0.0310405643738977*G0_0_2 - 0.0592592592592593*G0_2_1 - 0.0423280423280424*G0_2_2; A[321] = 0.158024691358026*G0_0_1 + 0.0790123456790127*G0_0_2 + 0.0790123456790127*G0_2_1 + 0.101587301587302*G0_2_2; A[322] = 0.0451499118165789*G0_0_0 + 0.0112874779541448*G0_0_2 - 0.0338624338624337*G0_2_0 + 0.045149911816579*G0_2_2; A[323] = -0.0902998236331578*G0_0_0 - 0.031040564373898*G0_0_2 + 0.0423280423280422*G0_2_0 - 0.118518518518519*G0_2_2; A[324] = 0.158024691358026*G0_0_0 + 0.0790123456790127*G0_0_2 + 0.0790123456790127*G0_2_0 + 0.203174603174604*G0_2_2; A[325] = 0.0112874779541447*G0_0_0 + 0.0112874779541448*G0_0_1 + 0.033862433862434*G0_2_0 + 0.0451499118165791*G0_2_1; A[326] = 0.00282186948853622*G0_0_0 + 0.00282186948853601*G0_0_1 + 0.0141093474426808*G0_2_0 + 0.0169312169312166*G0_2_1; A[327] = 0.0112874779541446*G0_0_0 + 0.0112874779541448*G0_0_1 + 0.0112874779541446*G0_2_0 + 0.0225749559082895*G0_2_1; A[328] = -0.0451499118165788*G0_0_0 - 0.0451499118165788*G0_0_1 - 0.0338624338624338*G0_0_2 - 0.0338624338624338*G0_2_0 - 0.0338624338624338*G0_2_1 - 0.022574955908289*G0_2_2; A[329] = 0.0902998236331578*G0_0_0 + 0.090299823633158*G0_0_1 + 0.0592592592592595*G0_0_2 + 0.0592592592592592*G0_2_0 + 0.0592592592592593*G0_2_1 + 0.0169312169312166*G0_2_2; A[330] = -0.158024691358026*G0_0_0 - 0.158024691358026*G0_0_1 - 0.079012345679013*G0_0_2 - 0.0790123456790127*G0_2_0 - 0.0790123456790127*G0_2_1 + 0.0225749559082895*G0_2_2; A[331] = -0.0112874779541448*G0_0_0 - 0.0112874779541447*G0_0_2 - 0.0112874779541446*G0_2_0 - 0.0112874779541446*G0_2_2; A[332] = -0.00282186948853622*G0_0_0 - 0.0028218694885362*G0_0_2 - 0.00282186948853609*G0_2_0 - 0.00282186948853608*G0_2_2; A[333] = -0.0112874779541446*G0_0_0 - 0.0112874779541446*G0_0_2 - 0.0112874779541446*G0_2_0 - 0.0112874779541447*G0_2_2; A[334] = -0.0112874779541449*G0_0_1 - 0.0112874779541449*G0_0_2 - 0.0112874779541446*G0_2_0 - 0.0225749559082894*G0_2_1 - 0.0225749559082893*G0_2_2; A[335] = -0.00282186948853616*G0_0_1 - 0.00282186948853618*G0_0_2 - 0.00282186948853601*G0_2_0 - 0.0169312169312168*G0_2_1 - 0.0169312169312168*G0_2_2; A[336] = -0.0112874779541448*G0_0_1 - 0.0112874779541448*G0_0_2 - 0.0112874779541449*G0_2_0 - 0.0451499118165791*G0_2_1 - 0.045149911816579*G0_2_2; A[337] = -0.0225749559082894*G0_0_0 - 0.0225749559082893*G0_0_1 + 0.0112874779541447*G0_0_2 - 0.033862433862434*G0_2_0 - 0.0677248677248678*G0_2_1 + 0.067724867724868*G0_2_2; A[338] = -0.022574955908289*G0_0_0 - 0.0225749559082891*G0_0_1 + 0.011287477954145*G0_0_2 - 0.0338624338624338*G0_2_0 - 0.0677248677248677*G0_2_1 + 0.0225749559082894*G0_2_2; A[339] = 0.112874779541446*G0_0_0 + 0.112874779541446*G0_0_1 + 0.0112874779541444*G0_0_2 + 0.101587301587302*G0_2_0 + 0.203174603174604*G0_2_1 - 0.0677248677248676*G0_2_2; A[340] = 0.0225749559082896*G0_0_0 + 0.0338624338624344*G0_0_2 + 0.033862433862434*G0_2_0 + 0.0451499118165785*G0_2_2; A[341] = 0.022574955908289*G0_0_0 + 0.0338624338624339*G0_0_2 + 0.0338624338624338*G0_2_0 + 0.0451499118165784*G0_2_2; A[342] = -0.112874779541446*G0_0_0 - 0.101587301587302*G0_0_2 - 0.101587301587302*G0_2_0 - 0.135449735449736*G0_2_2; A[343] = 0.0225749559082895*G0_0_1 + 0.0338624338624345*G0_0_2 + 0.0338624338624337*G0_2_0 + 0.0677248677248676*G0_2_1 + 0.090299823633157*G0_2_2; A[344] = 0.0225749559082892*G0_0_1 + 0.0338624338624341*G0_0_2 + 0.0338624338624339*G0_2_0 + 0.0677248677248678*G0_2_1 + 0.135449735449736*G0_2_2; A[345] = -0.112874779541446*G0_0_1 - 0.101587301587302*G0_0_2 - 0.101587301587301*G0_2_0 - 0.203174603174604*G0_2_1 - 0.270899470899472*G0_2_2; A[346] = -0.0112874779541448*G0_0_2 - 0.0112874779541448*G0_2_0 - 0.0225749559082893*G0_2_2; A[347] = -0.0112874779541448*G0_0_2 - 0.0112874779541446*G0_2_0 - 0.0677248677248681*G0_2_2; A[348] = -0.0112874779541448*G0_0_2 - 0.0112874779541448*G0_2_0 - 0.0225749559082893*G0_2_2; A[349] = 0.0902998236331568*G0_2_2; A[350] = 0.00776014109347433*G0_0_0 + 0.00776014109347435*G0_0_1 + 0.00776014109347434*G0_0_2 + 0.00776014109347442*G0_1_0 + 0.00776014109347442*G0_1_1 + 0.00776014109347442*G0_1_2; A[351] = -0.0246913580246913*G0_0_0 + 0.0458553791887129*G0_1_0; A[352] = 0.0176366843033511*G0_0_1 - 0.00776014109347442*G0_1_1; A[353] = -0.00776014109347448*G0_0_2 - 0.00776014109347453*G0_1_2; A[354] = 0.0338624338624338*G0_0_1 + 0.0451499118165788*G0_0_2 + 0.0112874779541447*G0_1_1 + 0.0112874779541448*G0_1_2; A[355] = 0.0141093474426808*G0_0_1 + 0.0169312169312166*G0_0_2 + 0.00282186948853617*G0_1_1 + 0.002821869488536*G0_1_2; A[356] = 0.0112874779541447*G0_0_1 + 0.0225749559082894*G0_0_2 + 0.0112874779541448*G0_1_1 + 0.0112874779541449*G0_1_2; A[357] = 0.101587301587302*G0_0_0 + 0.0790123456790126*G0_0_2 + 0.0790123456790125*G0_1_0 + 0.158024691358026*G0_1_2; A[358] = -0.0423280423280425*G0_0_0 - 0.0592592592592595*G0_0_2 - 0.0310405643738979*G0_1_0 - 0.0902998236331578*G0_1_2; A[359] = 0.0112874779541447*G0_0_0 + 0.033862433862434*G0_0_2 + 0.0112874779541448*G0_1_0 + 0.0451499118165791*G0_1_2; A[360] = 0.203174603174603*G0_0_0 + 0.0790123456790126*G0_0_1 + 0.0790123456790126*G0_1_0 + 0.158024691358026*G0_1_1; A[361] = -0.118518518518519*G0_0_0 + 0.042328042328042*G0_0_1 - 0.0310405643738979*G0_1_0 - 0.0902998236331578*G0_1_1; A[362] = 0.0451499118165788*G0_0_0 - 0.0338624338624337*G0_0_1 + 0.0112874779541448*G0_1_0 + 0.0451499118165788*G0_1_1; A[363] = -0.0112874779541446*G0_0_0 - 0.0112874779541446*G0_0_1 - 0.0112874779541446*G0_1_0 - 0.0112874779541446*G0_1_1; A[364] = -0.00282186948853612*G0_0_0 - 0.00282186948853603*G0_0_1 - 0.00282186948853618*G0_1_0 - 0.00282186948853612*G0_1_1; A[365] = -0.0112874779541446*G0_0_0 - 0.0112874779541447*G0_0_1 - 0.0112874779541448*G0_1_0 - 0.0112874779541448*G0_1_1; A[366] = -0.0225749559082894*G0_0_0 - 0.0112874779541445*G0_0_1 - 0.0225749559082893*G0_0_2 - 0.0112874779541447*G0_1_0 - 0.0112874779541447*G0_1_2; A[367] = -0.0169312169312167*G0_0_0 - 0.00282186948853614*G0_0_1 - 0.0169312169312166*G0_0_2 - 0.00282186948853603*G0_1_0 - 0.00282186948853599*G0_1_2; A[368] = -0.0451499118165788*G0_0_0 - 0.0112874779541448*G0_0_1 - 0.0451499118165788*G0_0_2 - 0.0112874779541448*G0_1_0 - 0.0112874779541448*G0_1_2; A[369] = -0.022574955908289*G0_0_0 - 0.0338624338624339*G0_0_1 - 0.0338624338624339*G0_0_2 - 0.0338624338624339*G0_1_0 - 0.0451499118165787*G0_1_1 - 0.0451499118165787*G0_1_2; A[370] = 0.0169312169312168*G0_0_0 + 0.0592592592592591*G0_0_1 + 0.0592592592592592*G0_0_2 + 0.0592592592592595*G0_1_0 + 0.0902998236331574*G0_1_1 + 0.0902998236331574*G0_1_2; A[371] = 0.0225749559082892*G0_0_0 - 0.0790123456790125*G0_0_1 - 0.0790123456790125*G0_0_2 - 0.079012345679013*G0_1_0 - 0.158024691358026*G0_1_1 - 0.158024691358026*G0_1_2; A[372] = -0.067724867724868*G0_0_0 + 0.101587301587301*G0_0_1 + 0.203174603174603*G0_0_2 + 0.0112874779541444*G0_1_0 + 0.112874779541446*G0_1_1 + 0.112874779541446*G0_1_2; A[373] = 0.0677248677248677*G0_0_0 - 0.0338624338624341*G0_0_1 - 0.0677248677248678*G0_0_2 + 0.0112874779541446*G0_1_0 - 0.0225749559082894*G0_1_1 - 0.0225749559082893*G0_1_2; A[374] = 0.0225749559082892*G0_0_0 - 0.0338624338624341*G0_0_1 - 0.067724867724868*G0_0_2 + 0.011287477954145*G0_1_0 - 0.0225749559082891*G0_1_1 - 0.0225749559082892*G0_1_2; A[375] = -0.0225749559082892*G0_0_0 - 0.0112874779541446*G0_0_1 - 0.0112874779541446*G0_1_0; A[376] = -0.0677248677248677*G0_0_0 - 0.0112874779541447*G0_0_1 - 0.0112874779541447*G0_1_0; A[377] = -0.0225749559082891*G0_0_0 - 0.0112874779541447*G0_0_1 - 0.011287477954145*G0_1_0; A[378] = 0.0451499118165784*G0_0_0 + 0.0338624338624339*G0_0_1 + 0.0338624338624336*G0_1_0 + 0.022574955908289*G0_1_1; A[379] = -0.135449735449735*G0_0_0 - 0.101587301587302*G0_0_1 - 0.101587301587302*G0_1_0 - 0.112874779541446*G0_1_1; A[380] = 0.0451499118165786*G0_0_0 + 0.0338624338624341*G0_0_1 + 0.0338624338624341*G0_1_0 + 0.0225749559082891*G0_1_1; A[381] = 0.0902998236331569*G0_0_0 + 0.0338624338624339*G0_0_1 + 0.0677248677248677*G0_0_2 + 0.0338624338624339*G0_1_0 + 0.0225749559082892*G0_1_2; A[382] = -0.270899470899471*G0_0_0 - 0.101587301587301*G0_0_1 - 0.203174603174603*G0_0_2 - 0.101587301587302*G0_1_0 - 0.112874779541446*G0_1_2; A[383] = 0.135449735449735*G0_0_0 + 0.0338624338624336*G0_0_1 + 0.0677248677248678*G0_0_2 + 0.0338624338624339*G0_1_0 + 0.0225749559082893*G0_1_2; A[384] = 0.090299823633157*G0_0_0; A[385] = 0.00511463844797172*G0_0_0 + 0.0051146384479717*G0_0_1 + 0.00511463844797168*G0_0_2 + 0.00511463844797175*G0_1_0 + 0.00511463844797174*G0_1_1 + 0.00511463844797172*G0_1_2; A[386] = 0.0202821869488536*G0_0_0 - 0.0326278659611995*G0_1_0; A[387] = -0.0326278659611996*G0_0_1 + 0.0202821869488536*G0_1_1; A[388] = -0.00511463844797174*G0_0_2 - 0.00511463844797171*G0_1_2; A[389] = -0.0592592592592594*G0_0_1 - 0.0902998236331578*G0_0_2 - 0.0423280423280426*G0_1_1 - 0.031040564373898*G0_1_2; A[390] = -0.0105820105820105*G0_0_1 - 0.0211640211640206*G0_0_2 - 0.0134038800705467*G0_1_1 - 0.0105820105820105*G0_1_2; A[391] = 0.00282186948853624*G0_0_1 + 0.0169312169312168*G0_0_2 + 0.00282186948853603*G0_1_1 + 0.0141093474426806*G0_1_2; A[392] = -0.0423280423280425*G0_0_0 - 0.0310405643738979*G0_0_2 - 0.0592592592592595*G0_1_0 - 0.0902998236331577*G0_1_2; A[393] = -0.0134038800705468*G0_0_0 - 0.0105820105820106*G0_0_2 - 0.0105820105820104*G0_1_0 - 0.0211640211640206*G0_1_2; A[394] = 0.00282186948853622*G0_0_0 + 0.0141093474426808*G0_0_2 + 0.00282186948853601*G0_1_0 + 0.0169312169312166*G0_1_2; A[395] = -0.118518518518519*G0_0_0 - 0.0310405643738979*G0_0_1 + 0.042328042328042*G0_1_0 - 0.0902998236331578*G0_1_1; A[396] = 0.24973544973545*G0_0_0 + 0.0825396825396829*G0_0_1 + 0.0825396825396829*G0_1_0 + 0.24973544973545*G0_1_1; A[397] = -0.0902998236331578*G0_0_0 + 0.0423280423280419*G0_0_1 - 0.031040564373898*G0_1_0 - 0.118518518518519*G0_1_1; A[398] = -0.00282186948853619*G0_0_0 - 0.00282186948853608*G0_0_1 - 0.0028218694885362*G0_1_0 - 0.00282186948853612*G0_1_1; A[399] = -0.0091710758377423*G0_0_0 - 0.00917107583774238*G0_0_1 - 0.00917107583774232*G0_1_0 - 0.0091710758377424*G0_1_1; A[400] = -0.00282186948853626*G0_0_0 - 0.00282186948853622*G0_0_1 - 0.00282186948853605*G0_1_0 - 0.00282186948853601*G0_1_1; A[401] = -0.0169312169312166*G0_0_0 - 0.0141093474426804*G0_0_1 - 0.0169312169312166*G0_0_2 - 0.0141093474426806*G0_1_0 - 0.0112874779541446*G0_1_1 - 0.0141093474426805*G0_1_2; A[402] = 0.0211640211640205*G0_0_0 + 0.0105820105820101*G0_0_1 + 0.0211640211640204*G0_0_2 + 0.0105820105820103*G0_1_0 - 0.00282186948853616*G0_1_1 + 0.0105820105820102*G0_1_2; A[403] = 0.0902998236331578*G0_0_0 + 0.0310405643738983*G0_0_1 + 0.0902998236331579*G0_0_2 + 0.031040564373898*G0_1_0 - 0.0112874779541445*G0_1_1 + 0.0310405643738981*G0_1_2; A[404] = -0.0112874779541446*G0_0_0 - 0.0141093474426807*G0_0_1 - 0.0141093474426807*G0_0_2 - 0.0141093474426807*G0_1_0 - 0.0169312169312166*G0_1_1 - 0.0169312169312167*G0_1_2; A[405] = -0.00282186948853615*G0_0_0 + 0.0105820105820105*G0_0_1 + 0.0105820105820105*G0_0_2 + 0.0105820105820103*G0_1_0 + 0.0211640211640207*G0_1_1 + 0.0211640211640207*G0_1_2; A[406] = -0.0112874779541446*G0_0_0 + 0.0310405643738979*G0_0_1 + 0.0310405643738979*G0_0_2 + 0.0310405643738982*G0_1_0 + 0.0902998236331577*G0_1_1 + 0.0902998236331578*G0_1_2; A[407] = 0.118518518518519*G0_0_0 - 0.0423280423280426*G0_0_1 + 0.0507936507936509*G0_0_2 + 0.0931216931216932*G0_1_0 - 0.084656084656085*G0_1_1 + 0.186243386243386*G0_1_2; A[408] = -0.0846560846560848*G0_0_0 + 0.0931216931216935*G0_0_1 + 0.186243386243386*G0_0_2 - 0.0423280423280427*G0_1_0 + 0.118518518518519*G0_1_1 + 0.0507936507936506*G0_1_2; A[409] = -0.0169312169312166*G0_0_0 - 0.0197530864197529*G0_0_1 - 0.0846560846560844*G0_0_2 - 0.0197530864197533*G0_1_0 - 0.016931216931217*G0_1_1 - 0.0846560846560847*G0_1_2; A[410] = 0.0169312169312169*G0_0_0 + 0.0197530864197528*G0_0_1 + 0.0197530864197529*G0_1_0 + 0.0225749559082889*G0_1_1; A[411] = 0.0846560846560848*G0_0_0 + 0.0423280423280428*G0_0_1 + 0.0423280423280427*G0_1_0 + 0.0225749559082899*G0_1_1; A[412] = 0.0169312169312166*G0_0_0 + 0.0197530864197529*G0_0_1 + 0.0197530864197532*G0_1_0 + 0.0225749559082891*G0_1_1; A[413] = 0.0225749559082892*G0_0_0 + 0.0197530864197531*G0_0_1 + 0.0197530864197533*G0_1_0 + 0.0169312169312169*G0_1_1; A[414] = 0.0225749559082895*G0_0_0 + 0.0423280423280426*G0_0_1 + 0.0423280423280425*G0_1_0 + 0.084656084656085*G0_1_1; A[415] = 0.0225749559082891*G0_0_0 + 0.0197530864197529*G0_0_1 + 0.0197530864197528*G0_1_0 + 0.016931216931217*G0_1_1; A[416] = 0.0677248677248675*G0_0_0 + 0.0649029982363311*G0_0_1 + 0.0846560846560842*G0_0_2 + 0.0649029982363313*G0_1_0 + 0.0677248677248673*G0_1_1 + 0.0846560846560842*G0_1_2; A[417] = 0.0677248677248679*G0_0_0 - 0.0931216931216933*G0_0_1 - 0.0507936507936508*G0_0_2 - 0.0931216931216928*G0_1_0 - 0.270899470899471*G0_1_1 - 0.186243386243386*G0_1_2; A[418] = -0.270899470899471*G0_0_0 - 0.0931216931216925*G0_0_1 - 0.186243386243386*G0_0_2 - 0.0931216931216931*G0_1_0 + 0.0677248677248683*G0_1_1 - 0.0507936507936508*G0_1_2; A[419] = -0.135449735449735*G0_0_0 - 0.112874779541447*G0_0_1 - 0.112874779541446*G0_1_0 - 0.135449735449736*G0_1_1; A[420] = 0.00776014109347443*G0_0_0 + 0.00776014109347443*G0_0_1 + 0.00776014109347443*G0_0_2 + 0.00776014109347435*G0_1_0 + 0.00776014109347434*G0_1_1 + 0.00776014109347435*G0_1_2; A[421] = -0.00776014109347445*G0_0_0 + 0.017636684303351*G0_1_0; A[422] = 0.0458553791887128*G0_0_1 - 0.0246913580246914*G0_1_1; A[423] = -0.00776014109347445*G0_0_2 - 0.00776014109347445*G0_1_2; A[424] = 0.0790123456790126*G0_0_1 + 0.158024691358025*G0_0_2 + 0.101587301587302*G0_1_1 + 0.0790123456790126*G0_1_2; A[425] = -0.031040564373898*G0_0_1 - 0.0902998236331577*G0_0_2 - 0.0423280423280424*G0_1_1 - 0.0592592592592593*G0_1_2; A[426] = 0.0112874779541446*G0_0_1 + 0.0451499118165785*G0_0_2 + 0.0112874779541448*G0_1_1 + 0.033862433862434*G0_1_2; A[427] = 0.0112874779541446*G0_0_0 + 0.0112874779541448*G0_0_2 + 0.033862433862434*G0_1_0 + 0.0451499118165788*G0_1_2; A[428] = 0.00282186948853614*G0_0_0 + 0.00282186948853598*G0_0_2 + 0.0141093474426805*G0_1_0 + 0.0169312169312165*G0_1_2; A[429] = 0.0112874779541446*G0_0_0 + 0.0112874779541446*G0_0_2 + 0.0112874779541448*G0_1_0 + 0.0225749559082895*G0_1_2; A[430] = 0.0451499118165788*G0_0_0 + 0.0112874779541448*G0_0_1 - 0.0338624338624337*G0_1_0 + 0.0451499118165788*G0_1_1; A[431] = -0.0902998236331578*G0_0_0 - 0.031040564373898*G0_0_1 + 0.0423280423280419*G0_1_0 - 0.118518518518519*G0_1_1; A[432] = 0.158024691358025*G0_0_0 + 0.0790123456790126*G0_0_1 + 0.0790123456790126*G0_1_0 + 0.203174603174603*G0_1_1; A[433] = -0.0112874779541445*G0_0_0 - 0.0112874779541446*G0_0_1 - 0.0112874779541445*G0_1_0 - 0.0112874779541446*G0_1_1; A[434] = -0.00282186948853637*G0_0_0 - 0.00282186948853633*G0_0_1 - 0.00282186948853624*G0_1_0 - 0.00282186948853621*G0_1_1; A[435] = -0.0112874779541445*G0_0_0 - 0.0112874779541446*G0_0_1 - 0.0112874779541448*G0_1_0 - 0.0112874779541448*G0_1_1; A[436] = -0.0451499118165787*G0_0_0 - 0.033862433862434*G0_0_1 - 0.0451499118165787*G0_0_2 - 0.0338624338624338*G0_1_0 - 0.022574955908289*G0_1_1 - 0.0338624338624339*G0_1_2; A[437] = 0.0902998236331576*G0_0_0 + 0.0592592592592596*G0_0_1 + 0.0902998236331576*G0_0_2 + 0.0592592592592594*G0_1_0 + 0.0169312169312167*G0_1_1 + 0.0592592592592594*G0_1_2; A[438] = -0.158024691358026*G0_0_0 - 0.0790123456790129*G0_0_1 - 0.158024691358026*G0_0_2 - 0.0790123456790126*G0_1_0 + 0.0225749559082893*G0_1_1 - 0.0790123456790126*G0_1_2; A[439] = -0.0112874779541447*G0_0_1 - 0.0112874779541447*G0_0_2 - 0.0112874779541446*G0_1_0 - 0.0225749559082894*G0_1_1 - 0.0225749559082894*G0_1_2; A[440] = -0.00282186948853616*G0_0_1 - 0.00282186948853609*G0_0_2 - 0.00282186948853594*G0_1_0 - 0.0169312169312169*G0_1_1 - 0.0169312169312168*G0_1_2; A[441] = -0.0112874779541447*G0_0_1 - 0.0112874779541447*G0_0_2 - 0.0112874779541448*G0_1_0 - 0.0451499118165788*G0_1_1 - 0.0451499118165788*G0_1_2; A[442] = -0.0225749559082894*G0_0_0 + 0.0112874779541446*G0_0_1 - 0.0225749559082895*G0_0_2 - 0.0338624338624342*G0_1_0 + 0.0677248677248677*G0_1_1 - 0.0677248677248679*G0_1_2; A[443] = 0.112874779541446*G0_0_0 + 0.0112874779541442*G0_0_1 + 0.112874779541446*G0_0_2 + 0.101587301587302*G0_1_0 - 0.0677248677248678*G0_1_1 + 0.203174603174603*G0_1_2; A[444] = -0.0225749559082898*G0_0_0 + 0.0112874779541443*G0_0_1 - 0.0225749559082896*G0_0_2 - 0.0338624338624337*G0_1_0 + 0.0225749559082892*G0_1_1 - 0.0677248677248677*G0_1_2; A[445] = 0.0225749559082887*G0_0_0 + 0.0338624338624339*G0_0_1 + 0.0338624338624337*G0_1_0 + 0.0451499118165784*G0_1_1; A[446] = -0.112874779541446*G0_0_0 - 0.101587301587302*G0_0_1 - 0.101587301587302*G0_1_0 - 0.135449735449736*G0_1_1; A[447] = 0.0225749559082899*G0_0_0 + 0.0338624338624343*G0_0_1 + 0.0338624338624338*G0_1_0 + 0.0451499118165786*G0_1_1; A[448] = -0.0112874779541452*G0_0_1 - 0.0112874779541449*G0_1_0 - 0.0225749559082896*G0_1_1; A[449] = -0.0112874779541447*G0_0_1 - 0.0112874779541445*G0_1_0 - 0.0677248677248677*G0_1_1; A[450] = -0.0112874779541443*G0_0_1 - 0.0112874779541443*G0_1_0 - 0.0225749559082892*G0_1_1; A[451] = 0.0338624338624341*G0_0_1 + 0.0225749559082891*G0_0_2 + 0.0338624338624337*G0_1_0 + 0.0902998236331571*G0_1_1 + 0.0677248677248675*G0_1_2; A[452] = 0.033862433862434*G0_0_1 + 0.0225749559082891*G0_0_2 + 0.0338624338624338*G0_1_0 + 0.135449735449736*G0_1_1 + 0.0677248677248677*G0_1_2; A[453] = -0.101587301587302*G0_0_1 - 0.112874779541446*G0_0_2 - 0.101587301587301*G0_1_0 - 0.270899470899471*G0_1_1 - 0.203174603174603*G0_1_2; A[454] = 0.0902998236331575*G0_1_1; A[455] = -0.0246913580246911*G0_0_0 - 0.0246913580246911*G0_0_1 - 0.0246913580246911*G0_0_2 - 0.0246913580246912*G0_1_0 - 0.0246913580246912*G0_1_1 - 0.0246913580246912*G0_1_2 - 0.0705467372134041*G0_2_0 - 0.0705467372134041*G0_2_1 - 0.0705467372134041*G0_2_2; A[456] = 0.0077601410934745*G0_0_0 + 0.00776014109347449*G0_1_0; A[457] = 0.00776014109347445*G0_0_1 + 0.00776014109347444*G0_1_1; A[458] = -0.0176366843033511*G0_0_2 - 0.0176366843033511*G0_1_2 - 0.0253968253968255*G0_2_2; A[459] = -0.0225749559082892*G0_0_1 - 0.0112874779541446*G0_0_2 - 0.0225749559082893*G0_1_1 - 0.0112874779541446*G0_1_2 - 0.0112874779541444*G0_2_1; A[460] = -0.0169312169312169*G0_0_1 - 0.0141093474426808*G0_0_2 - 0.0169312169312169*G0_1_1 - 0.0141093474426809*G0_1_2 - 0.0141093474426809*G0_2_1 - 0.0112874779541447*G0_2_2; A[461] = -0.0451499118165788*G0_0_1 - 0.033862433862434*G0_0_2 - 0.0451499118165788*G0_1_1 - 0.0338624338624339*G0_1_2 - 0.0338624338624339*G0_2_1 - 0.0225749559082891*G0_2_2; A[462] = -0.0225749559082893*G0_0_0 - 0.0112874779541445*G0_0_2 - 0.0225749559082893*G0_1_0 - 0.0112874779541445*G0_1_2 - 0.0112874779541443*G0_2_0; A[463] = -0.0169312169312168*G0_0_0 - 0.014109347442681*G0_0_2 - 0.0169312169312167*G0_1_0 - 0.0141093474426809*G0_1_2 - 0.0141093474426808*G0_2_0 - 0.0112874779541447*G0_2_2; A[464] = -0.0451499118165788*G0_0_0 - 0.0338624338624338*G0_0_2 - 0.0451499118165788*G0_1_0 - 0.0338624338624338*G0_1_2 - 0.0338624338624339*G0_2_0 - 0.022574955908289*G0_2_2; A[465] = -0.0112874779541446*G0_0_0 - 0.0112874779541446*G0_0_1 - 0.0112874779541446*G0_1_0 - 0.0112874779541446*G0_1_1; A[466] = -0.00282186948853619*G0_0_0 - 0.00282186948853619*G0_0_1 - 0.00282186948853608*G0_1_0 - 0.00282186948853612*G0_1_1; A[467] = -0.0112874779541445*G0_0_0 - 0.0112874779541445*G0_0_1 - 0.0112874779541446*G0_1_0 - 0.0112874779541446*G0_1_1; A[468] = 0.203174603174603*G0_0_0 + 0.203174603174603*G0_0_1 + 0.12416225749559*G0_0_2 + 0.203174603174603*G0_1_0 + 0.203174603174603*G0_1_1 + 0.12416225749559*G0_1_2 + 0.12416225749559*G0_2_0 + 0.12416225749559*G0_2_1 + 0.203174603174603*G0_2_2; A[469] = -0.118518518518519*G0_0_0 - 0.118518518518519*G0_0_1 - 0.16084656084656*G0_0_2 - 0.118518518518519*G0_1_0 - 0.118518518518519*G0_1_1 - 0.160846560846561*G0_1_2 - 0.0874779541446205*G0_2_0 - 0.0874779541446205*G0_2_1 - 0.22010582010582*G0_2_2; A[470] = 0.0451499118165788*G0_0_0 + 0.0451499118165788*G0_0_1 + 0.0790123456790123*G0_0_2 + 0.0451499118165788*G0_1_0 + 0.0451499118165789*G0_1_1 + 0.0790123456790124*G0_1_2 + 0.0338624338624339*G0_2_0 + 0.0338624338624339*G0_2_1 + 0.112874779541446*G0_2_2; A[471] = 0.101587301587302*G0_0_0 + 0.0225749559082888*G0_0_1 + 0.101587301587302*G0_0_2 + 0.101587301587302*G0_1_0 + 0.0225749559082888*G0_1_1 + 0.101587301587302*G0_1_2 + 0.0225749559082889*G0_2_0 + 0.101587301587302*G0_2_1 + 0.022574955908289*G0_2_2; A[472] = -0.0423280423280423*G0_0_0 + 0.0169312169312174*G0_0_1 - 0.0423280423280422*G0_0_2 - 0.0423280423280423*G0_1_0 + 0.0169312169312173*G0_1_1 - 0.0423280423280423*G0_1_2 - 0.0112874779541445*G0_2_0 - 0.0423280423280426*G0_2_1 - 0.0112874779541445*G0_2_2; A[473] = 0.0112874779541446*G0_0_0 - 0.0225749559082895*G0_0_1 + 0.0112874779541446*G0_0_2 + 0.0112874779541446*G0_1_0 - 0.0225749559082894*G0_1_1 + 0.0112874779541446*G0_1_2 + 0.0112874779541449*G0_2_1; A[474] = 0.022574955908289*G0_0_0 + 0.101587301587302*G0_0_1 + 0.101587301587302*G0_0_2 + 0.022574955908289*G0_1_0 + 0.101587301587302*G0_1_1 + 0.101587301587302*G0_1_2 + 0.101587301587302*G0_2_0 + 0.0225749559082891*G0_2_1 + 0.0225749559082891*G0_2_2; A[475] = 0.0169312169312171*G0_0_0 - 0.0423280423280423*G0_0_1 - 0.0423280423280423*G0_0_2 + 0.016931216931217*G0_1_0 - 0.0423280423280422*G0_1_1 - 0.0423280423280422*G0_1_2 - 0.0423280423280429*G0_2_0 - 0.0112874779541446*G0_2_1 - 0.0112874779541446*G0_2_2; A[476] = -0.0225749559082894*G0_0_0 + 0.0112874779541445*G0_0_1 + 0.0112874779541445*G0_0_2 - 0.0225749559082894*G0_1_0 + 0.0112874779541445*G0_1_1 + 0.0112874779541445*G0_1_2 + 0.0112874779541449*G0_2_0; A[477] = -0.0225749559082894*G0_0_0 - 0.0225749559082891*G0_0_1 - 0.0112874779541445*G0_0_2 - 0.0225749559082894*G0_1_0 - 0.0225749559082892*G0_1_1 - 0.0112874779541445*G0_1_2 - 0.011287477954145*G0_2_0 - 0.0112874779541443*G0_2_1; A[478] = -0.0225749559082893*G0_0_0 - 0.0225749559082897*G0_0_1 - 0.0112874779541447*G0_0_2 - 0.0225749559082895*G0_1_0 - 0.0225749559082898*G0_1_1 - 0.0112874779541446*G0_1_2 - 0.0112874779541446*G0_2_0 - 0.0112874779541454*G0_2_1; A[479] = -0.0677248677248681*G0_0_0 - 0.0677248677248678*G0_0_1 - 0.0564373897707236*G0_0_2 - 0.0677248677248681*G0_1_0 - 0.0677248677248678*G0_1_1 - 0.0564373897707236*G0_1_2 - 0.0564373897707237*G0_2_0 - 0.0564373897707236*G0_2_1 - 0.0451499118165797*G0_2_2; A[480] = -0.0677248677248676*G0_0_0 - 0.270899470899471*G0_0_1 - 0.16931216931217*G0_0_2 - 0.0677248677248677*G0_1_0 - 0.270899470899471*G0_1_1 - 0.16931216931217*G0_1_2 - 0.0790123456790117*G0_2_0 - 0.169312169312169*G0_2_1 - 0.067724867724867*G0_2_2; A[481] = 0.0225749559082893*G0_0_0 + 0.0902998236331568*G0_0_1 + 0.0564373897707232*G0_0_2 + 0.0225749559082895*G0_1_0 + 0.0902998236331569*G0_1_1 + 0.0564373897707233*G0_1_2 + 0.0112874779541446*G0_2_0 + 0.0564373897707225*G0_2_1 + 0.0225749559082892*G0_2_2; A[482] = 0.067724867724868*G0_0_0 + 0.135449735449736*G0_0_1 + 0.101587301587302*G0_0_2 + 0.067724867724868*G0_1_0 + 0.135449735449736*G0_1_1 + 0.101587301587302*G0_1_2 + 0.0564373897707236*G0_2_0 + 0.101587301587301*G0_2_1 + 0.067724867724867*G0_2_2; A[483] = -0.270899470899471*G0_0_0 - 0.0677248677248678*G0_0_1 - 0.16931216931217*G0_0_2 - 0.270899470899471*G0_1_0 - 0.0677248677248676*G0_1_1 - 0.16931216931217*G0_1_2 - 0.169312169312168*G0_2_0 - 0.0790123456790118*G0_2_1 - 0.0677248677248672*G0_2_2; A[484] = 0.0902998236331569*G0_0_0 + 0.0225749559082894*G0_0_1 + 0.0564373897707234*G0_0_2 + 0.0902998236331567*G0_1_0 + 0.0225749559082894*G0_1_1 + 0.0564373897707232*G0_1_2 + 0.0564373897707224*G0_2_0 + 0.0112874779541444*G0_2_1 + 0.0225749559082894*G0_2_2; A[485] = 0.135449735449736*G0_0_0 + 0.0677248677248679*G0_0_1 + 0.101587301587302*G0_0_2 + 0.135449735449736*G0_1_0 + 0.0677248677248679*G0_1_1 + 0.101587301587302*G0_1_2 + 0.101587301587301*G0_2_0 + 0.0564373897707237*G0_2_1 + 0.0677248677248671*G0_2_2; A[486] = -0.135449735449736*G0_0_0 - 0.135449735449736*G0_0_1 - 0.0338624338624336*G0_0_2 - 0.135449735449735*G0_1_0 - 0.135449735449736*G0_1_1 - 0.0338624338624335*G0_1_2 - 0.0338624338624334*G0_2_0 - 0.0338624338624336*G0_2_1 - 0.0451499118165782*G0_2_2; A[487] = 0.0451499118165785*G0_0_0 + 0.0451499118165786*G0_0_1 + 0.0112874779541446*G0_0_2 + 0.0451499118165783*G0_1_0 + 0.0451499118165784*G0_1_1 + 0.0112874779541446*G0_1_2 + 0.0112874779541441*G0_2_0 + 0.0112874779541447*G0_2_1; A[488] = 0.0451499118165785*G0_0_0 + 0.0451499118165784*G0_0_1 + 0.0112874779541446*G0_0_2 + 0.0451499118165784*G0_1_0 + 0.0451499118165784*G0_1_1 + 0.0112874779541446*G0_1_2 + 0.0112874779541444*G0_2_0 + 0.0112874779541442*G0_2_1; A[489] = 0.0902998236331572*G0_0_0 + 0.0902998236331573*G0_0_1 + 0.0902998236331572*G0_0_2 + 0.0902998236331572*G0_1_0 + 0.0902998236331571*G0_1_1 + 0.0902998236331571*G0_1_2 + 0.0902998236331568*G0_2_0 + 0.090299823633157*G0_2_1 + 0.0902998236331578*G0_2_2; A[490] = 0.0202821869488535*G0_0_0 + 0.0202821869488535*G0_0_1 + 0.0202821869488535*G0_0_2 + 0.0202821869488535*G0_1_0 + 0.0202821869488535*G0_1_1 + 0.0202821869488535*G0_1_2 + 0.052910052910053*G0_2_0 + 0.052910052910053*G0_2_1 + 0.0529100529100531*G0_2_2; A[491] = 0.00511463844797171*G0_0_0 + 0.0051146384479717*G0_1_0; A[492] = 0.00511463844797169*G0_0_1 + 0.00511463844797171*G0_1_1; A[493] = 0.0326278659611996*G0_0_2 + 0.0326278659611997*G0_1_2 + 0.0529100529100532*G0_2_2; A[494] = -0.0169312169312168*G0_0_1 - 0.00282186948853641*G0_0_2 - 0.0169312169312168*G0_1_1 - 0.00282186948853637*G0_1_2 - 0.00282186948853633*G0_2_1; A[495] = 0.0211640211640209*G0_0_1 + 0.0105820105820109*G0_0_2 + 0.0211640211640209*G0_1_1 + 0.010582010582011*G0_1_2 + 0.0105820105820105*G0_2_1 - 0.00282186948853612*G0_2_2; A[496] = 0.0902998236331578*G0_0_1 + 0.0592592592592594*G0_0_2 + 0.090299823633158*G0_1_1 + 0.0592592592592595*G0_1_2 + 0.0592592592592595*G0_2_1 + 0.0169312169312168*G0_2_2; A[497] = -0.0169312169312165*G0_0_0 - 0.00282186948853623*G0_0_2 - 0.0169312169312164*G0_1_0 - 0.00282186948853618*G0_1_2 - 0.00282186948853633*G0_2_0; A[498] = 0.0211640211640205*G0_0_0 + 0.0105820105820108*G0_0_2 + 0.0211640211640204*G0_1_0 + 0.0105820105820108*G0_1_2 + 0.0105820105820104*G0_2_0 - 0.00282186948853586*G0_2_2; A[499] = 0.0902998236331578*G0_0_0 + 0.0592592592592592*G0_0_2 + 0.090299823633158*G0_1_0 + 0.0592592592592593*G0_1_2 + 0.0592592592592595*G0_2_0 + 0.0169312169312166*G0_2_2; A[500] = -0.00282186948853612*G0_0_0 - 0.00282186948853618*G0_0_1 - 0.00282186948853603*G0_1_0 - 0.00282186948853612*G0_1_1; A[501] = -0.0091710758377423*G0_0_0 - 0.00917107583774232*G0_0_1 - 0.00917107583774238*G0_1_0 - 0.0091710758377424*G0_1_1; A[502] = -0.00282186948853637*G0_0_0 - 0.00282186948853624*G0_0_1 - 0.00282186948853633*G0_1_0 - 0.00282186948853621*G0_1_1; A[503] = -0.118518518518519*G0_0_0 - 0.118518518518519*G0_0_1 - 0.0874779541446205*G0_0_2 - 0.118518518518519*G0_1_0 - 0.118518518518519*G0_1_1 - 0.0874779541446205*G0_1_2 - 0.16084656084656*G0_2_0 - 0.160846560846561*G0_2_1 - 0.22010582010582*G0_2_2; A[504] = 0.249735449735451*G0_0_0 + 0.249735449735451*G0_0_1 + 0.167195767195767*G0_0_2 + 0.249735449735451*G0_1_0 + 0.249735449735451*G0_1_1 + 0.167195767195767*G0_1_2 + 0.167195767195767*G0_2_0 + 0.167195767195767*G0_2_1 + 0.334391534391535*G0_2_2; A[505] = -0.0902998236331578*G0_0_0 - 0.0902998236331579*G0_0_1 - 0.1326278659612*G0_0_2 - 0.0902998236331579*G0_1_0 - 0.090299823633158*G0_1_1 - 0.1326278659612*G0_1_2 - 0.0592592592592595*G0_2_0 - 0.0592592592592596*G0_2_1 - 0.22010582010582*G0_2_2; A[506] = -0.0423280423280427*G0_0_0 - 0.0112874779541444*G0_0_1 - 0.0423280423280427*G0_0_2 - 0.0423280423280427*G0_1_0 - 0.0112874779541444*G0_1_1 - 0.0423280423280428*G0_1_2 + 0.0169312169312171*G0_2_0 - 0.0423280423280425*G0_2_1 + 0.0169312169312171*G0_2_2; A[507] = -0.0134038800705467*G0_0_0 - 0.00282186948853641*G0_0_1 - 0.0134038800705467*G0_0_2 - 0.0134038800705468*G0_1_0 - 0.00282186948853637*G0_1_1 - 0.0134038800705468*G0_1_2 - 0.00282186948853613*G0_2_0 - 0.0134038800705466*G0_2_1 - 0.0028218694885361*G0_2_2; A[508] = 0.00282186948853633*G0_0_0 - 0.0112874779541444*G0_0_1 + 0.00282186948853632*G0_0_2 + 0.00282186948853629*G0_1_0 - 0.0112874779541445*G0_1_1 + 0.00282186948853628*G0_1_2 + 0.00282186948853593*G0_2_1; A[509] = -0.0112874779541445*G0_0_0 - 0.0423280423280428*G0_0_1 - 0.0423280423280428*G0_0_2 - 0.0112874779541445*G0_1_0 - 0.0423280423280428*G0_1_1 - 0.0423280423280428*G0_1_2 - 0.0423280423280427*G0_2_0 + 0.016931216931217*G0_2_1 + 0.016931216931217*G0_2_2; A[510] = -0.00282186948853629*G0_0_0 - 0.0134038800705468*G0_0_1 - 0.0134038800705468*G0_0_2 - 0.00282186948853628*G0_1_0 - 0.0134038800705467*G0_1_1 - 0.0134038800705468*G0_1_2 - 0.0134038800705463*G0_2_0 - 0.00282186948853607*G0_2_1 - 0.00282186948853606*G0_2_2; A[511] = -0.0112874779541444*G0_0_0 + 0.00282186948853618*G0_0_1 + 0.00282186948853619*G0_0_2 - 0.0112874779541445*G0_1_0 + 0.00282186948853613*G0_1_1 + 0.00282186948853614*G0_1_2 + 0.00282186948853591*G0_2_0; A[512] = 0.0169312169312175*G0_0_0 + 0.0169312169312175*G0_0_1 - 0.0028218694885357*G0_0_2 + 0.0169312169312173*G0_1_0 + 0.0169312169312175*G0_1_1 - 0.00282186948853573*G0_1_2 - 0.00282186948853541*G0_2_0 - 0.00282186948853636*G0_2_1; A[513] = 0.0169312169312172*G0_0_0 + 0.0169312169312176*G0_0_1 - 0.00282186948853591*G0_0_2 + 0.0169312169312174*G0_1_0 + 0.0169312169312177*G0_1_1 - 0.00282186948853583*G0_1_2 - 0.00282186948853611*G0_2_0 - 0.0028218694885351*G0_2_1; A[514] = 0.0846560846560849*G0_0_0 + 0.0846560846560844*G0_0_1 + 0.0423280423280426*G0_0_2 + 0.0846560846560851*G0_1_0 + 0.0846560846560845*G0_1_1 + 0.0423280423280427*G0_1_2 + 0.042328042328043*G0_2_0 + 0.0423280423280428*G0_2_1 + 0.0225749559082906*G0_2_2; A[515] = 0.118518518518519*G0_0_0 + 0.067724867724868*G0_0_1 + 0.160846560846562*G0_0_2 + 0.118518518518519*G0_1_0 + 0.0677248677248678*G0_1_1 + 0.160846560846562*G0_1_2 + 0.0253968253968248*G0_2_0 + 0.16084656084656*G0_2_1 - 0.0169312169312177*G0_2_2; A[516] = -0.0169312169312172*G0_0_0 + 0.0677248677248678*G0_0_1 + 0.00282186948853585*G0_0_2 - 0.0169312169312174*G0_1_0 + 0.067724867724868*G0_1_1 + 0.0028218694885358*G0_1_2 + 0.0028218694885361*G0_2_0 + 0.00282186948853683*G0_2_1 + 0.00564373897707232*G0_2_2; A[517] = -0.0846560846560849*G0_0_0 - 0.270899470899471*G0_0_1 - 0.177777777777779*G0_0_2 - 0.0846560846560851*G0_1_0 - 0.270899470899472*G0_1_1 - 0.177777777777779*G0_1_2 - 0.042328042328043*G0_2_0 - 0.177777777777778*G0_2_1 - 0.0169312169312162*G0_2_2; A[518] = 0.0677248677248679*G0_0_0 + 0.118518518518519*G0_0_1 + 0.160846560846562*G0_0_2 + 0.0677248677248679*G0_1_0 + 0.118518518518519*G0_1_1 + 0.160846560846562*G0_1_2 + 0.16084656084656*G0_2_0 + 0.0253968253968248*G0_2_1 - 0.0169312169312175*G0_2_2; A[519] = 0.0677248677248675*G0_0_0 - 0.0169312169312176*G0_0_1 + 0.00282186948853595*G0_0_2 + 0.0677248677248675*G0_1_0 - 0.0169312169312176*G0_1_1 + 0.00282186948853597*G0_1_2 + 0.00282186948853693*G0_2_0 + 0.0028218694885362*G0_2_1 + 0.00564373897707188*G0_2_2; A[520] = -0.270899470899471*G0_0_0 - 0.0846560846560845*G0_0_1 - 0.177777777777778*G0_0_2 - 0.270899470899471*G0_1_0 - 0.0846560846560846*G0_1_1 - 0.177777777777779*G0_1_2 - 0.177777777777777*G0_2_0 - 0.0423280423280429*G0_2_1 - 0.016931216931216*G0_2_2; A[521] = 0.0225749559082896*G0_0_0 + 0.0225749559082897*G0_0_1 - 0.0197530864197531*G0_0_2 + 0.0225749559082896*G0_1_0 + 0.0225749559082896*G0_1_1 - 0.0197530864197532*G0_1_2 - 0.0197530864197535*G0_2_0 - 0.0197530864197532*G0_2_1 + 0.0225749559082892*G0_2_2; A[522] = 0.0225749559082893*G0_0_0 + 0.0225749559082891*G0_0_1 + 0.00282186948853563*G0_0_2 + 0.0225749559082892*G0_1_0 + 0.0225749559082892*G0_1_1 + 0.00282186948853566*G0_1_2 + 0.00282186948853655*G0_2_0 + 0.00282186948853578*G0_2_1; A[523] = 0.0225749559082891*G0_0_0 + 0.0225749559082893*G0_0_1 + 0.002821869488536*G0_0_2 + 0.0225749559082892*G0_1_0 + 0.0225749559082894*G0_1_1 + 0.00282186948853593*G0_1_2 + 0.00282186948853608*G0_2_0 + 0.00282186948853646*G0_2_1; A[524] = -0.135449735449737*G0_0_0 - 0.135449735449737*G0_0_1 - 0.0225749559082896*G0_0_2 - 0.135449735449737*G0_1_0 - 0.135449735449737*G0_1_1 - 0.0225749559082896*G0_1_2 - 0.0225749559082895*G0_2_0 - 0.0225749559082896*G0_2_1 - 0.0451499118165797*G0_2_2; A[525] = -0.00776014109347439*G0_0_0 - 0.00776014109347441*G0_0_1 - 0.00776014109347438*G0_0_2 - 0.00776014109347439*G0_1_0 - 0.00776014109347442*G0_1_1 - 0.00776014109347439*G0_1_2 - 0.0253968253968254*G0_2_0 - 0.0253968253968254*G0_2_1 - 0.0253968253968254*G0_2_2; A[526] = 0.00776014109347442*G0_0_0 + 0.00776014109347442*G0_1_0; A[527] = 0.00776014109347457*G0_0_1 + 0.00776014109347458*G0_1_1; A[528] = -0.045855379188713*G0_0_2 - 0.045855379188713*G0_1_2 - 0.0705467372134043*G0_2_2; A[529] = -0.0451499118165788*G0_0_1 - 0.0112874779541445*G0_0_2 - 0.0451499118165789*G0_1_1 - 0.0112874779541446*G0_1_2 - 0.0112874779541447*G0_2_1; A[530] = 0.0902998236331577*G0_0_1 + 0.0310405643738977*G0_0_2 + 0.0902998236331577*G0_1_1 + 0.0310405643738977*G0_1_2 + 0.0310405643738981*G0_2_1 - 0.0112874779541447*G0_2_2; A[531] = -0.158024691358026*G0_0_1 - 0.0790123456790127*G0_0_2 - 0.158024691358026*G0_1_1 - 0.0790123456790127*G0_1_2 - 0.079012345679013*G0_2_1 + 0.0225749559082893*G0_2_2; A[532] = -0.0451499118165789*G0_0_0 - 0.0112874779541448*G0_0_2 - 0.0451499118165789*G0_1_0 - 0.0112874779541448*G0_1_2 - 0.0112874779541447*G0_2_0; A[533] = 0.0902998236331579*G0_0_0 + 0.031040564373898*G0_0_2 + 0.0902998236331579*G0_1_0 + 0.0310405643738979*G0_1_2 + 0.0310405643738983*G0_2_0 - 0.0112874779541449*G0_2_2; A[534] = -0.158024691358026*G0_0_0 - 0.0790123456790127*G0_0_2 - 0.158024691358026*G0_1_0 - 0.0790123456790127*G0_1_2 - 0.079012345679013*G0_2_0 + 0.0225749559082895*G0_2_2; A[535] = -0.0112874779541446*G0_0_0 - 0.0112874779541448*G0_0_1 - 0.0112874779541447*G0_1_0 - 0.0112874779541448*G0_1_1; A[536] = -0.00282186948853626*G0_0_0 - 0.00282186948853605*G0_0_1 - 0.00282186948853622*G0_1_0 - 0.00282186948853601*G0_1_1; A[537] = -0.0112874779541445*G0_0_0 - 0.0112874779541448*G0_0_1 - 0.0112874779541446*G0_1_0 - 0.0112874779541448*G0_1_1; A[538] = 0.0451499118165788*G0_0_0 + 0.0451499118165788*G0_0_1 + 0.0338624338624339*G0_0_2 + 0.0451499118165788*G0_1_0 + 0.0451499118165789*G0_1_1 + 0.0338624338624339*G0_1_2 + 0.0790123456790123*G0_2_0 + 0.0790123456790124*G0_2_1 + 0.112874779541446*G0_2_2; A[539] = -0.0902998236331578*G0_0_0 - 0.0902998236331579*G0_0_1 - 0.0592592592592595*G0_0_2 - 0.0902998236331579*G0_1_0 - 0.090299823633158*G0_1_1 - 0.0592592592592596*G0_1_2 - 0.1326278659612*G0_2_0 - 0.1326278659612*G0_2_1 - 0.22010582010582*G0_2_2; A[540] = 0.158024691358026*G0_0_0 + 0.158024691358026*G0_0_1 + 0.079012345679013*G0_0_2 + 0.158024691358026*G0_1_0 + 0.158024691358026*G0_1_1 + 0.0790123456790131*G0_1_2 + 0.079012345679013*G0_2_0 + 0.0790123456790131*G0_2_1 + 0.203174603174604*G0_2_2; A[541] = 0.0112874779541447*G0_0_0 + 0.0112874779541447*G0_0_2 + 0.0112874779541448*G0_1_0 + 0.0112874779541447*G0_1_2 - 0.0225749559082893*G0_2_0 + 0.0112874779541446*G0_2_1 - 0.0225749559082893*G0_2_2; A[542] = 0.00282186948853622*G0_0_0 + 0.00282186948853619*G0_0_2 + 0.0028218694885362*G0_1_0 + 0.00282186948853617*G0_1_2 - 0.0112874779541446*G0_2_0 + 0.00282186948853616*G0_2_1 - 0.0112874779541446*G0_2_2; A[543] = 0.0112874779541446*G0_0_0 + 0.0112874779541446*G0_0_2 + 0.0112874779541446*G0_1_0 + 0.0112874779541446*G0_1_2 + 0.0112874779541447*G0_2_1; A[544] = 0.0112874779541448*G0_0_1 + 0.0112874779541448*G0_0_2 + 0.0112874779541449*G0_1_1 + 0.0112874779541449*G0_1_2 + 0.0112874779541446*G0_2_0 - 0.0225749559082893*G0_2_1 - 0.0225749559082893*G0_2_2; A[545] = 0.00282186948853619*G0_0_1 + 0.00282186948853621*G0_0_2 + 0.00282186948853617*G0_1_1 + 0.0028218694885362*G0_1_2 + 0.00282186948853601*G0_2_0 - 0.0112874779541446*G0_2_1 - 0.0112874779541446*G0_2_2; A[546] = 0.0112874779541448*G0_0_1 + 0.0112874779541448*G0_0_2 + 0.0112874779541448*G0_1_1 + 0.0112874779541448*G0_1_2 + 0.0112874779541447*G0_2_0; A[547] = 0.0225749559082894*G0_0_0 + 0.0225749559082894*G0_0_1 - 0.0112874779541446*G0_0_2 + 0.0225749559082894*G0_1_0 + 0.0225749559082893*G0_1_1 - 0.0112874779541447*G0_1_2 - 0.0112874779541448*G0_2_0 - 0.0112874779541444*G0_2_1; A[548] = 0.0225749559082891*G0_0_0 + 0.0225749559082891*G0_0_1 - 0.0112874779541449*G0_0_2 + 0.022574955908289*G0_1_0 + 0.0225749559082892*G0_1_1 - 0.0112874779541449*G0_1_2 - 0.0112874779541447*G0_2_0 - 0.0112874779541451*G0_2_1; A[549] = -0.112874779541446*G0_0_0 - 0.112874779541446*G0_0_1 - 0.0112874779541444*G0_0_2 - 0.112874779541446*G0_1_0 - 0.112874779541446*G0_1_1 - 0.0112874779541444*G0_1_2 - 0.0112874779541449*G0_2_0 - 0.0112874779541446*G0_2_1 - 0.0451499118165789*G0_2_2; A[550] = -0.0225749559082897*G0_0_0 - 0.0338624338624344*G0_0_2 - 0.0225749559082897*G0_1_0 - 0.0338624338624344*G0_1_2 + 0.0112874779541449*G0_2_0 - 0.0338624338624334*G0_2_1 + 0.067724867724868*G0_2_2; A[551] = -0.0225749559082891*G0_0_0 - 0.0338624338624339*G0_0_2 - 0.022574955908289*G0_1_0 - 0.0338624338624339*G0_1_2 + 0.0112874779541447*G0_2_0 - 0.0338624338624343*G0_2_1 + 0.0225749559082892*G0_2_2; A[552] = 0.112874779541446*G0_0_0 + 0.101587301587302*G0_0_2 + 0.112874779541446*G0_1_0 + 0.101587301587302*G0_1_2 + 0.0112874779541449*G0_2_0 + 0.101587301587302*G0_2_1 - 0.0677248677248679*G0_2_2; A[553] = -0.0225749559082895*G0_0_1 - 0.0338624338624345*G0_0_2 - 0.0225749559082895*G0_1_1 - 0.0338624338624345*G0_1_2 - 0.0338624338624332*G0_2_0 + 0.011287477954145*G0_2_1 + 0.067724867724868*G0_2_2; A[554] = -0.0225749559082893*G0_0_1 - 0.0338624338624341*G0_0_2 - 0.0225749559082892*G0_1_1 - 0.0338624338624341*G0_1_2 - 0.0338624338624343*G0_2_0 + 0.0112874779541445*G0_2_1 + 0.0225749559082894*G0_2_2; A[555] = 0.112874779541446*G0_0_1 + 0.101587301587302*G0_0_2 + 0.112874779541446*G0_1_1 + 0.101587301587302*G0_1_2 + 0.101587301587301*G0_2_0 + 0.0112874779541446*G0_2_1 - 0.0677248677248682*G0_2_2; A[556] = 0.0112874779541447*G0_0_2 + 0.0112874779541448*G0_1_2 + 0.0112874779541449*G0_2_0 + 0.0112874779541448*G0_2_1 - 0.0451499118165782*G0_2_2; A[557] = 0.0112874779541448*G0_0_2 + 0.0112874779541449*G0_1_2 + 0.0112874779541443*G0_2_0 + 0.0112874779541447*G0_2_1; A[558] = 0.0112874779541448*G0_0_2 + 0.0112874779541448*G0_1_2 + 0.0112874779541446*G0_2_0 + 0.0112874779541444*G0_2_1; A[559] = 0.0902998236331571*G0_2_2; A[560] = -0.0246913580246912*G0_0_0 - 0.0246913580246912*G0_0_1 - 0.0246913580246912*G0_0_2 - 0.0705467372134042*G0_1_0 - 0.0705467372134042*G0_1_1 - 0.0705467372134042*G0_1_2 - 0.0246913580246912*G0_2_0 - 0.0246913580246912*G0_2_1 - 0.0246913580246912*G0_2_2; A[561] = 0.00776014109347446*G0_0_0 + 0.00776014109347445*G0_2_0; A[562] = -0.017636684303351*G0_0_1 - 0.0253968253968256*G0_1_1 - 0.017636684303351*G0_2_1; A[563] = 0.00776014109347441*G0_0_2 + 0.0077601410934744*G0_2_2; A[564] = -0.0338624338624339*G0_0_1 - 0.0451499118165787*G0_0_2 - 0.022574955908289*G0_1_1 - 0.033862433862434*G0_1_2 - 0.0338624338624339*G0_2_1 - 0.0451499118165787*G0_2_2; A[565] = -0.0141093474426808*G0_0_1 - 0.0169312169312168*G0_0_2 - 0.0112874779541447*G0_1_1 - 0.0141093474426806*G0_1_2 - 0.0141093474426808*G0_2_1 - 0.0169312169312168*G0_2_2; A[566] = -0.0112874779541448*G0_0_1 - 0.0225749559082894*G0_0_2 - 0.0112874779541446*G0_1_2 - 0.0112874779541447*G0_2_1 - 0.0225749559082893*G0_2_2; A[567] = -0.0112874779541447*G0_0_0 - 0.0112874779541446*G0_0_2 - 0.0112874779541446*G0_2_0 - 0.0112874779541446*G0_2_2; A[568] = -0.00282186948853615*G0_0_0 - 0.00282186948853634*G0_0_2 - 0.00282186948853623*G0_2_0 - 0.00282186948853637*G0_2_2; A[569] = -0.0112874779541448*G0_0_0 - 0.0112874779541446*G0_0_2 - 0.0112874779541447*G0_2_0 - 0.0112874779541446*G0_2_2; A[570] = -0.0225749559082894*G0_0_0 - 0.0112874779541447*G0_0_1 - 0.0112874779541445*G0_1_0 - 0.0225749559082893*G0_2_0 - 0.0112874779541447*G0_2_1; A[571] = -0.0169312169312166*G0_0_0 - 0.0141093474426806*G0_0_1 - 0.0141093474426804*G0_1_0 - 0.0112874779541446*G0_1_1 - 0.0169312169312165*G0_2_0 - 0.0141093474426805*G0_2_1; A[572] = -0.0451499118165787*G0_0_0 - 0.0338624338624338*G0_0_1 - 0.033862433862434*G0_1_0 - 0.022574955908289*G0_1_1 - 0.0451499118165787*G0_2_0 - 0.0338624338624339*G0_2_1; A[573] = 0.101587301587302*G0_0_0 + 0.101587301587302*G0_0_1 + 0.0225749559082889*G0_0_2 + 0.0225749559082888*G0_1_0 + 0.0225749559082888*G0_1_1 + 0.101587301587302*G0_1_2 + 0.101587301587302*G0_2_0 + 0.101587301587302*G0_2_1 + 0.022574955908289*G0_2_2; A[574] = -0.0423280423280428*G0_0_0 - 0.0423280423280427*G0_0_1 + 0.0169312169312171*G0_0_2 - 0.0112874779541444*G0_1_0 - 0.0112874779541444*G0_1_1 - 0.0423280423280425*G0_1_2 - 0.0423280423280428*G0_2_0 - 0.0423280423280427*G0_2_1 + 0.0169312169312171*G0_2_2; A[575] = 0.0112874779541447*G0_0_0 + 0.0112874779541448*G0_0_1 - 0.0225749559082893*G0_0_2 + 0.0112874779541446*G0_1_2 + 0.0112874779541447*G0_2_0 + 0.0112874779541447*G0_2_1 - 0.0225749559082893*G0_2_2; A[576] = 0.203174603174603*G0_0_0 + 0.124162257495591*G0_0_1 + 0.203174603174603*G0_0_2 + 0.124162257495591*G0_1_0 + 0.203174603174604*G0_1_1 + 0.124162257495591*G0_1_2 + 0.203174603174603*G0_2_0 + 0.124162257495591*G0_2_1 + 0.203174603174603*G0_2_2; A[577] = -0.118518518518519*G0_0_0 - 0.16084656084656*G0_0_1 - 0.118518518518518*G0_0_2 - 0.0874779541446206*G0_1_0 - 0.22010582010582*G0_1_1 - 0.0874779541446206*G0_1_2 - 0.118518518518519*G0_2_0 - 0.160846560846561*G0_2_1 - 0.118518518518518*G0_2_2; A[578] = 0.0451499118165787*G0_0_0 + 0.0790123456790123*G0_0_1 + 0.0451499118165787*G0_0_2 + 0.033862433862434*G0_1_0 + 0.112874779541446*G0_1_1 + 0.033862433862434*G0_1_2 + 0.0451499118165787*G0_2_0 + 0.0790123456790123*G0_2_1 + 0.0451499118165787*G0_2_2; A[579] = 0.0225749559082891*G0_0_0 + 0.101587301587302*G0_0_1 + 0.101587301587302*G0_0_2 + 0.101587301587302*G0_1_0 + 0.0225749559082891*G0_1_1 + 0.0225749559082891*G0_1_2 + 0.0225749559082891*G0_2_0 + 0.101587301587302*G0_2_1 + 0.101587301587302*G0_2_2; A[580] = 0.016931216931217*G0_0_0 - 0.0423280423280422*G0_0_1 - 0.0423280423280423*G0_0_2 - 0.0423280423280428*G0_1_0 - 0.0112874779541445*G0_1_1 - 0.0112874779541445*G0_1_2 + 0.016931216931217*G0_2_0 - 0.0423280423280422*G0_2_1 - 0.0423280423280422*G0_2_2; A[581] = -0.0225749559082893*G0_0_0 + 0.0112874779541446*G0_0_1 + 0.0112874779541446*G0_0_2 + 0.0112874779541449*G0_1_0 - 0.0225749559082893*G0_2_0 + 0.0112874779541446*G0_2_1 + 0.0112874779541446*G0_2_2; A[582] = -0.0225749559082895*G0_0_0 - 0.0112874779541449*G0_0_1 - 0.0225749559082892*G0_0_2 - 0.011287477954145*G0_1_0 - 0.0112874779541443*G0_1_2 - 0.0225749559082895*G0_2_0 - 0.0112874779541449*G0_2_1 - 0.0225749559082891*G0_2_2; A[583] = -0.0677248677248679*G0_0_0 - 0.0564373897707235*G0_0_1 - 0.0677248677248677*G0_0_2 - 0.0564373897707231*G0_1_0 - 0.045149911816579*G0_1_1 - 0.056437389770723*G0_1_2 - 0.0677248677248679*G0_2_0 - 0.0564373897707235*G0_2_1 - 0.0677248677248677*G0_2_2; A[584] = -0.0225749559082894*G0_0_0 - 0.0112874779541446*G0_0_1 - 0.0225749559082896*G0_0_2 - 0.011287477954145*G0_1_0 - 0.0112874779541455*G0_1_2 - 0.0225749559082893*G0_2_0 - 0.0112874779541446*G0_2_1 - 0.0225749559082897*G0_2_2; A[585] = -0.067724867724868*G0_0_0 - 0.169312169312169*G0_0_1 - 0.270899470899472*G0_0_2 - 0.0790123456790121*G0_1_0 - 0.067724867724867*G0_1_1 - 0.169312169312169*G0_1_2 - 0.067724867724868*G0_2_0 - 0.16931216931217*G0_2_1 - 0.270899470899472*G0_2_2; A[586] = 0.0677248677248679*G0_0_0 + 0.101587301587302*G0_0_1 + 0.135449735449736*G0_0_2 + 0.0564373897707231*G0_1_0 + 0.0677248677248673*G0_1_1 + 0.101587301587301*G0_1_2 + 0.067724867724868*G0_2_0 + 0.101587301587302*G0_2_1 + 0.135449735449736*G0_2_2; A[587] = 0.0225749559082893*G0_0_0 + 0.0564373897707235*G0_0_1 + 0.0902998236331572*G0_0_2 + 0.0112874779541449*G0_1_0 + 0.0225749559082891*G0_1_1 + 0.0564373897707227*G0_1_2 + 0.0225749559082892*G0_2_0 + 0.0564373897707234*G0_2_1 + 0.0902998236331572*G0_2_2; A[588] = -0.135449735449736*G0_0_0 - 0.0338624338624342*G0_0_1 - 0.135449735449736*G0_0_2 - 0.0338624338624333*G0_1_0 - 0.0451499118165783*G0_1_1 - 0.0338624338624337*G0_1_2 - 0.135449735449736*G0_2_0 - 0.0338624338624341*G0_2_1 - 0.135449735449736*G0_2_2; A[589] = 0.0451499118165786*G0_0_0 + 0.011287477954145*G0_0_1 + 0.0451499118165787*G0_0_2 + 0.0112874779541442*G0_1_0 + 0.0112874779541446*G0_1_2 + 0.0451499118165785*G0_2_0 + 0.011287477954145*G0_2_1 + 0.0451499118165787*G0_2_2; A[590] = 0.0451499118165789*G0_0_0 + 0.0112874779541446*G0_0_1 + 0.0451499118165789*G0_0_2 + 0.0112874779541446*G0_1_0 + 0.0112874779541444*G0_1_2 + 0.045149911816579*G0_2_0 + 0.0112874779541447*G0_2_1 + 0.0451499118165789*G0_2_2; A[591] = -0.270899470899471*G0_0_0 - 0.16931216931217*G0_0_1 - 0.0677248677248675*G0_0_2 - 0.169312169312169*G0_1_0 - 0.0677248677248675*G0_1_1 - 0.0790123456790121*G0_1_2 - 0.270899470899471*G0_2_0 - 0.16931216931217*G0_2_1 - 0.0677248677248675*G0_2_2; A[592] = 0.090299823633157*G0_0_0 + 0.056437389770723*G0_0_1 + 0.0225749559082893*G0_0_2 + 0.0564373897707228*G0_1_0 + 0.0225749559082892*G0_1_1 + 0.0112874779541444*G0_1_2 + 0.090299823633157*G0_2_0 + 0.0564373897707229*G0_2_1 + 0.0225749559082893*G0_2_2; A[593] = 0.135449735449735*G0_0_0 + 0.101587301587301*G0_0_1 + 0.0677248677248676*G0_0_2 + 0.101587301587301*G0_1_0 + 0.0677248677248674*G0_1_1 + 0.0564373897707229*G0_1_2 + 0.135449735449735*G0_2_0 + 0.101587301587301*G0_2_1 + 0.0677248677248675*G0_2_2; A[594] = 0.0902998236331576*G0_0_0 + 0.0902998236331575*G0_0_1 + 0.0902998236331571*G0_0_2 + 0.0902998236331572*G0_1_0 + 0.0902998236331573*G0_1_1 + 0.0902998236331576*G0_1_2 + 0.0902998236331576*G0_2_0 + 0.0902998236331574*G0_2_1 + 0.0902998236331571*G0_2_2; A[595] = 0.0202821869488536*G0_0_0 + 0.0202821869488535*G0_0_1 + 0.0202821869488536*G0_0_2 + 0.0529100529100531*G0_1_0 + 0.0529100529100531*G0_1_1 + 0.0529100529100531*G0_1_2 + 0.0202821869488536*G0_2_0 + 0.0202821869488535*G0_2_1 + 0.0202821869488536*G0_2_2; A[596] = 0.00511463844797175*G0_0_0 + 0.00511463844797175*G0_2_0; A[597] = 0.0326278659611995*G0_0_1 + 0.0529100529100532*G0_1_1 + 0.0326278659611995*G0_2_1; A[598] = 0.00511463844797173*G0_0_2 + 0.00511463844797174*G0_2_2; A[599] = 0.0592592592592594*G0_0_1 + 0.0902998236331577*G0_0_2 + 0.0169312169312167*G0_1_1 + 0.0592592592592596*G0_1_2 + 0.0592592592592594*G0_2_1 + 0.0902998236331577*G0_2_2; A[600] = 0.0105820105820105*G0_0_1 + 0.0211640211640205*G0_0_2 - 0.0028218694885361*G0_1_1 + 0.0105820105820101*G0_1_2 + 0.0105820105820105*G0_2_1 + 0.0211640211640206*G0_2_2; A[601] = -0.00282186948853619*G0_0_1 - 0.0169312169312168*G0_0_2 - 0.00282186948853612*G0_1_2 - 0.00282186948853617*G0_2_1 - 0.0169312169312168*G0_2_2; A[602] = -0.00282186948853622*G0_0_0 - 0.00282186948853608*G0_0_2 - 0.00282186948853617*G0_2_0 - 0.00282186948853603*G0_2_2; A[603] = -0.00917107583774225*G0_0_0 - 0.00917107583774249*G0_0_2 - 0.00917107583774232*G0_2_0 - 0.00917107583774253*G0_2_2; A[604] = -0.00282186948853622*G0_0_0 - 0.00282186948853609*G0_0_2 - 0.0028218694885362*G0_2_0 - 0.00282186948853608*G0_2_2; A[605] = -0.0169312169312167*G0_0_0 - 0.00282186948853603*G0_0_1 - 0.00282186948853613*G0_1_0 - 0.0169312169312166*G0_2_0 - 0.00282186948853599*G0_2_1; A[606] = 0.0211640211640205*G0_0_0 + 0.0105820105820103*G0_0_1 + 0.0105820105820101*G0_1_0 - 0.00282186948853616*G0_1_1 + 0.0211640211640204*G0_2_0 + 0.0105820105820102*G0_2_1; A[607] = 0.0902998236331576*G0_0_0 + 0.0592592592592594*G0_0_1 + 0.0592592592592596*G0_1_0 + 0.0169312169312167*G0_1_1 + 0.0902998236331576*G0_2_0 + 0.0592592592592594*G0_2_1; A[608] = -0.0423280423280423*G0_0_0 - 0.0423280423280423*G0_0_1 - 0.0112874779541445*G0_0_2 + 0.0169312169312174*G0_1_0 + 0.0169312169312173*G0_1_1 - 0.0423280423280426*G0_1_2 - 0.0423280423280422*G0_2_0 - 0.0423280423280423*G0_2_1 - 0.0112874779541445*G0_2_2; A[609] = -0.0134038800705467*G0_0_0 - 0.0134038800705468*G0_0_1 - 0.00282186948853613*G0_0_2 - 0.00282186948853641*G0_1_0 - 0.00282186948853637*G0_1_1 - 0.0134038800705466*G0_1_2 - 0.0134038800705467*G0_2_0 - 0.0134038800705468*G0_2_1 - 0.0028218694885361*G0_2_2; A[610] = 0.00282186948853622*G0_0_0 + 0.0028218694885362*G0_0_1 - 0.0112874779541446*G0_0_2 + 0.00282186948853616*G0_1_2 + 0.00282186948853619*G0_2_0 + 0.00282186948853617*G0_2_1 - 0.0112874779541446*G0_2_2; A[611] = -0.118518518518518*G0_0_0 - 0.0874779541446206*G0_0_1 - 0.118518518518518*G0_0_2 - 0.16084656084656*G0_1_0 - 0.22010582010582*G0_1_1 - 0.16084656084656*G0_1_2 - 0.118518518518518*G0_2_0 - 0.0874779541446206*G0_2_1 - 0.118518518518519*G0_2_2; A[612] = 0.24973544973545*G0_0_0 + 0.167195767195767*G0_0_1 + 0.24973544973545*G0_0_2 + 0.167195767195767*G0_1_0 + 0.334391534391535*G0_1_1 + 0.167195767195767*G0_1_2 + 0.24973544973545*G0_2_0 + 0.167195767195767*G0_2_1 + 0.24973544973545*G0_2_2; A[613] = -0.0902998236331576*G0_0_0 - 0.1326278659612*G0_0_1 - 0.0902998236331577*G0_0_2 - 0.0592592592592596*G0_1_0 - 0.220105820105821*G0_1_1 - 0.0592592592592596*G0_1_2 - 0.0902998236331577*G0_2_0 - 0.1326278659612*G0_2_1 - 0.0902998236331577*G0_2_2; A[614] = -0.0112874779541445*G0_0_0 - 0.0423280423280424*G0_0_1 - 0.0423280423280424*G0_0_2 - 0.0423280423280427*G0_1_0 + 0.0169312169312172*G0_1_1 + 0.0169312169312172*G0_1_2 - 0.0112874779541445*G0_2_0 - 0.0423280423280423*G0_2_1 - 0.0423280423280423*G0_2_2; A[615] = -0.00282186948853619*G0_0_0 - 0.0134038800705469*G0_0_1 - 0.0134038800705468*G0_0_2 - 0.0134038800705464*G0_1_0 - 0.00282186948853624*G0_1_1 - 0.00282186948853626*G0_1_2 - 0.00282186948853618*G0_2_0 - 0.0134038800705469*G0_2_1 - 0.0134038800705468*G0_2_2; A[616] = -0.0112874779541446*G0_0_0 + 0.00282186948853617*G0_0_1 + 0.00282186948853619*G0_0_2 + 0.00282186948853592*G0_1_0 - 0.0112874779541446*G0_2_0 + 0.00282186948853612*G0_2_1 + 0.00282186948853615*G0_2_2; A[617] = 0.016931216931217*G0_0_0 - 0.00282186948853603*G0_0_1 + 0.0169312169312168*G0_0_2 - 0.00282186948853567*G0_1_0 - 0.00282186948853633*G0_1_2 + 0.016931216931217*G0_2_0 - 0.00282186948853597*G0_2_1 + 0.0169312169312168*G0_2_2; A[618] = 0.0846560846560848*G0_0_0 + 0.0423280423280422*G0_0_1 + 0.0846560846560847*G0_0_2 + 0.0423280423280421*G0_1_0 + 0.0225749559082896*G0_1_1 + 0.0423280423280422*G0_1_2 + 0.0846560846560848*G0_2_0 + 0.0423280423280422*G0_2_1 + 0.0846560846560847*G0_2_2; A[619] = 0.0169312169312169*G0_0_0 - 0.00282186948853599*G0_0_1 + 0.0169312169312171*G0_0_2 - 0.00282186948853602*G0_1_0 - 0.00282186948853552*G0_1_2 + 0.0169312169312169*G0_2_0 - 0.00282186948853603*G0_2_1 + 0.0169312169312171*G0_2_2; A[620] = 0.118518518518518*G0_0_0 + 0.160846560846561*G0_0_1 + 0.0677248677248674*G0_0_2 + 0.025396825396825*G0_1_0 - 0.0169312169312177*G0_1_1 + 0.16084656084656*G0_1_2 + 0.118518518518518*G0_2_0 + 0.160846560846561*G0_2_1 + 0.0677248677248674*G0_2_2; A[621] = -0.0846560846560848*G0_0_0 - 0.177777777777778*G0_0_1 - 0.270899470899471*G0_0_2 - 0.0423280423280421*G0_1_0 - 0.0169312169312163*G0_1_1 - 0.177777777777777*G0_1_2 - 0.0846560846560848*G0_2_0 - 0.177777777777778*G0_2_1 - 0.270899470899471*G0_2_2; A[622] = -0.0169312169312168*G0_0_0 + 0.00282186948853631*G0_0_1 + 0.0677248677248682*G0_0_2 + 0.00282186948853606*G0_1_0 + 0.00564373897707248*G0_1_1 + 0.00282186948853666*G0_1_2 - 0.0169312169312168*G0_2_0 + 0.0028218694885363*G0_2_1 + 0.0677248677248682*G0_2_2; A[623] = 0.0225749559082894*G0_0_0 - 0.0197530864197531*G0_0_1 + 0.0225749559082892*G0_0_2 - 0.0197530864197536*G0_1_0 + 0.0225749559082891*G0_1_1 - 0.0197530864197534*G0_1_2 + 0.0225749559082893*G0_2_0 - 0.0197530864197531*G0_2_1 + 0.0225749559082892*G0_2_2; A[624] = 0.0225749559082893*G0_0_0 + 0.00282186948853594*G0_0_1 + 0.0225749559082892*G0_0_2 + 0.00282186948853654*G0_1_0 + 0.00282186948853605*G0_1_2 + 0.0225749559082893*G0_2_0 + 0.00282186948853588*G0_2_1 + 0.0225749559082893*G0_2_2; A[625] = 0.022574955908289*G0_0_0 + 0.00282186948853596*G0_0_1 + 0.0225749559082892*G0_0_2 + 0.00282186948853611*G0_1_0 + 0.00282186948853643*G0_1_2 + 0.022574955908289*G0_2_0 + 0.002821869488536*G0_2_1 + 0.0225749559082892*G0_2_2; A[626] = 0.0677248677248675*G0_0_0 + 0.160846560846561*G0_0_1 + 0.118518518518518*G0_0_2 + 0.16084656084656*G0_1_0 - 0.0169312169312173*G0_1_1 + 0.0253968253968253*G0_1_2 + 0.0677248677248674*G0_2_0 + 0.160846560846561*G0_2_1 + 0.118518518518518*G0_2_2; A[627] = 0.0677248677248676*G0_0_0 + 0.00282186948853633*G0_0_1 - 0.016931216931217*G0_0_2 + 0.00282186948853634*G0_1_0 + 0.00564373897707231*G0_1_1 + 0.00282186948853621*G0_1_2 + 0.0677248677248677*G0_2_0 + 0.00282186948853639*G0_2_1 - 0.0169312169312171*G0_2_2; A[628] = -0.270899470899471*G0_0_0 - 0.177777777777778*G0_0_1 - 0.0846560846560846*G0_0_2 - 0.177777777777777*G0_1_0 - 0.0169312169312165*G0_1_1 - 0.0423280423280421*G0_1_2 - 0.270899470899471*G0_2_0 - 0.177777777777778*G0_2_1 - 0.0846560846560845*G0_2_2; A[629] = -0.135449735449735*G0_0_0 - 0.022574955908289*G0_0_1 - 0.135449735449736*G0_0_2 - 0.0225749559082894*G0_1_0 - 0.0451499118165787*G0_1_1 - 0.0225749559082897*G0_1_2 - 0.135449735449736*G0_2_0 - 0.0225749559082889*G0_2_1 - 0.135449735449735*G0_2_2; A[630] = -0.00776014109347444*G0_0_0 - 0.00776014109347444*G0_0_1 - 0.00776014109347444*G0_0_2 - 0.0253968253968255*G0_1_0 - 0.0253968253968255*G0_1_1 - 0.0253968253968255*G0_1_2 - 0.00776014109347443*G0_2_0 - 0.00776014109347443*G0_2_1 - 0.00776014109347443*G0_2_2; A[631] = 0.00776014109347445*G0_0_0 + 0.00776014109347447*G0_2_0; A[632] = -0.0458553791887129*G0_0_1 - 0.0705467372134042*G0_1_1 - 0.0458553791887129*G0_2_1; A[633] = 0.00776014109347446*G0_0_2 + 0.00776014109347446*G0_2_2; A[634] = -0.0790123456790126*G0_0_1 - 0.158024691358026*G0_0_2 + 0.0225749559082893*G0_1_1 - 0.079012345679013*G0_1_2 - 0.0790123456790126*G0_2_1 - 0.158024691358026*G0_2_2; A[635] = 0.0310405643738979*G0_0_1 + 0.0902998236331577*G0_0_2 - 0.0112874779541446*G0_1_1 + 0.0310405643738983*G0_1_2 + 0.0310405643738979*G0_2_1 + 0.0902998236331577*G0_2_2; A[636] = -0.0112874779541446*G0_0_1 - 0.0451499118165786*G0_0_2 - 0.0112874779541446*G0_1_2 - 0.0112874779541447*G0_2_1 - 0.0451499118165786*G0_2_2; A[637] = -0.0112874779541446*G0_0_0 - 0.0112874779541448*G0_0_2 - 0.0112874779541447*G0_2_0 - 0.0112874779541448*G0_2_2; A[638] = -0.00282186948853616*G0_0_0 - 0.00282186948853598*G0_0_2 - 0.0028218694885361*G0_2_0 - 0.00282186948853597*G0_2_2; A[639] = -0.0112874779541446*G0_0_0 - 0.0112874779541446*G0_0_2 - 0.0112874779541446*G0_2_0 - 0.0112874779541447*G0_2_2; A[640] = -0.0451499118165788*G0_0_0 - 0.0112874779541448*G0_0_1 - 0.0112874779541448*G0_1_0 - 0.0451499118165788*G0_2_0 - 0.0112874779541448*G0_2_1; A[641] = 0.0902998236331578*G0_0_0 + 0.031040564373898*G0_0_1 + 0.0310405643738983*G0_1_0 - 0.0112874779541445*G0_1_1 + 0.0902998236331579*G0_2_0 + 0.0310405643738981*G0_2_1; A[642] = -0.158024691358026*G0_0_0 - 0.0790123456790126*G0_0_1 - 0.0790123456790129*G0_1_0 + 0.0225749559082893*G0_1_1 - 0.158024691358026*G0_2_0 - 0.0790123456790126*G0_2_1; A[643] = 0.0112874779541446*G0_0_0 + 0.0112874779541446*G0_0_1 - 0.0225749559082895*G0_1_0 - 0.0225749559082894*G0_1_1 + 0.0112874779541449*G0_1_2 + 0.0112874779541446*G0_2_0 + 0.0112874779541446*G0_2_1; A[644] = 0.00282186948853633*G0_0_0 + 0.00282186948853629*G0_0_1 - 0.0112874779541444*G0_1_0 - 0.0112874779541445*G0_1_1 + 0.00282186948853593*G0_1_2 + 0.00282186948853632*G0_2_0 + 0.00282186948853628*G0_2_1; A[645] = 0.0112874779541446*G0_0_0 + 0.0112874779541446*G0_0_1 + 0.0112874779541447*G0_1_2 + 0.0112874779541446*G0_2_0 + 0.0112874779541446*G0_2_1; A[646] = 0.0451499118165787*G0_0_0 + 0.033862433862434*G0_0_1 + 0.0451499118165787*G0_0_2 + 0.0790123456790123*G0_1_0 + 0.112874779541446*G0_1_1 + 0.0790123456790123*G0_1_2 + 0.0451499118165787*G0_2_0 + 0.033862433862434*G0_2_1 + 0.0451499118165787*G0_2_2; A[647] = -0.0902998236331576*G0_0_0 - 0.0592592592592596*G0_0_1 - 0.0902998236331576*G0_0_2 - 0.1326278659612*G0_1_0 - 0.220105820105821*G0_1_1 - 0.1326278659612*G0_1_2 - 0.0902998236331577*G0_2_0 - 0.0592592592592596*G0_2_1 - 0.0902998236331577*G0_2_2; A[648] = 0.158024691358026*G0_0_0 + 0.079012345679013*G0_0_1 + 0.158024691358026*G0_0_2 + 0.079012345679013*G0_1_0 + 0.203174603174604*G0_1_1 + 0.079012345679013*G0_1_2 + 0.158024691358026*G0_2_0 + 0.079012345679013*G0_2_1 + 0.158024691358026*G0_2_2; A[649] = 0.0112874779541447*G0_0_1 + 0.0112874779541447*G0_0_2 + 0.0112874779541448*G0_1_0 - 0.0225749559082895*G0_1_1 - 0.0225749559082894*G0_1_2 + 0.0112874779541447*G0_2_1 + 0.0112874779541447*G0_2_2; A[650] = 0.00282186948853617*G0_0_1 + 0.0028218694885361*G0_0_2 + 0.00282186948853601*G0_1_0 - 0.0112874779541446*G0_1_1 - 0.0112874779541446*G0_1_2 + 0.00282186948853621*G0_2_1 + 0.00282186948853614*G0_2_2; A[651] = 0.0112874779541447*G0_0_1 + 0.0112874779541447*G0_0_2 + 0.0112874779541448*G0_1_0 + 0.0112874779541447*G0_2_1 + 0.0112874779541447*G0_2_2; A[652] = 0.0225749559082894*G0_0_0 - 0.0112874779541446*G0_0_1 + 0.0225749559082895*G0_0_2 - 0.0112874779541448*G0_1_0 - 0.0112874779541445*G0_1_2 + 0.0225749559082894*G0_2_0 - 0.0112874779541446*G0_2_1 + 0.0225749559082895*G0_2_2; A[653] = -0.112874779541446*G0_0_0 - 0.0112874779541444*G0_0_1 - 0.112874779541446*G0_0_2 - 0.0112874779541444*G0_1_0 - 0.0451499118165784*G0_1_1 - 0.0112874779541445*G0_1_2 - 0.112874779541446*G0_2_0 - 0.0112874779541444*G0_2_1 - 0.112874779541446*G0_2_2; A[654] = 0.0225749559082896*G0_0_0 - 0.0112874779541444*G0_0_1 + 0.0225749559082894*G0_0_2 - 0.0112874779541445*G0_1_0 - 0.0112874779541447*G0_1_2 + 0.0225749559082896*G0_2_0 - 0.0112874779541444*G0_2_1 + 0.0225749559082895*G0_2_2; A[655] = -0.0225749559082887*G0_0_0 - 0.0338624338624338*G0_0_1 + 0.0112874779541451*G0_1_0 + 0.0677248677248681*G0_1_1 - 0.0338624338624333*G0_1_2 - 0.0225749559082887*G0_2_0 - 0.0338624338624338*G0_2_1; A[656] = 0.112874779541446*G0_0_0 + 0.101587301587302*G0_0_1 + 0.0112874779541444*G0_1_0 - 0.0677248677248681*G0_1_1 + 0.101587301587301*G0_1_2 + 0.112874779541446*G0_2_0 + 0.101587301587302*G0_2_1; A[657] = -0.0225749559082897*G0_0_0 - 0.0338624338624343*G0_0_1 + 0.0112874779541445*G0_1_0 + 0.0225749559082891*G0_1_1 - 0.0338624338624343*G0_1_2 - 0.0225749559082897*G0_2_0 - 0.0338624338624343*G0_2_1; A[658] = 0.0112874779541452*G0_0_1 + 0.0112874779541448*G0_1_0 - 0.0451499118165782*G0_1_1 + 0.0112874779541451*G0_1_2 + 0.0112874779541452*G0_2_1; A[659] = 0.0112874779541447*G0_0_1 + 0.0112874779541444*G0_1_0 + 0.0112874779541447*G0_1_2 + 0.0112874779541447*G0_2_1; A[660] = 0.0112874779541445*G0_0_1 + 0.0112874779541447*G0_1_0 + 0.0112874779541442*G0_1_2 + 0.0112874779541445*G0_2_1; A[661] = -0.033862433862434*G0_0_1 - 0.022574955908289*G0_0_2 - 0.0338624338624335*G0_1_0 + 0.067724867724868*G0_1_1 + 0.0112874779541447*G0_1_2 - 0.033862433862434*G0_2_1 - 0.0225749559082889*G0_2_2; A[662] = -0.033862433862434*G0_0_1 - 0.0225749559082891*G0_0_2 - 0.0338624338624339*G0_1_0 + 0.0225749559082892*G0_1_1 + 0.0112874779541447*G0_1_2 - 0.0338624338624341*G0_2_1 - 0.0225749559082892*G0_2_2; A[663] = 0.101587301587302*G0_0_1 + 0.112874779541446*G0_0_2 + 0.101587301587301*G0_1_0 - 0.0677248677248679*G0_1_1 + 0.0112874779541444*G0_1_2 + 0.101587301587302*G0_2_1 + 0.112874779541446*G0_2_2; A[664] = 0.0902998236331566*G0_1_1; A[665] = -0.0705467372134042*G0_0_0 - 0.0705467372134042*G0_0_1 - 0.0705467372134042*G0_0_2 - 0.0246913580246913*G0_1_0 - 0.0246913580246913*G0_1_1 - 0.0246913580246913*G0_1_2 - 0.0246913580246913*G0_2_0 - 0.0246913580246913*G0_2_1 - 0.0246913580246913*G0_2_2; A[666] = -0.0253968253968255*G0_0_0 - 0.017636684303351*G0_1_0 - 0.017636684303351*G0_2_0; A[667] = 0.00776014109347447*G0_1_1 + 0.00776014109347447*G0_2_1; A[668] = 0.0077601410934744*G0_1_2 + 0.00776014109347439*G0_2_2; A[669] = -0.0112874779541448*G0_1_1 - 0.0112874779541447*G0_1_2 - 0.0112874779541448*G0_2_1 - 0.0112874779541447*G0_2_2; A[670] = -0.00282186948853615*G0_1_1 - 0.00282186948853622*G0_1_2 - 0.00282186948853612*G0_2_1 - 0.00282186948853618*G0_2_2; A[671] = -0.0112874779541449*G0_1_1 - 0.0112874779541448*G0_1_2 - 0.0112874779541449*G0_2_1 - 0.0112874779541448*G0_2_2; A[672] = -0.022574955908289*G0_0_0 - 0.0338624338624339*G0_0_2 - 0.033862433862434*G0_1_0 - 0.0451499118165786*G0_1_2 - 0.0338624338624339*G0_2_0 - 0.0451499118165786*G0_2_2; A[673] = -0.0112874779541447*G0_0_0 - 0.0141093474426807*G0_0_2 - 0.0141093474426807*G0_1_0 - 0.016931216931217*G0_1_2 - 0.0141093474426808*G0_2_0 - 0.016931216931217*G0_2_2; A[674] = -0.0112874779541446*G0_0_2 - 0.0112874779541449*G0_1_0 - 0.0225749559082894*G0_1_2 - 0.0112874779541449*G0_2_0 - 0.0225749559082894*G0_2_2; A[675] = -0.022574955908289*G0_0_0 - 0.0338624338624339*G0_0_1 - 0.0338624338624339*G0_1_0 - 0.0451499118165787*G0_1_1 - 0.0338624338624339*G0_2_0 - 0.0451499118165787*G0_2_1; A[676] = -0.0112874779541446*G0_0_0 - 0.0141093474426807*G0_0_1 - 0.0141093474426807*G0_1_0 - 0.0169312169312166*G0_1_1 - 0.0141093474426807*G0_2_0 - 0.0169312169312167*G0_2_1; A[677] = -0.0112874779541446*G0_0_1 - 0.0112874779541447*G0_1_0 - 0.0225749559082894*G0_1_1 - 0.0112874779541447*G0_2_0 - 0.0225749559082894*G0_2_1; A[678] = 0.022574955908289*G0_0_0 + 0.022574955908289*G0_0_1 + 0.101587301587302*G0_0_2 + 0.101587301587302*G0_1_0 + 0.101587301587302*G0_1_1 + 0.0225749559082891*G0_1_2 + 0.101587301587302*G0_2_0 + 0.101587301587302*G0_2_1 + 0.0225749559082891*G0_2_2; A[679] = -0.0112874779541445*G0_0_0 - 0.0112874779541444*G0_0_1 - 0.0423280423280426*G0_0_2 - 0.0423280423280428*G0_1_0 - 0.0423280423280428*G0_1_1 + 0.016931216931217*G0_1_2 - 0.0423280423280428*G0_2_0 - 0.0423280423280428*G0_2_1 + 0.016931216931217*G0_2_2; A[680] = 0.0112874779541446*G0_0_2 + 0.0112874779541448*G0_1_0 + 0.0112874779541449*G0_1_1 - 0.0225749559082893*G0_1_2 + 0.0112874779541448*G0_2_0 + 0.0112874779541449*G0_2_1 - 0.0225749559082893*G0_2_2; A[681] = 0.0225749559082891*G0_0_0 + 0.101587301587302*G0_0_1 + 0.0225749559082891*G0_0_2 + 0.101587301587302*G0_1_0 + 0.0225749559082891*G0_1_1 + 0.101587301587302*G0_1_2 + 0.101587301587302*G0_2_0 + 0.0225749559082891*G0_2_1 + 0.101587301587302*G0_2_2; A[682] = -0.0112874779541445*G0_0_0 - 0.0423280423280427*G0_0_1 - 0.0112874779541445*G0_0_2 - 0.0423280423280424*G0_1_0 + 0.0169312169312172*G0_1_1 - 0.0423280423280423*G0_1_2 - 0.0423280423280424*G0_2_0 + 0.0169312169312172*G0_2_1 - 0.0423280423280423*G0_2_2; A[683] = 0.0112874779541448*G0_0_1 + 0.0112874779541447*G0_1_0 - 0.0225749559082895*G0_1_1 + 0.0112874779541447*G0_1_2 + 0.0112874779541447*G0_2_0 - 0.0225749559082894*G0_2_1 + 0.0112874779541447*G0_2_2; A[684] = 0.203174603174604*G0_0_0 + 0.124162257495591*G0_0_1 + 0.124162257495591*G0_0_2 + 0.124162257495591*G0_1_0 + 0.203174603174604*G0_1_1 + 0.203174603174604*G0_1_2 + 0.124162257495591*G0_2_0 + 0.203174603174604*G0_2_1 + 0.203174603174604*G0_2_2; A[685] = -0.220105820105821*G0_0_0 - 0.0874779541446208*G0_0_1 - 0.0874779541446208*G0_0_2 - 0.160846560846561*G0_1_0 - 0.118518518518518*G0_1_1 - 0.118518518518519*G0_1_2 - 0.160846560846561*G0_2_0 - 0.118518518518519*G0_2_1 - 0.118518518518519*G0_2_2; A[686] = 0.112874779541447*G0_0_0 + 0.0338624338624339*G0_0_1 + 0.0338624338624339*G0_0_2 + 0.0790123456790124*G0_1_0 + 0.0451499118165787*G0_1_1 + 0.0451499118165787*G0_1_2 + 0.0790123456790124*G0_2_0 + 0.0451499118165786*G0_2_1 + 0.0451499118165787*G0_2_2; A[687] = -0.0451499118165789*G0_0_0 - 0.0564373897707228*G0_0_1 - 0.0564373897707228*G0_0_2 - 0.0564373897707233*G0_1_0 - 0.0677248677248679*G0_1_1 - 0.0677248677248676*G0_1_2 - 0.0564373897707233*G0_2_0 - 0.0677248677248678*G0_2_1 - 0.0677248677248676*G0_2_2; A[688] = -0.0112874779541452*G0_0_1 - 0.0112874779541447*G0_0_2 - 0.011287477954145*G0_1_0 - 0.0225749559082896*G0_1_1 - 0.0225749559082894*G0_1_2 - 0.011287477954145*G0_2_0 - 0.0225749559082896*G0_2_1 - 0.0225749559082895*G0_2_2; A[689] = -0.011287477954145*G0_0_1 - 0.0112874779541454*G0_0_2 - 0.0112874779541448*G0_1_0 - 0.0225749559082893*G0_1_1 - 0.0225749559082896*G0_1_2 - 0.0112874779541448*G0_2_0 - 0.0225749559082893*G0_2_1 - 0.0225749559082896*G0_2_2; A[690] = -0.0451499118165784*G0_0_0 - 0.0338624338624336*G0_0_1 - 0.0338624338624336*G0_0_2 - 0.0338624338624343*G0_1_0 - 0.135449735449736*G0_1_1 - 0.135449735449736*G0_1_2 - 0.0338624338624343*G0_2_0 - 0.135449735449736*G0_2_1 - 0.135449735449736*G0_2_2; A[691] = 0.0112874779541444*G0_0_1 + 0.0112874779541445*G0_0_2 + 0.011287477954145*G0_1_0 + 0.0451499118165788*G0_1_1 + 0.0451499118165788*G0_1_2 + 0.011287477954145*G0_2_0 + 0.0451499118165787*G0_2_1 + 0.0451499118165787*G0_2_2; A[692] = 0.0112874779541445*G0_0_1 + 0.0112874779541445*G0_0_2 + 0.0112874779541448*G0_1_0 + 0.0451499118165789*G0_1_1 + 0.0451499118165789*G0_1_2 + 0.0112874779541447*G0_2_0 + 0.0451499118165789*G0_2_1 + 0.0451499118165789*G0_2_2; A[693] = -0.0677248677248674*G0_0_0 - 0.0790123456790122*G0_0_1 - 0.169312169312169*G0_0_2 - 0.16931216931217*G0_1_0 - 0.0677248677248681*G0_1_1 - 0.270899470899472*G0_1_2 - 0.16931216931217*G0_2_0 - 0.0677248677248681*G0_2_1 - 0.270899470899472*G0_2_2; A[694] = 0.0677248677248673*G0_0_0 + 0.0564373897707228*G0_0_1 + 0.101587301587301*G0_0_2 + 0.101587301587302*G0_1_0 + 0.067724867724868*G0_1_1 + 0.135449735449735*G0_1_2 + 0.101587301587302*G0_2_0 + 0.0677248677248679*G0_2_1 + 0.135449735449736*G0_2_2; A[695] = 0.0225749559082892*G0_0_0 + 0.0112874779541451*G0_0_1 + 0.056437389770723*G0_0_2 + 0.0564373897707235*G0_1_0 + 0.0225749559082893*G0_1_1 + 0.0902998236331576*G0_1_2 + 0.0564373897707235*G0_2_0 + 0.0225749559082894*G0_2_1 + 0.0902998236331575*G0_2_2; A[696] = -0.0677248677248674*G0_0_0 - 0.169312169312169*G0_0_1 - 0.0790123456790121*G0_0_2 - 0.16931216931217*G0_1_0 - 0.270899470899471*G0_1_1 - 0.0677248677248675*G0_1_2 - 0.16931216931217*G0_2_0 - 0.270899470899471*G0_2_1 - 0.0677248677248675*G0_2_2; A[697] = 0.0677248677248673*G0_0_0 + 0.101587301587301*G0_0_1 + 0.0564373897707228*G0_0_2 + 0.101587301587302*G0_1_0 + 0.135449735449735*G0_1_1 + 0.0677248677248677*G0_1_2 + 0.101587301587302*G0_2_0 + 0.135449735449735*G0_2_1 + 0.0677248677248676*G0_2_2; A[698] = 0.0225749559082891*G0_0_0 + 0.056437389770723*G0_0_1 + 0.0112874779541447*G0_0_2 + 0.056437389770723*G0_1_0 + 0.0902998236331571*G0_1_1 + 0.0225749559082893*G0_1_2 + 0.0564373897707231*G0_2_0 + 0.090299823633157*G0_2_1 + 0.0225749559082893*G0_2_2; A[699] = 0.0902998236331574*G0_0_0 + 0.0902998236331573*G0_0_1 + 0.0902998236331575*G0_0_2 + 0.0902998236331577*G0_1_0 + 0.0902998236331576*G0_1_1 + 0.0902998236331571*G0_1_2 + 0.0902998236331577*G0_2_0 + 0.0902998236331576*G0_2_1 + 0.0902998236331572*G0_2_2; A[700] = 0.0529100529100532*G0_0_0 + 0.0529100529100532*G0_0_1 + 0.0529100529100532*G0_0_2 + 0.0202821869488536*G0_1_0 + 0.0202821869488536*G0_1_1 + 0.0202821869488536*G0_1_2 + 0.0202821869488535*G0_2_0 + 0.0202821869488536*G0_2_1 + 0.0202821869488536*G0_2_2; A[701] = 0.0529100529100531*G0_0_0 + 0.0326278659611995*G0_1_0 + 0.0326278659611995*G0_2_0; A[702] = 0.0051146384479718*G0_1_1 + 0.0051146384479718*G0_2_1; A[703] = 0.00511463844797175*G0_1_2 + 0.00511463844797175*G0_2_2; A[704] = -0.00282186948853621*G0_1_1 - 0.00282186948853615*G0_1_2 - 0.00282186948853615*G0_2_1 - 0.00282186948853608*G0_2_2; A[705] = -0.00917107583774254*G0_1_1 - 0.00917107583774259*G0_1_2 - 0.00917107583774254*G0_2_1 - 0.00917107583774262*G0_2_2; A[706] = -0.00282186948853618*G0_1_1 - 0.00282186948853617*G0_1_2 - 0.0028218694885362*G0_2_1 - 0.00282186948853618*G0_2_2; A[707] = 0.0169312169312167*G0_0_0 + 0.0592592592592595*G0_0_2 + 0.059259259259259*G0_1_0 + 0.0902998236331573*G0_1_2 + 0.059259259259259*G0_2_0 + 0.0902998236331573*G0_2_2; A[708] = -0.00282186948853612*G0_0_0 + 0.0105820105820102*G0_0_2 + 0.0105820105820106*G0_1_0 + 0.0211640211640209*G0_1_2 + 0.0105820105820107*G0_2_0 + 0.0211640211640209*G0_2_2; A[709] = -0.002821869488536*G0_0_2 - 0.00282186948853616*G0_1_0 - 0.0169312169312168*G0_1_2 - 0.00282186948853618*G0_2_0 - 0.0169312169312168*G0_2_2; A[710] = 0.0169312169312168*G0_0_0 + 0.0592592592592595*G0_0_1 + 0.0592592592592591*G0_1_0 + 0.0902998236331574*G0_1_1 + 0.0592592592592592*G0_2_0 + 0.0902998236331574*G0_2_1; A[711] = -0.00282186948853615*G0_0_0 + 0.0105820105820103*G0_0_1 + 0.0105820105820105*G0_1_0 + 0.0211640211640207*G0_1_1 + 0.0105820105820105*G0_2_0 + 0.0211640211640207*G0_2_1; A[712] = -0.00282186948853594*G0_0_1 - 0.00282186948853616*G0_1_0 - 0.0169312169312169*G0_1_1 - 0.00282186948853609*G0_2_0 - 0.0169312169312168*G0_2_1; A[713] = 0.0169312169312171*G0_0_0 + 0.016931216931217*G0_0_1 - 0.0423280423280429*G0_0_2 - 0.0423280423280423*G0_1_0 - 0.0423280423280422*G0_1_1 - 0.0112874779541446*G0_1_2 - 0.0423280423280423*G0_2_0 - 0.0423280423280422*G0_2_1 - 0.0112874779541446*G0_2_2; A[714] = -0.00282186948853629*G0_0_0 - 0.00282186948853628*G0_0_1 - 0.0134038800705463*G0_0_2 - 0.0134038800705468*G0_1_0 - 0.0134038800705467*G0_1_1 - 0.00282186948853607*G0_1_2 - 0.0134038800705468*G0_2_0 - 0.0134038800705468*G0_2_1 - 0.00282186948853606*G0_2_2; A[715] = 0.00282186948853601*G0_0_2 + 0.00282186948853619*G0_1_0 + 0.00282186948853617*G0_1_1 - 0.0112874779541446*G0_1_2 + 0.00282186948853621*G0_2_0 + 0.0028218694885362*G0_2_1 - 0.0112874779541446*G0_2_2; A[716] = 0.016931216931217*G0_0_0 - 0.0423280423280428*G0_0_1 + 0.016931216931217*G0_0_2 - 0.0423280423280422*G0_1_0 - 0.0112874779541445*G0_1_1 - 0.0423280423280422*G0_1_2 - 0.0423280423280423*G0_2_0 - 0.0112874779541445*G0_2_1 - 0.0423280423280422*G0_2_2; A[717] = -0.00282186948853619*G0_0_0 - 0.0134038800705464*G0_0_1 - 0.00282186948853618*G0_0_2 - 0.0134038800705469*G0_1_0 - 0.00282186948853623*G0_1_1 - 0.0134038800705469*G0_1_2 - 0.0134038800705468*G0_2_0 - 0.00282186948853626*G0_2_1 - 0.0134038800705468*G0_2_2; A[718] = 0.002821869488536*G0_0_1 + 0.00282186948853617*G0_1_0 - 0.0112874779541446*G0_1_1 + 0.00282186948853621*G0_1_2 + 0.0028218694885361*G0_2_0 - 0.0112874779541446*G0_2_1 + 0.00282186948853614*G0_2_2; A[719] = -0.220105820105821*G0_0_0 - 0.160846560846561*G0_0_1 - 0.160846560846561*G0_0_2 - 0.0874779541446208*G0_1_0 - 0.118518518518518*G0_1_1 - 0.118518518518519*G0_1_2 - 0.0874779541446208*G0_2_0 - 0.118518518518519*G0_2_1 - 0.118518518518519*G0_2_2; A[720] = 0.334391534391535*G0_0_0 + 0.167195767195767*G0_0_1 + 0.167195767195767*G0_0_2 + 0.167195767195767*G0_1_0 + 0.24973544973545*G0_1_1 + 0.24973544973545*G0_1_2 + 0.167195767195767*G0_2_0 + 0.24973544973545*G0_2_1 + 0.24973544973545*G0_2_2; A[721] = -0.220105820105821*G0_0_0 - 0.0592592592592595*G0_0_1 - 0.0592592592592596*G0_0_2 - 0.1326278659612*G0_1_0 - 0.0902998236331573*G0_1_1 - 0.0902998236331574*G0_1_2 - 0.1326278659612*G0_2_0 - 0.0902998236331574*G0_2_1 - 0.0902998236331574*G0_2_2; A[722] = 0.0225749559082893*G0_0_0 + 0.0423280423280419*G0_0_1 + 0.0423280423280419*G0_0_2 + 0.0423280423280421*G0_1_0 + 0.084656084656084*G0_1_1 + 0.0846560846560842*G0_1_2 + 0.0423280423280421*G0_2_0 + 0.084656084656084*G0_2_1 + 0.0846560846560842*G0_2_2; A[723] = -0.00282186948853573*G0_0_1 - 0.00282186948853577*G0_0_2 - 0.00282186948853616*G0_1_0 + 0.0169312169312171*G0_1_1 + 0.016931216931217*G0_1_2 - 0.00282186948853613*G0_2_0 + 0.016931216931217*G0_2_1 + 0.016931216931217*G0_2_2; A[724] = -0.00282186948853587*G0_0_1 - 0.00282186948853582*G0_0_2 - 0.00282186948853605*G0_1_0 + 0.0169312169312171*G0_1_1 + 0.016931216931217*G0_1_2 - 0.00282186948853608*G0_2_0 + 0.0169312169312171*G0_2_1 + 0.0169312169312171*G0_2_2; A[725] = 0.022574955908289*G0_0_0 - 0.0197530864197533*G0_0_1 - 0.0197530864197533*G0_0_2 - 0.0197530864197535*G0_1_0 + 0.0225749559082888*G0_1_1 + 0.0225749559082891*G0_1_2 - 0.0197530864197535*G0_2_0 + 0.0225749559082889*G0_2_1 + 0.0225749559082891*G0_2_2; A[726] = 0.00282186948853627*G0_0_1 + 0.00282186948853625*G0_0_2 + 0.00282186948853618*G0_1_0 + 0.0225749559082896*G0_1_1 + 0.0225749559082894*G0_1_2 + 0.00282186948853615*G0_2_0 + 0.0225749559082894*G0_2_1 + 0.0225749559082893*G0_2_2; A[727] = 0.00282186948853634*G0_0_1 + 0.00282186948853632*G0_0_2 + 0.00282186948853608*G0_1_0 + 0.0225749559082893*G0_1_1 + 0.0225749559082893*G0_1_2 + 0.00282186948853611*G0_2_0 + 0.0225749559082893*G0_2_1 + 0.0225749559082893*G0_2_2; A[728] = -0.0169312169312171*G0_0_0 + 0.0253968253968251*G0_0_1 + 0.16084656084656*G0_0_2 + 0.160846560846561*G0_1_0 + 0.118518518518518*G0_1_1 + 0.0677248677248675*G0_1_2 + 0.160846560846561*G0_2_0 + 0.118518518518518*G0_2_1 + 0.0677248677248675*G0_2_2; A[729] = -0.0169312169312166*G0_0_0 - 0.0423280423280418*G0_0_1 - 0.177777777777778*G0_0_2 - 0.177777777777777*G0_1_0 - 0.084656084656084*G0_1_1 - 0.270899470899471*G0_1_2 - 0.177777777777777*G0_2_0 - 0.0846560846560841*G0_2_1 - 0.270899470899471*G0_2_2; A[730] = 0.00564373897707242*G0_0_0 + 0.00282186948853587*G0_0_1 + 0.00282186948853634*G0_0_2 + 0.00282186948853617*G0_1_0 - 0.0169312169312171*G0_1_1 + 0.0677248677248679*G0_1_2 + 0.00282186948853616*G0_2_0 - 0.0169312169312171*G0_2_1 + 0.0677248677248679*G0_2_2; A[731] = -0.0169312169312172*G0_0_0 + 0.16084656084656*G0_0_1 + 0.0253968253968251*G0_0_2 + 0.160846560846561*G0_1_0 + 0.0677248677248673*G0_1_1 + 0.118518518518518*G0_1_2 + 0.160846560846561*G0_2_0 + 0.0677248677248674*G0_2_1 + 0.118518518518518*G0_2_2; A[732] = -0.0169312169312166*G0_0_0 - 0.177777777777778*G0_0_1 - 0.0423280423280419*G0_0_2 - 0.177777777777778*G0_1_0 - 0.270899470899471*G0_1_1 - 0.0846560846560841*G0_1_2 - 0.177777777777778*G0_2_0 - 0.270899470899471*G0_2_1 - 0.0846560846560841*G0_2_2; A[733] = 0.00564373897707234*G0_0_0 + 0.00282186948853616*G0_0_1 + 0.00282186948853582*G0_0_2 + 0.00282186948853632*G0_1_0 + 0.0677248677248681*G0_1_1 - 0.0169312169312168*G0_1_2 + 0.0028218694885363*G0_2_0 + 0.0677248677248679*G0_2_1 - 0.0169312169312168*G0_2_2; A[734] = -0.0451499118165784*G0_0_0 - 0.0225749559082894*G0_0_1 - 0.0225749559082894*G0_0_2 - 0.0225749559082888*G0_1_0 - 0.135449735449735*G0_1_1 - 0.135449735449735*G0_1_2 - 0.0225749559082887*G0_2_0 - 0.135449735449735*G0_2_1 - 0.135449735449735*G0_2_2; A[735] = -0.0253968253968256*G0_0_0 - 0.0253968253968256*G0_0_1 - 0.0253968253968256*G0_0_2 - 0.0077601410934744*G0_1_0 - 0.00776014109347441*G0_1_1 - 0.0077601410934744*G0_1_2 - 0.00776014109347439*G0_2_0 - 0.00776014109347439*G0_2_1 - 0.00776014109347439*G0_2_2; A[736] = -0.0705467372134042*G0_0_0 - 0.0458553791887129*G0_1_0 - 0.0458553791887129*G0_2_0; A[737] = 0.00776014109347442*G0_1_1 + 0.00776014109347443*G0_2_1; A[738] = 0.00776014109347453*G0_1_2 + 0.00776014109347454*G0_2_2; A[739] = -0.0112874779541446*G0_1_1 - 0.0112874779541447*G0_1_2 - 0.0112874779541446*G0_2_1 - 0.0112874779541447*G0_2_2; A[740] = -0.00282186948853617*G0_1_1 - 0.002821869488536*G0_1_2 - 0.0028218694885362*G0_2_1 - 0.00282186948853601*G0_2_2; A[741] = -0.0112874779541448*G0_1_1 - 0.0112874779541449*G0_1_2 - 0.0112874779541448*G0_2_1 - 0.0112874779541449*G0_2_2; A[742] = 0.0225749559082893*G0_0_0 - 0.0790123456790129*G0_0_2 - 0.0790123456790124*G0_1_0 - 0.158024691358026*G0_1_2 - 0.0790123456790124*G0_2_0 - 0.158024691358026*G0_2_2; A[743] = -0.0112874779541446*G0_0_0 + 0.0310405643738983*G0_0_2 + 0.0310405643738979*G0_1_0 + 0.0902998236331578*G0_1_2 + 0.0310405643738979*G0_2_0 + 0.0902998236331578*G0_2_2; A[744] = -0.0112874779541449*G0_0_2 - 0.0112874779541448*G0_1_0 - 0.0451499118165791*G0_1_2 - 0.0112874779541448*G0_2_0 - 0.045149911816579*G0_2_2; A[745] = 0.0225749559082892*G0_0_0 - 0.079012345679013*G0_0_1 - 0.0790123456790125*G0_1_0 - 0.158024691358026*G0_1_1 - 0.0790123456790125*G0_2_0 - 0.158024691358026*G0_2_1; A[746] = -0.0112874779541446*G0_0_0 + 0.0310405643738982*G0_0_1 + 0.0310405643738979*G0_1_0 + 0.0902998236331577*G0_1_1 + 0.0310405643738979*G0_2_0 + 0.0902998236331577*G0_2_1; A[747] = -0.0112874779541448*G0_0_1 - 0.0112874779541447*G0_1_0 - 0.0451499118165788*G0_1_1 - 0.0112874779541447*G0_2_0 - 0.0451499118165788*G0_2_1; A[748] = -0.0225749559082894*G0_0_0 - 0.0225749559082894*G0_0_1 + 0.0112874779541449*G0_0_2 + 0.0112874779541445*G0_1_0 + 0.0112874779541445*G0_1_1 + 0.0112874779541445*G0_2_0 + 0.0112874779541445*G0_2_1; A[749] = -0.0112874779541444*G0_0_0 - 0.0112874779541444*G0_0_1 + 0.00282186948853591*G0_0_2 + 0.00282186948853618*G0_1_0 + 0.00282186948853613*G0_1_1 + 0.00282186948853619*G0_2_0 + 0.00282186948853614*G0_2_1; A[750] = 0.0112874779541447*G0_0_2 + 0.0112874779541448*G0_1_0 + 0.0112874779541448*G0_1_1 + 0.0112874779541448*G0_2_0 + 0.0112874779541448*G0_2_1; A[751] = -0.0225749559082893*G0_0_0 + 0.0112874779541449*G0_0_1 - 0.0225749559082893*G0_0_2 + 0.0112874779541446*G0_1_0 + 0.0112874779541446*G0_1_2 + 0.0112874779541446*G0_2_0 + 0.0112874779541446*G0_2_2; A[752] = -0.0112874779541446*G0_0_0 + 0.00282186948853593*G0_0_1 - 0.0112874779541446*G0_0_2 + 0.00282186948853617*G0_1_0 + 0.00282186948853612*G0_1_2 + 0.00282186948853619*G0_2_0 + 0.00282186948853615*G0_2_2; A[753] = 0.0112874779541448*G0_0_1 + 0.0112874779541447*G0_1_0 + 0.0112874779541447*G0_1_2 + 0.0112874779541447*G0_2_0 + 0.0112874779541447*G0_2_2; A[754] = 0.112874779541447*G0_0_0 + 0.0790123456790124*G0_0_1 + 0.0790123456790124*G0_0_2 + 0.0338624338624339*G0_1_0 + 0.0451499118165787*G0_1_1 + 0.0451499118165786*G0_1_2 + 0.0338624338624339*G0_2_0 + 0.0451499118165787*G0_2_1 + 0.0451499118165787*G0_2_2; A[755] = -0.220105820105821*G0_0_0 - 0.1326278659612*G0_0_1 - 0.1326278659612*G0_0_2 - 0.0592592592592595*G0_1_0 - 0.0902998236331573*G0_1_1 - 0.0902998236331573*G0_1_2 - 0.0592592592592595*G0_2_0 - 0.0902998236331574*G0_2_1 - 0.0902998236331574*G0_2_2; A[756] = 0.203174603174604*G0_0_0 + 0.079012345679013*G0_0_1 + 0.079012345679013*G0_0_2 + 0.079012345679013*G0_1_0 + 0.158024691358026*G0_1_1 + 0.158024691358026*G0_1_2 + 0.079012345679013*G0_2_0 + 0.158024691358026*G0_2_1 + 0.158024691358025*G0_2_2; A[757] = -0.0451499118165785*G0_0_0 - 0.0112874779541443*G0_0_1 - 0.0112874779541446*G0_0_2 - 0.0112874779541445*G0_1_0 - 0.112874779541446*G0_1_1 - 0.112874779541446*G0_1_2 - 0.0112874779541444*G0_2_0 - 0.112874779541446*G0_2_1 - 0.112874779541446*G0_2_2; A[758] = -0.0112874779541448*G0_0_1 - 0.0112874779541448*G0_0_2 - 0.0112874779541446*G0_1_0 + 0.0225749559082893*G0_1_1 + 0.0225749559082893*G0_1_2 - 0.0112874779541446*G0_2_0 + 0.0225749559082893*G0_2_1 + 0.0225749559082893*G0_2_2; A[759] = -0.0112874779541449*G0_0_1 - 0.0112874779541448*G0_0_2 - 0.0112874779541451*G0_1_0 + 0.022574955908289*G0_1_1 + 0.0225749559082891*G0_1_2 - 0.0112874779541451*G0_2_0 + 0.022574955908289*G0_2_1 + 0.0225749559082892*G0_2_2; A[760] = -0.0451499118165782*G0_0_0 + 0.011287477954145*G0_0_1 + 0.011287477954145*G0_0_2 + 0.0112874779541448*G0_1_0 + 0.0112874779541448*G0_2_0; A[761] = 0.0112874779541444*G0_0_1 + 0.0112874779541445*G0_0_2 + 0.0112874779541446*G0_1_0 + 0.0112874779541446*G0_2_0; A[762] = 0.0112874779541444*G0_0_1 + 0.0112874779541444*G0_0_2 + 0.011287477954145*G0_1_0 + 0.011287477954145*G0_2_0; A[763] = 0.0677248677248679*G0_0_0 + 0.0112874779541449*G0_0_1 - 0.0338624338624334*G0_0_2 - 0.0338624338624336*G0_1_0 - 0.0225749559082891*G0_1_1 - 0.0338624338624336*G0_2_0 - 0.0225749559082891*G0_2_1; A[764] = -0.0677248677248679*G0_0_0 + 0.0112874779541442*G0_0_1 + 0.101587301587301*G0_0_2 + 0.101587301587302*G0_1_0 + 0.112874779541446*G0_1_1 + 0.101587301587302*G0_2_0 + 0.112874779541446*G0_2_1; A[765] = 0.0225749559082891*G0_0_0 + 0.0112874779541449*G0_0_1 - 0.0338624338624341*G0_0_2 - 0.0338624338624341*G0_1_0 - 0.022574955908289*G0_1_1 - 0.0338624338624341*G0_2_0 - 0.022574955908289*G0_2_1; A[766] = 0.0677248677248678*G0_0_0 - 0.0338624338624335*G0_0_1 + 0.0112874779541448*G0_0_2 - 0.0338624338624337*G0_1_0 - 0.0225749559082891*G0_1_2 - 0.0338624338624338*G0_2_0 - 0.0225749559082891*G0_2_2; A[767] = -0.0677248677248677*G0_0_0 + 0.101587301587302*G0_0_1 + 0.0112874779541445*G0_0_2 + 0.101587301587302*G0_1_0 + 0.112874779541446*G0_1_2 + 0.101587301587302*G0_2_0 + 0.112874779541446*G0_2_2; A[768] = 0.0225749559082892*G0_0_0 - 0.033862433862434*G0_0_1 + 0.0112874779541448*G0_0_2 - 0.033862433862434*G0_1_0 - 0.0225749559082894*G0_1_2 - 0.033862433862434*G0_2_0 - 0.0225749559082893*G0_2_2; A[769] = 0.0902998236331566*G0_0_0; A[770] = 0.0183421516754852*G0_0_0 + 0.0183421516754852*G0_0_1 + 0.0183421516754852*G0_0_2 + 0.0183421516754849*G0_1_0 + 0.0183421516754848*G0_1_1 + 0.0183421516754849*G0_1_2 + 0.0183421516754849*G0_2_0 + 0.0183421516754848*G0_2_1 + 0.0183421516754848*G0_2_2; A[771] = 0.0493827160493828*G0_0_0 + 0.00705467372134029*G0_1_0 + 0.0070546737213405*G0_2_0; A[772] = 0.00705467372134047*G0_0_1 - 0.0183421516754849*G0_1_1 + 0.00705467372134043*G0_2_1; A[773] = 0.00705467372134042*G0_0_2 + 0.00705467372134033*G0_1_2 - 0.0183421516754851*G0_2_2; A[774] = -0.0677248677248677*G0_0_1 - 0.0225749559082894*G0_0_2 + 0.0225749559082892*G0_1_1 + 0.0112874779541446*G0_1_2 - 0.0338624338624341*G0_2_1 - 0.0225749559082894*G0_2_2; A[775] = -0.0846560846560849*G0_0_1 - 0.0846560846560847*G0_0_2 - 0.0169312169312168*G0_1_1 - 0.019753086419753*G0_1_2 - 0.019753086419753*G0_2_1 - 0.016931216931217*G0_2_2; A[776] = -0.0225749559082894*G0_0_1 - 0.067724867724868*G0_0_2 - 0.0225749559082893*G0_1_1 - 0.0338624338624339*G0_1_2 + 0.0112874779541447*G0_2_1 + 0.0225749559082895*G0_2_2; A[777] = -0.0677248677248682*G0_0_0 + 0.0112874779541444*G0_0_2 + 0.203174603174603*G0_1_0 + 0.112874779541446*G0_1_2 + 0.101587301587301*G0_2_0 + 0.112874779541446*G0_2_2; A[778] = 0.118518518518519*G0_0_0 + 0.0931216931216934*G0_0_2 + 0.0507936507936509*G0_1_0 + 0.186243386243386*G0_1_2 - 0.0423280423280424*G0_2_0 - 0.084656084656085*G0_2_2; A[779] = -0.0225749559082894*G0_0_0 - 0.033862433862434*G0_0_2 - 0.0225749559082893*G0_1_0 - 0.0677248677248678*G0_1_2 + 0.0112874779541447*G0_2_0 + 0.067724867724868*G0_2_2; A[780] = -0.067724867724868*G0_0_0 + 0.0112874779541444*G0_0_1 + 0.101587301587301*G0_1_0 + 0.112874779541446*G0_1_1 + 0.203174603174603*G0_2_0 + 0.112874779541446*G0_2_1; A[781] = 0.118518518518519*G0_0_0 + 0.0931216931216932*G0_0_1 - 0.0423280423280426*G0_1_0 - 0.084656084656085*G0_1_1 + 0.0507936507936509*G0_2_0 + 0.186243386243386*G0_2_1; A[782] = -0.0225749559082894*G0_0_0 - 0.0338624338624342*G0_0_1 + 0.0112874779541446*G0_1_0 + 0.0677248677248677*G0_1_1 - 0.0225749559082895*G0_2_0 - 0.0677248677248679*G0_2_1; A[783] = -0.0225749559082894*G0_0_0 - 0.0225749559082894*G0_0_1 - 0.011287477954145*G0_0_2 - 0.0225749559082891*G0_1_0 - 0.0225749559082892*G0_1_1 - 0.0112874779541443*G0_1_2 - 0.0112874779541445*G0_2_0 - 0.0112874779541445*G0_2_1; A[784] = 0.0169312169312175*G0_0_0 + 0.0169312169312173*G0_0_1 - 0.00282186948853541*G0_0_2 + 0.0169312169312175*G0_1_0 + 0.0169312169312175*G0_1_1 - 0.00282186948853636*G0_1_2 - 0.0028218694885357*G0_2_0 - 0.00282186948853573*G0_2_1; A[785] = 0.0225749559082894*G0_0_0 + 0.0225749559082894*G0_0_1 - 0.0112874779541448*G0_0_2 + 0.0225749559082894*G0_1_0 + 0.0225749559082893*G0_1_1 - 0.0112874779541444*G0_1_2 - 0.0112874779541446*G0_2_0 - 0.0112874779541447*G0_2_1; A[786] = -0.0225749559082895*G0_0_0 - 0.011287477954145*G0_0_1 - 0.0225749559082895*G0_0_2 - 0.0112874779541449*G0_1_0 - 0.0112874779541449*G0_1_2 - 0.0225749559082892*G0_2_0 - 0.0112874779541443*G0_2_1 - 0.0225749559082891*G0_2_2; A[787] = 0.016931216931217*G0_0_0 - 0.00282186948853567*G0_0_1 + 0.016931216931217*G0_0_2 - 0.00282186948853604*G0_1_0 - 0.00282186948853597*G0_1_2 + 0.0169312169312168*G0_2_0 - 0.00282186948853633*G0_2_1 + 0.0169312169312168*G0_2_2; A[788] = 0.0225749559082894*G0_0_0 - 0.0112874779541448*G0_0_1 + 0.0225749559082894*G0_0_2 - 0.0112874779541446*G0_1_0 - 0.0112874779541446*G0_1_2 + 0.0225749559082895*G0_2_0 - 0.0112874779541445*G0_2_1 + 0.0225749559082895*G0_2_2; A[789] = -0.0451499118165789*G0_0_0 - 0.0564373897707233*G0_0_1 - 0.0564373897707233*G0_0_2 - 0.0564373897707228*G0_1_0 - 0.0677248677248679*G0_1_1 - 0.0677248677248679*G0_1_2 - 0.0564373897707228*G0_2_0 - 0.0677248677248676*G0_2_1 - 0.0677248677248676*G0_2_2; A[790] = 0.0225749559082893*G0_0_0 + 0.0423280423280422*G0_0_1 + 0.0423280423280421*G0_0_2 + 0.0423280423280419*G0_1_0 + 0.084656084656084*G0_1_1 + 0.084656084656084*G0_1_2 + 0.0423280423280419*G0_2_0 + 0.0846560846560842*G0_2_1 + 0.0846560846560842*G0_2_2; A[791] = -0.0451499118165785*G0_0_0 - 0.0112874779541445*G0_0_1 - 0.0112874779541444*G0_0_2 - 0.0112874779541443*G0_1_0 - 0.112874779541446*G0_1_1 - 0.112874779541446*G0_1_2 - 0.0112874779541446*G0_2_0 - 0.112874779541446*G0_2_1 - 0.112874779541446*G0_2_2; A[792] = 0.632098765432099*G0_0_0 + 0.27089947089947*G0_0_1 + 0.270899470899471*G0_0_2 + 0.27089947089947*G0_1_0 + 0.541798941798942*G0_1_1 + 0.27089947089947*G0_1_2 + 0.270899470899471*G0_2_0 + 0.27089947089947*G0_2_1 + 0.541798941798942*G0_2_2; A[793] = -0.135449735449736*G0_0_0 + 0.225749559082893*G0_0_1 + 0.0677248677248675*G0_0_2 - 0.0451499118165787*G0_1_0 - 0.135449735449736*G0_1_1 - 0.0677248677248683*G0_1_2 - 0.0677248677248682*G0_2_0 + 0.0677248677248676*G0_2_1; A[794] = -0.135449735449736*G0_0_0 + 0.0677248677248676*G0_0_1 + 0.225749559082892*G0_0_2 - 0.0677248677248679*G0_1_0 + 0.0677248677248675*G0_1_2 - 0.0451499118165783*G0_2_0 - 0.0677248677248678*G0_2_1 - 0.135449735449736*G0_2_2; A[795] = 0.090299823633157*G0_0_0 + 0.0451499118165789*G0_0_1 + 0.0451499118165791*G0_0_2 + 0.0451499118165789*G0_1_0 + 0.0225749559082901*G0_1_2 + 0.0451499118165787*G0_2_0 + 0.0225749559082891*G0_2_1; A[796] = 0.135449735449736*G0_0_0 + 0.0451499118165785*G0_0_1 + 0.0677248677248674*G0_0_2 + 0.0451499118165786*G0_1_0 + 0.0225749559082888*G0_1_2 + 0.0677248677248681*G0_2_0 + 0.0225749559082897*G0_2_1; A[797] = 0.135449735449736*G0_0_0 + 0.0677248677248676*G0_0_1 + 0.0451499118165787*G0_0_2 + 0.067724867724868*G0_1_0 + 0.0225749559082887*G0_1_2 + 0.0451499118165784*G0_2_0 + 0.0225749559082888*G0_2_1; A[798] = 0.0451499118165789*G0_0_0 + 0.0902998236331567*G0_0_1 + 0.0451499118165789*G0_0_2 + 0.0902998236331565*G0_1_0 + 0.135449735449735*G0_1_1 + 0.0677248677248683*G0_1_2 + 0.0451499118165783*G0_2_0 + 0.0677248677248677*G0_2_1; A[799] = 0.0451499118165791*G0_0_0 - 0.27089947089947*G0_0_1 - 0.135449735449735*G0_0_2 - 0.27089947089947*G0_1_0 - 0.541798941798942*G0_1_1 - 0.27089947089947*G0_1_2 - 0.135449735449735*G0_2_0 - 0.27089947089947*G0_2_1; A[800] = -0.135449735449736*G0_0_0 - 0.0677248677248676*G0_0_1 + 0.0451499118165783*G0_0_2 - 0.0677248677248682*G0_1_0 + 0.0677248677248673*G0_1_2 + 0.0451499118165782*G0_2_0 + 0.0677248677248678*G0_2_1; A[801] = 0.0451499118165789*G0_0_0 + 0.0451499118165786*G0_0_1 + 0.0902998236331567*G0_0_2 + 0.0451499118165787*G0_1_0 + 0.0677248677248675*G0_1_2 + 0.0902998236331567*G0_2_0 + 0.0677248677248673*G0_2_1 + 0.135449735449735*G0_2_2; A[802] = 0.0451499118165786*G0_0_0 - 0.135449735449735*G0_0_1 - 0.270899470899471*G0_0_2 - 0.135449735449735*G0_1_0 - 0.27089947089947*G0_1_2 - 0.270899470899471*G0_2_0 - 0.27089947089947*G0_2_1 - 0.541798941798942*G0_2_2; A[803] = -0.135449735449736*G0_0_0 + 0.0451499118165786*G0_0_1 - 0.0677248677248675*G0_0_2 + 0.0451499118165787*G0_1_0 + 0.0677248677248683*G0_1_2 - 0.0677248677248678*G0_2_0 + 0.067724867724868*G0_2_1; A[804] = -0.722398589065256*G0_0_0 - 0.316049382716049*G0_0_1 - 0.316049382716049*G0_0_2 - 0.316049382716049*G0_1_0 - 0.135449735449735*G0_1_2 - 0.316049382716049*G0_2_0 - 0.135449735449735*G0_2_1; A[805] = 0.0183421516754849*G0_0_0 + 0.018342151675485*G0_0_1 + 0.018342151675485*G0_0_2 + 0.0183421516754853*G0_1_0 + 0.0183421516754853*G0_1_1 + 0.0183421516754853*G0_1_2 + 0.018342151675485*G0_2_0 + 0.018342151675485*G0_2_1 + 0.018342151675485*G0_2_2; A[806] = -0.0183421516754851*G0_0_0 + 0.00705467372134041*G0_1_0 + 0.00705467372134037*G0_2_0; A[807] = 0.00705467372134034*G0_0_1 + 0.0493827160493827*G0_1_1 + 0.00705467372134039*G0_2_1; A[808] = 0.0070546737213404*G0_0_2 + 0.00705467372134051*G0_1_2 - 0.0183421516754849*G0_2_2; A[809] = 0.203174603174603*G0_0_1 + 0.112874779541446*G0_0_2 - 0.0677248677248675*G0_1_1 + 0.0112874779541444*G0_1_2 + 0.101587301587302*G0_2_1 + 0.112874779541446*G0_2_2; A[810] = 0.050793650793651*G0_0_1 + 0.186243386243387*G0_0_2 + 0.118518518518518*G0_1_1 + 0.0931216931216937*G0_1_2 - 0.0423280423280426*G0_2_1 - 0.0846560846560845*G0_2_2; A[811] = -0.022574955908289*G0_0_1 - 0.0677248677248676*G0_0_2 - 0.0225749559082891*G0_1_1 - 0.0338624338624341*G0_1_2 + 0.011287477954145*G0_2_1 + 0.0677248677248678*G0_2_2; A[812] = 0.0225749559082894*G0_0_0 + 0.0112874779541446*G0_0_2 - 0.0677248677248678*G0_1_0 - 0.0225749559082894*G0_1_2 - 0.0338624338624338*G0_2_0 - 0.0225749559082892*G0_2_2; A[813] = -0.0169312169312171*G0_0_0 - 0.0197530864197531*G0_0_2 - 0.0846560846560847*G0_1_0 - 0.0846560846560847*G0_1_2 - 0.0197530864197533*G0_2_0 - 0.0169312169312172*G0_2_2; A[814] = -0.022574955908289*G0_0_0 - 0.0338624338624338*G0_0_2 - 0.0225749559082891*G0_1_0 - 0.0677248677248678*G0_1_2 + 0.011287477954145*G0_2_0 + 0.0225749559082894*G0_2_2; A[815] = 0.0677248677248677*G0_0_0 + 0.0112874779541446*G0_0_1 - 0.0338624338624341*G0_1_0 - 0.0225749559082894*G0_1_1 - 0.0677248677248677*G0_2_0 - 0.0225749559082893*G0_2_1; A[816] = -0.0846560846560848*G0_0_0 - 0.0423280423280427*G0_0_1 + 0.0931216931216935*G0_1_0 + 0.118518518518519*G0_1_1 + 0.186243386243386*G0_2_0 + 0.0507936507936506*G0_2_1; A[817] = 0.112874779541446*G0_0_0 + 0.101587301587302*G0_0_1 + 0.0112874779541442*G0_1_0 - 0.0677248677248679*G0_1_1 + 0.112874779541446*G0_2_0 + 0.203174603174603*G0_2_1; A[818] = -0.0225749559082893*G0_0_0 - 0.0225749559082895*G0_0_1 - 0.0112874779541446*G0_0_2 - 0.0225749559082897*G0_1_0 - 0.0225749559082898*G0_1_1 - 0.0112874779541454*G0_1_2 - 0.0112874779541447*G0_2_0 - 0.0112874779541446*G0_2_1; A[819] = 0.0169312169312172*G0_0_0 + 0.0169312169312174*G0_0_1 - 0.0028218694885361*G0_0_2 + 0.0169312169312176*G0_1_0 + 0.0169312169312177*G0_1_1 - 0.0028218694885351*G0_1_2 - 0.00282186948853591*G0_2_0 - 0.00282186948853583*G0_2_1; A[820] = 0.0225749559082891*G0_0_0 + 0.022574955908289*G0_0_1 - 0.0112874779541447*G0_0_2 + 0.0225749559082891*G0_1_0 + 0.0225749559082892*G0_1_1 - 0.0112874779541451*G0_1_2 - 0.0112874779541449*G0_2_0 - 0.0112874779541449*G0_2_1; A[821] = -0.0677248677248679*G0_0_0 - 0.0564373897707231*G0_0_1 - 0.0677248677248679*G0_0_2 - 0.0564373897707235*G0_1_0 - 0.045149911816579*G0_1_1 - 0.0564373897707235*G0_1_2 - 0.0677248677248677*G0_2_0 - 0.056437389770723*G0_2_1 - 0.0677248677248677*G0_2_2; A[822] = 0.0846560846560848*G0_0_0 + 0.0423280423280421*G0_0_1 + 0.0846560846560848*G0_0_2 + 0.0423280423280422*G0_1_0 + 0.0225749559082896*G0_1_1 + 0.0423280423280422*G0_1_2 + 0.0846560846560847*G0_2_0 + 0.0423280423280422*G0_2_1 + 0.0846560846560847*G0_2_2; A[823] = -0.112874779541446*G0_0_0 - 0.0112874779541444*G0_0_1 - 0.112874779541446*G0_0_2 - 0.0112874779541444*G0_1_0 - 0.0451499118165784*G0_1_1 - 0.0112874779541444*G0_1_2 - 0.112874779541446*G0_2_0 - 0.0112874779541445*G0_2_1 - 0.112874779541446*G0_2_2; A[824] = -0.011287477954145*G0_0_1 - 0.011287477954145*G0_0_2 - 0.0112874779541452*G0_1_0 - 0.0225749559082896*G0_1_1 - 0.0225749559082896*G0_1_2 - 0.0112874779541447*G0_2_0 - 0.0225749559082894*G0_2_1 - 0.0225749559082895*G0_2_2; A[825] = -0.00282186948853616*G0_0_1 - 0.00282186948853613*G0_0_2 - 0.00282186948853573*G0_1_0 + 0.0169312169312171*G0_1_1 + 0.016931216931217*G0_1_2 - 0.00282186948853577*G0_2_0 + 0.016931216931217*G0_2_1 + 0.016931216931217*G0_2_2; A[826] = -0.0112874779541446*G0_0_1 - 0.0112874779541446*G0_0_2 - 0.0112874779541448*G0_1_0 + 0.0225749559082893*G0_1_1 + 0.0225749559082893*G0_1_2 - 0.0112874779541448*G0_2_0 + 0.0225749559082893*G0_2_1 + 0.0225749559082893*G0_2_2; A[827] = -0.135449735449736*G0_0_0 - 0.0451499118165787*G0_0_1 - 0.0677248677248682*G0_0_2 + 0.225749559082893*G0_1_0 - 0.135449735449736*G0_1_1 + 0.0677248677248676*G0_1_2 + 0.0677248677248675*G0_2_0 - 0.0677248677248683*G0_2_1; A[828] = 0.541798941798943*G0_0_0 + 0.270899470899472*G0_0_1 + 0.270899470899472*G0_0_2 + 0.270899470899472*G0_1_0 + 0.6320987654321*G0_1_1 + 0.270899470899472*G0_1_2 + 0.270899470899472*G0_2_0 + 0.270899470899472*G0_2_1 + 0.541798941798943*G0_2_2; A[829] = -0.0677248677248679*G0_0_1 + 0.0677248677248679*G0_0_2 + 0.0677248677248676*G0_1_0 - 0.135449735449736*G0_1_1 + 0.225749559082892*G0_1_2 - 0.0677248677248675*G0_2_0 - 0.0451499118165784*G0_2_1 - 0.135449735449735*G0_2_2; A[830] = 0.135449735449736*G0_0_0 + 0.0902998236331572*G0_0_1 + 0.0677248677248681*G0_0_2 + 0.0902998236331573*G0_1_0 + 0.0451499118165792*G0_1_1 + 0.0451499118165792*G0_1_2 + 0.0677248677248674*G0_2_0 + 0.0451499118165782*G0_2_1; A[831] = -0.541798941798943*G0_0_0 - 0.270899470899471*G0_0_1 - 0.270899470899471*G0_0_2 - 0.270899470899472*G0_1_0 + 0.0451499118165784*G0_1_1 - 0.135449735449736*G0_1_2 - 0.270899470899472*G0_2_0 - 0.135449735449735*G0_2_1; A[832] = -0.0677248677248683*G0_0_1 + 0.0677248677248675*G0_0_2 - 0.0677248677248673*G0_1_0 - 0.135449735449736*G0_1_1 + 0.0451499118165784*G0_1_2 + 0.0677248677248677*G0_2_0 + 0.0451499118165785*G0_2_1; A[833] = 0.0451499118165788*G0_0_1 + 0.0225749559082901*G0_0_2 + 0.0451499118165798*G0_1_0 + 0.0902998236331573*G0_1_1 + 0.0451499118165795*G0_1_2 + 0.0225749559082892*G0_2_0 + 0.045149911816578*G0_2_1; A[834] = 0.0451499118165785*G0_0_1 + 0.0225749559082893*G0_0_2 + 0.0451499118165782*G0_1_0 + 0.135449735449736*G0_1_1 + 0.0677248677248678*G0_1_2 + 0.0225749559082896*G0_2_0 + 0.0677248677248681*G0_2_1; A[835] = 0.0677248677248678*G0_0_1 + 0.0225749559082887*G0_0_2 + 0.0677248677248671*G0_1_0 + 0.135449735449736*G0_1_1 + 0.0451499118165779*G0_1_2 + 0.0225749559082892*G0_2_0 + 0.0451499118165783*G0_2_1; A[836] = 0.0451499118165789*G0_0_1 + 0.0677248677248675*G0_0_2 + 0.0451499118165788*G0_1_0 + 0.0451499118165786*G0_1_1 + 0.0902998236331564*G0_1_2 + 0.0677248677248674*G0_2_0 + 0.0902998236331569*G0_2_1 + 0.135449735449734*G0_2_2; A[837] = 0.0451499118165785*G0_0_1 + 0.0677248677248677*G0_0_2 + 0.0451499118165787*G0_1_0 - 0.135449735449736*G0_1_1 - 0.0677248677248679*G0_1_2 + 0.0677248677248681*G0_2_0 - 0.0677248677248678*G0_2_1; A[838] = -0.135449735449736*G0_0_1 - 0.270899470899471*G0_0_2 - 0.135449735449736*G0_1_0 + 0.0451499118165788*G0_1_1 - 0.270899470899472*G0_1_2 - 0.270899470899471*G0_2_0 - 0.270899470899471*G0_2_1 - 0.541798941798942*G0_2_2; A[839] = -0.31604938271605*G0_0_1 - 0.135449735449735*G0_0_2 - 0.31604938271605*G0_1_0 - 0.722398589065257*G0_1_1 - 0.316049382716048*G0_1_2 - 0.135449735449735*G0_2_0 - 0.31604938271605*G0_2_1; A[840] = 0.0183421516754852*G0_0_0 + 0.0183421516754853*G0_0_1 + 0.0183421516754853*G0_0_2 + 0.0183421516754852*G0_1_0 + 0.0183421516754852*G0_1_1 + 0.0183421516754852*G0_1_2 + 0.0183421516754854*G0_2_0 + 0.0183421516754855*G0_2_1 + 0.0183421516754855*G0_2_2; A[841] = -0.0183421516754848*G0_0_0 + 0.00705467372134062*G0_1_0 + 0.00705467372134052*G0_2_0; A[842] = 0.00705467372134016*G0_0_1 - 0.0183421516754851*G0_1_1 + 0.00705467372134029*G0_2_1; A[843] = 0.00705467372134039*G0_0_2 + 0.00705467372134029*G0_1_2 + 0.0493827160493827*G0_2_2; A[844] = -0.0677248677248676*G0_0_1 - 0.0225749559082896*G0_0_2 + 0.0677248677248678*G0_1_1 + 0.0112874779541444*G0_1_2 - 0.0338624338624338*G0_2_1 - 0.0225749559082895*G0_2_2; A[845] = 0.186243386243386*G0_0_1 + 0.0507936507936512*G0_0_2 - 0.0846560846560848*G0_1_1 - 0.0423280423280424*G0_1_2 + 0.0931216931216931*G0_2_1 + 0.118518518518519*G0_2_2; A[846] = 0.112874779541446*G0_0_1 + 0.203174603174603*G0_0_2 + 0.112874779541446*G0_1_1 + 0.101587301587302*G0_1_2 + 0.0112874779541444*G0_2_1 - 0.0677248677248681*G0_2_2; A[847] = 0.0677248677248677*G0_0_0 + 0.0112874779541451*G0_0_2 - 0.067724867724868*G0_1_0 - 0.022574955908289*G0_1_2 - 0.0338624338624342*G0_2_0 - 0.0225749559082892*G0_2_2; A[848] = -0.0846560846560844*G0_0_0 - 0.0423280423280429*G0_0_2 + 0.186243386243387*G0_1_0 + 0.0507936507936505*G0_1_2 + 0.0931216931216938*G0_2_0 + 0.118518518518519*G0_2_2; A[849] = 0.112874779541446*G0_0_0 + 0.101587301587302*G0_0_2 + 0.112874779541446*G0_1_0 + 0.203174603174604*G0_1_2 + 0.0112874779541444*G0_2_0 - 0.0677248677248676*G0_2_2; A[850] = 0.0225749559082892*G0_0_0 + 0.011287477954145*G0_0_1 - 0.0338624338624341*G0_1_0 - 0.0225749559082891*G0_1_1 - 0.067724867724868*G0_2_0 - 0.0225749559082892*G0_2_1; A[851] = -0.0169312169312166*G0_0_0 - 0.0197530864197533*G0_0_1 - 0.0197530864197529*G0_1_0 - 0.016931216931217*G0_1_1 - 0.0846560846560844*G0_2_0 - 0.0846560846560847*G0_2_1; A[852] = -0.0225749559082898*G0_0_0 - 0.0338624338624337*G0_0_1 + 0.0112874779541443*G0_1_0 + 0.0225749559082892*G0_1_1 - 0.0225749559082896*G0_2_0 - 0.0677248677248677*G0_2_1; A[853] = -0.0677248677248681*G0_0_0 - 0.0677248677248681*G0_0_1 - 0.0564373897707237*G0_0_2 - 0.0677248677248678*G0_1_0 - 0.0677248677248678*G0_1_1 - 0.0564373897707236*G0_1_2 - 0.0564373897707236*G0_2_0 - 0.0564373897707236*G0_2_1 - 0.0451499118165797*G0_2_2; A[854] = 0.084656084656085*G0_0_0 + 0.0846560846560851*G0_0_1 + 0.042328042328043*G0_0_2 + 0.0846560846560844*G0_1_0 + 0.0846560846560845*G0_1_1 + 0.0423280423280427*G0_1_2 + 0.0423280423280426*G0_2_0 + 0.0423280423280427*G0_2_1 + 0.0225749559082906*G0_2_2; A[855] = -0.112874779541446*G0_0_0 - 0.112874779541446*G0_0_1 - 0.0112874779541449*G0_0_2 - 0.112874779541446*G0_1_0 - 0.112874779541446*G0_1_1 - 0.0112874779541446*G0_1_2 - 0.0112874779541444*G0_2_0 - 0.0112874779541444*G0_2_1 - 0.0451499118165789*G0_2_2; A[856] = -0.0225749559082894*G0_0_0 - 0.011287477954145*G0_0_1 - 0.0225749559082893*G0_0_2 - 0.0112874779541446*G0_1_0 - 0.0112874779541446*G0_1_2 - 0.0225749559082896*G0_2_0 - 0.0112874779541455*G0_2_1 - 0.0225749559082897*G0_2_2; A[857] = 0.0169312169312169*G0_0_0 - 0.00282186948853602*G0_0_1 + 0.0169312169312169*G0_0_2 - 0.00282186948853599*G0_1_0 - 0.00282186948853603*G0_1_2 + 0.0169312169312171*G0_2_0 - 0.00282186948853552*G0_2_1 + 0.0169312169312171*G0_2_2; A[858] = 0.0225749559082896*G0_0_0 - 0.0112874779541445*G0_0_1 + 0.0225749559082896*G0_0_2 - 0.0112874779541444*G0_1_0 - 0.0112874779541444*G0_1_2 + 0.0225749559082894*G0_2_0 - 0.0112874779541447*G0_2_1 + 0.0225749559082895*G0_2_2; A[859] = -0.0112874779541448*G0_0_1 - 0.0112874779541448*G0_0_2 - 0.011287477954145*G0_1_0 - 0.0225749559082893*G0_1_1 - 0.0225749559082893*G0_1_2 - 0.0112874779541454*G0_2_0 - 0.0225749559082896*G0_2_1 - 0.0225749559082896*G0_2_2; A[860] = -0.00282186948853605*G0_0_1 - 0.00282186948853608*G0_0_2 - 0.00282186948853587*G0_1_0 + 0.0169312169312171*G0_1_1 + 0.0169312169312171*G0_1_2 - 0.00282186948853582*G0_2_0 + 0.016931216931217*G0_2_1 + 0.016931216931217*G0_2_2; A[861] = -0.0112874779541451*G0_0_1 - 0.0112874779541451*G0_0_2 - 0.0112874779541449*G0_1_0 + 0.022574955908289*G0_1_1 + 0.022574955908289*G0_1_2 - 0.0112874779541447*G0_2_0 + 0.0225749559082891*G0_2_1 + 0.0225749559082892*G0_2_2; A[862] = -0.135449735449736*G0_0_0 - 0.0677248677248679*G0_0_1 - 0.0451499118165783*G0_0_2 + 0.0677248677248676*G0_1_0 - 0.0677248677248678*G0_1_2 + 0.225749559082892*G0_2_0 + 0.0677248677248675*G0_2_1 - 0.135449735449736*G0_2_2; A[863] = 0.0677248677248676*G0_0_1 - 0.0677248677248675*G0_0_2 - 0.0677248677248679*G0_1_0 - 0.135449735449736*G0_1_1 - 0.0451499118165784*G0_1_2 + 0.0677248677248679*G0_2_0 + 0.225749559082892*G0_2_1 - 0.135449735449735*G0_2_2; A[864] = 0.541798941798942*G0_0_0 + 0.270899470899471*G0_0_1 + 0.270899470899471*G0_0_2 + 0.270899470899471*G0_1_0 + 0.541798941798943*G0_1_1 + 0.270899470899471*G0_1_2 + 0.270899470899471*G0_2_0 + 0.270899470899471*G0_2_1 + 0.632098765432098*G0_2_2; A[865] = 0.135449735449736*G0_0_0 + 0.0677248677248685*G0_0_1 + 0.0902998236331574*G0_0_2 + 0.0677248677248676*G0_1_0 + 0.0451499118165784*G0_1_2 + 0.0902998236331575*G0_2_0 + 0.0451499118165798*G0_2_1 + 0.0451499118165793*G0_2_2; A[866] = 0.0677248677248672*G0_0_1 - 0.0677248677248682*G0_0_2 + 0.0677248677248679*G0_1_0 + 0.0451499118165782*G0_1_2 - 0.0677248677248679*G0_2_0 + 0.0451499118165777*G0_2_1 - 0.135449735449736*G0_2_2; A[867] = -0.541798941798942*G0_0_0 - 0.270899470899471*G0_0_1 - 0.270899470899471*G0_0_2 - 0.270899470899471*G0_1_0 - 0.135449735449735*G0_1_2 - 0.27089947089947*G0_2_0 - 0.135449735449736*G0_2_1 + 0.0451499118165786*G0_2_2; A[868] = 0.0677248677248683*G0_0_1 + 0.0451499118165791*G0_0_2 + 0.0677248677248681*G0_1_0 + 0.135449735449735*G0_1_1 + 0.0902998236331569*G0_1_2 + 0.0451499118165799*G0_2_0 + 0.0902998236331575*G0_2_1 + 0.0451499118165792*G0_2_2; A[869] = 0.0677248677248678*G0_0_1 + 0.045149911816579*G0_0_2 + 0.0677248677248679*G0_1_0 - 0.0677248677248673*G0_1_2 + 0.0451499118165781*G0_2_0 - 0.0677248677248676*G0_2_1 - 0.135449735449735*G0_2_2; A[870] = -0.270899470899471*G0_0_1 - 0.135449735449737*G0_0_2 - 0.270899470899471*G0_1_0 - 0.541798941798943*G0_1_1 - 0.270899470899471*G0_1_2 - 0.135449735449736*G0_2_0 - 0.270899470899471*G0_2_1 + 0.0451499118165778*G0_2_2; A[871] = 0.0225749559082894*G0_0_1 + 0.0451499118165787*G0_0_2 + 0.0225749559082895*G0_1_0 + 0.0451499118165786*G0_1_2 + 0.0451499118165793*G0_2_0 + 0.0451499118165791*G0_2_1 + 0.0902998236331574*G0_2_2; A[872] = 0.0225749559082894*G0_0_1 + 0.0451499118165781*G0_0_2 + 0.0225749559082892*G0_1_0 + 0.0677248677248677*G0_1_2 + 0.0451499118165782*G0_2_0 + 0.0677248677248678*G0_2_1 + 0.135449735449736*G0_2_2; A[873] = 0.0225749559082891*G0_0_1 + 0.0677248677248675*G0_0_2 + 0.0225749559082888*G0_1_0 + 0.0451499118165788*G0_1_2 + 0.0677248677248672*G0_2_0 + 0.0451499118165781*G0_2_1 + 0.135449735449735*G0_2_2; A[874] = -0.135449735449736*G0_0_1 - 0.316049382716049*G0_0_2 - 0.135449735449735*G0_1_0 - 0.31604938271605*G0_1_2 - 0.31604938271605*G0_2_0 - 0.31604938271605*G0_2_1 - 0.722398589065256*G0_2_2; A[875] = 0.0493827160493826*G0_0_0 + 0.0493827160493825*G0_0_1 + 0.0493827160493825*G0_0_2 + 0.042328042328042*G0_1_0 + 0.042328042328042*G0_1_1 + 0.042328042328042*G0_1_2 + 0.0423280423280421*G0_2_0 + 0.0423280423280421*G0_2_1 + 0.042328042328042*G0_2_2; A[876] = 0.018342151675485*G0_0_0; A[877] = -0.0070546737213406*G0_0_1 - 0.0253968253968254*G0_1_1; A[878] = -0.00705467372134034*G0_0_2 - 0.0253968253968253*G0_2_2; A[879] = 0.0677248677248676*G0_0_1 + 0.0225749559082888*G0_0_2 + 0.0902998236331568*G0_1_1 + 0.0338624338624339*G0_1_2 + 0.0338624338624338*G0_2_1; A[880] = 0.0846560846560849*G0_0_1 + 0.0846560846560853*G0_0_2 + 0.0677248677248681*G0_1_1 + 0.0649029982363317*G0_1_2 + 0.0649029982363317*G0_2_1 + 0.0677248677248682*G0_2_2; A[881] = 0.0225749559082896*G0_0_1 + 0.0677248677248677*G0_0_2 + 0.0338624338624339*G0_1_2 + 0.0338624338624344*G0_2_1 + 0.0902998236331572*G0_2_2; A[882] = -0.0225749559082891*G0_0_0 - 0.0112874779541447*G0_0_2 - 0.0112874779541443*G0_2_0; A[883] = 0.0169312169312167*G0_0_0 + 0.0197530864197532*G0_0_2 + 0.0197530864197529*G0_2_0 + 0.0225749559082897*G0_2_2; A[884] = 0.0225749559082896*G0_0_0 + 0.033862433862434*G0_0_2 + 0.0338624338624344*G0_2_0 + 0.0451499118165785*G0_2_2; A[885] = -0.0225749559082892*G0_0_0 - 0.0112874779541446*G0_0_1 - 0.0112874779541446*G0_1_0; A[886] = 0.0169312169312169*G0_0_0 + 0.0197530864197529*G0_0_1 + 0.0197530864197528*G0_1_0 + 0.0225749559082889*G0_1_1; A[887] = 0.0225749559082887*G0_0_0 + 0.0338624338624337*G0_0_1 + 0.0338624338624339*G0_1_0 + 0.0451499118165784*G0_1_1; A[888] = -0.0677248677248676*G0_0_0 - 0.0677248677248677*G0_0_1 - 0.0790123456790117*G0_0_2 - 0.270899470899471*G0_1_0 - 0.270899470899471*G0_1_1 - 0.169312169312169*G0_1_2 - 0.16931216931217*G0_2_0 - 0.16931216931217*G0_2_1 - 0.067724867724867*G0_2_2; A[889] = 0.118518518518519*G0_0_0 + 0.118518518518519*G0_0_1 + 0.0253968253968248*G0_0_2 + 0.067724867724868*G0_1_0 + 0.0677248677248678*G0_1_1 + 0.16084656084656*G0_1_2 + 0.160846560846562*G0_2_0 + 0.160846560846562*G0_2_1 - 0.0169312169312177*G0_2_2; A[890] = -0.0225749559082897*G0_0_0 - 0.0225749559082897*G0_0_1 + 0.0112874779541449*G0_0_2 - 0.0338624338624334*G0_1_2 - 0.0338624338624344*G0_2_0 - 0.0338624338624344*G0_2_1 + 0.067724867724868*G0_2_2; A[891] = -0.067724867724868*G0_0_0 - 0.0790123456790121*G0_0_1 - 0.0677248677248679*G0_0_2 - 0.169312169312169*G0_1_0 - 0.067724867724867*G0_1_1 - 0.16931216931217*G0_1_2 - 0.270899470899472*G0_2_0 - 0.169312169312169*G0_2_1 - 0.270899470899472*G0_2_2; A[892] = 0.118518518518518*G0_0_0 + 0.025396825396825*G0_0_1 + 0.118518518518518*G0_0_2 + 0.160846560846561*G0_1_0 - 0.0169312169312177*G0_1_1 + 0.160846560846561*G0_1_2 + 0.0677248677248674*G0_2_0 + 0.16084656084656*G0_2_1 + 0.0677248677248674*G0_2_2; A[893] = -0.0225749559082887*G0_0_0 + 0.011287477954145*G0_0_1 - 0.0225749559082887*G0_0_2 - 0.0338624338624338*G0_1_0 + 0.0677248677248681*G0_1_1 - 0.0338624338624338*G0_1_2 - 0.0338624338624333*G0_2_1; A[894] = -0.0451499118165784*G0_0_0 - 0.0338624338624343*G0_0_1 - 0.0338624338624343*G0_0_2 - 0.0338624338624336*G0_1_0 - 0.135449735449736*G0_1_1 - 0.135449735449736*G0_1_2 - 0.0338624338624336*G0_2_0 - 0.135449735449736*G0_2_1 - 0.135449735449736*G0_2_2; A[895] = 0.022574955908289*G0_0_0 - 0.0197530864197535*G0_0_1 - 0.0197530864197535*G0_0_2 - 0.0197530864197533*G0_1_0 + 0.0225749559082888*G0_1_1 + 0.0225749559082889*G0_1_2 - 0.0197530864197533*G0_2_0 + 0.0225749559082891*G0_2_1 + 0.0225749559082891*G0_2_2; A[896] = -0.0451499118165782*G0_0_0 + 0.0112874779541448*G0_0_1 + 0.0112874779541448*G0_0_2 + 0.011287477954145*G0_1_0 + 0.011287477954145*G0_2_0; A[897] = 0.090299823633157*G0_0_0 + 0.0451499118165789*G0_0_1 + 0.0451499118165787*G0_0_2 + 0.0451499118165789*G0_1_0 + 0.0225749559082891*G0_1_2 + 0.0451499118165791*G0_2_0 + 0.0225749559082901*G0_2_1; A[898] = 0.135449735449736*G0_0_0 + 0.0902998236331573*G0_0_1 + 0.0677248677248674*G0_0_2 + 0.0902998236331572*G0_1_0 + 0.0451499118165792*G0_1_1 + 0.0451499118165782*G0_1_2 + 0.0677248677248681*G0_2_0 + 0.0451499118165792*G0_2_1; A[899] = 0.135449735449736*G0_0_0 + 0.0677248677248676*G0_0_1 + 0.0902998236331575*G0_0_2 + 0.0677248677248685*G0_1_0 + 0.0451499118165798*G0_1_2 + 0.0902998236331574*G0_2_0 + 0.0451499118165784*G0_2_1 + 0.0451499118165793*G0_2_2; A[900] = 0.6320987654321*G0_0_0 + 0.361199294532628*G0_0_1 + 0.361199294532629*G0_0_2 + 0.361199294532628*G0_1_0 + 0.632098765432099*G0_1_1 + 0.361199294532629*G0_1_2 + 0.361199294532629*G0_2_0 + 0.361199294532629*G0_2_1 + 0.632098765432101*G0_2_2; A[901] = -0.135449735449736*G0_0_0 - 0.361199294532628*G0_0_1 - 0.203174603174604*G0_0_2 - 0.0902998236331573*G0_1_0 - 0.451499118165785*G0_1_1 - 0.225749559082893*G0_1_2 - 0.0677248677248681*G0_2_0 - 0.225749559082893*G0_2_1 - 0.135449735449736*G0_2_2; A[902] = -0.135449735449736*G0_0_0 - 0.203174603174604*G0_0_1 - 0.361199294532629*G0_0_2 - 0.0677248677248683*G0_1_0 - 0.135449735449736*G0_1_1 - 0.225749559082892*G0_1_2 - 0.0902998236331573*G0_2_0 - 0.225749559082893*G0_2_1 - 0.451499118165786*G0_2_2; A[903] = 0.0451499118165788*G0_0_0 + 0.31604938271605*G0_0_1 + 0.180599647266315*G0_0_2 + 0.31604938271605*G0_1_0 + 0.0451499118165789*G0_1_1 + 0.180599647266315*G0_1_2 + 0.180599647266315*G0_2_0 + 0.180599647266315*G0_2_1 + 0.316049382716052*G0_2_2; A[904] = 0.0451499118165784*G0_0_0 - 0.0451499118165787*G0_0_1 - 0.0451499118165784*G0_1_0 - 0.0225749559082894*G0_1_2 - 0.0225749559082902*G0_2_1 - 0.0451499118165789*G0_2_2; A[905] = -0.135449735449736*G0_0_0 - 0.0677248677248679*G0_0_1 - 0.180599647266315*G0_0_2 - 0.0677248677248681*G0_1_0 - 0.0451499118165791*G0_1_2 - 0.180599647266315*G0_2_0 - 0.0451499118165786*G0_2_1 - 0.225749559082894*G0_2_2; A[906] = 0.0451499118165789*G0_0_0 + 0.180599647266315*G0_0_1 + 0.31604938271605*G0_0_2 + 0.180599647266314*G0_1_0 + 0.31604938271605*G0_1_1 + 0.180599647266314*G0_1_2 + 0.31604938271605*G0_2_0 + 0.180599647266315*G0_2_1 + 0.0451499118165786*G0_2_2; A[907] = 0.0451499118165783*G0_0_0 - 0.0451499118165787*G0_0_2 - 0.0451499118165782*G0_1_1 - 0.0225749559082893*G0_1_2 - 0.0451499118165788*G0_2_0 - 0.0225749559082892*G0_2_1; A[908] = -0.135449735449735*G0_0_0 - 0.180599647266314*G0_0_1 - 0.067724867724867*G0_0_2 - 0.180599647266314*G0_1_0 - 0.225749559082892*G0_1_1 - 0.045149911816578*G0_1_2 - 0.0677248677248672*G0_2_0 - 0.0451499118165784*G0_2_1; A[909] = -0.722398589065257*G0_0_0 - 0.406349206349208*G0_0_1 - 0.406349206349207*G0_0_2 - 0.406349206349207*G0_1_0 - 0.0902998236331577*G0_1_1 - 0.225749559082894*G0_1_2 - 0.406349206349208*G0_2_0 - 0.225749559082894*G0_2_1 - 0.090299823633158*G0_2_2; A[910] = -0.0183421516754849*G0_0_0 - 0.018342151675485*G0_0_1 - 0.018342151675485*G0_0_2 - 0.0253968253968252*G0_1_0 - 0.0253968253968252*G0_1_1 - 0.0253968253968252*G0_1_2 - 0.0253968253968254*G0_2_0 - 0.0253968253968253*G0_2_1 - 0.0253968253968254*G0_2_2; A[911] = 0.0183421516754851*G0_0_0; A[912] = -0.00705467372134032*G0_0_1 + 0.0423280423280423*G0_1_1; A[913] = -0.00705467372134041*G0_0_2 - 0.0253968253968254*G0_2_2; A[914] = -0.203174603174603*G0_0_1 - 0.112874779541446*G0_0_2 - 0.270899470899471*G0_1_1 - 0.101587301587302*G0_1_2 - 0.101587301587302*G0_2_1; A[915] = -0.050793650793651*G0_0_1 - 0.186243386243387*G0_0_2 + 0.0677248677248675*G0_1_1 - 0.093121693121693*G0_1_2 - 0.0931216931216935*G0_2_1 - 0.270899470899471*G0_2_2; A[916] = 0.022574955908289*G0_0_1 + 0.0677248677248676*G0_0_2 + 0.0338624338624337*G0_1_2 + 0.0338624338624339*G0_2_1 + 0.135449735449735*G0_2_2; A[917] = -0.0225749559082895*G0_0_0 - 0.0112874779541447*G0_0_2 - 0.0112874779541447*G0_2_0; A[918] = 0.0169312169312171*G0_0_0 + 0.0197530864197531*G0_0_2 + 0.0197530864197528*G0_2_0 + 0.022574955908289*G0_2_2; A[919] = 0.022574955908289*G0_0_0 + 0.0338624338624338*G0_0_2 + 0.0338624338624339*G0_2_0 + 0.0451499118165784*G0_2_2; A[920] = -0.0677248677248677*G0_0_0 - 0.0112874779541447*G0_0_1 - 0.0112874779541447*G0_1_0; A[921] = 0.0846560846560848*G0_0_0 + 0.0423280423280427*G0_0_1 + 0.0423280423280428*G0_1_0 + 0.0225749559082899*G0_1_1; A[922] = -0.112874779541446*G0_0_0 - 0.101587301587302*G0_0_1 - 0.101587301587302*G0_1_0 - 0.135449735449736*G0_1_1; A[923] = 0.0225749559082893*G0_0_0 + 0.0225749559082895*G0_0_1 + 0.0112874779541446*G0_0_2 + 0.0902998236331568*G0_1_0 + 0.0902998236331569*G0_1_1 + 0.0564373897707225*G0_1_2 + 0.0564373897707232*G0_2_0 + 0.0564373897707233*G0_2_1 + 0.0225749559082892*G0_2_2; A[924] = -0.0169312169312172*G0_0_0 - 0.0169312169312174*G0_0_1 + 0.0028218694885361*G0_0_2 + 0.0677248677248678*G0_1_0 + 0.0677248677248679*G0_1_1 + 0.00282186948853683*G0_1_2 + 0.00282186948853585*G0_2_0 + 0.0028218694885358*G0_2_1 + 0.00564373897707232*G0_2_2; A[925] = -0.0225749559082891*G0_0_0 - 0.022574955908289*G0_0_1 + 0.0112874779541447*G0_0_2 - 0.0338624338624343*G0_1_2 - 0.0338624338624339*G0_2_0 - 0.0338624338624339*G0_2_1 + 0.0225749559082892*G0_2_2; A[926] = 0.0677248677248679*G0_0_0 + 0.0564373897707231*G0_0_1 + 0.0677248677248679*G0_0_2 + 0.101587301587302*G0_1_0 + 0.0677248677248673*G0_1_1 + 0.101587301587302*G0_1_2 + 0.135449735449736*G0_2_0 + 0.101587301587301*G0_2_1 + 0.135449735449736*G0_2_2; A[927] = -0.0846560846560848*G0_0_0 - 0.0423280423280421*G0_0_1 - 0.0846560846560848*G0_0_2 - 0.177777777777778*G0_1_0 - 0.0169312169312163*G0_1_1 - 0.177777777777778*G0_1_2 - 0.270899470899471*G0_2_0 - 0.177777777777777*G0_2_1 - 0.270899470899471*G0_2_2; A[928] = 0.112874779541446*G0_0_0 + 0.0112874779541444*G0_0_1 + 0.112874779541446*G0_0_2 + 0.101587301587302*G0_1_0 - 0.067724867724868*G0_1_1 + 0.101587301587302*G0_1_2 + 0.101587301587301*G0_2_1; A[929] = 0.011287477954145*G0_0_1 + 0.011287477954145*G0_0_2 + 0.0112874779541444*G0_1_0 + 0.0451499118165788*G0_1_1 + 0.0451499118165787*G0_1_2 + 0.0112874779541445*G0_2_0 + 0.0451499118165788*G0_2_1 + 0.0451499118165787*G0_2_2; A[930] = 0.00282186948853618*G0_0_1 + 0.00282186948853615*G0_0_2 + 0.00282186948853627*G0_1_0 + 0.0225749559082896*G0_1_1 + 0.0225749559082894*G0_1_2 + 0.00282186948853626*G0_2_0 + 0.0225749559082894*G0_2_1 + 0.0225749559082893*G0_2_2; A[931] = 0.0112874779541446*G0_0_1 + 0.0112874779541446*G0_0_2 + 0.0112874779541444*G0_1_0 + 0.0112874779541445*G0_2_0; A[932] = 0.135449735449736*G0_0_0 + 0.0451499118165786*G0_0_1 + 0.0677248677248681*G0_0_2 + 0.0451499118165785*G0_1_0 + 0.0225749559082897*G0_1_2 + 0.0677248677248674*G0_2_0 + 0.0225749559082888*G0_2_1; A[933] = -0.541798941798943*G0_0_0 - 0.270899470899472*G0_0_1 - 0.270899470899472*G0_0_2 - 0.270899470899471*G0_1_0 + 0.0451499118165784*G0_1_1 - 0.135449735449735*G0_1_2 - 0.270899470899471*G0_2_0 - 0.135449735449736*G0_2_1; A[934] = 0.0677248677248679*G0_0_1 - 0.0677248677248679*G0_0_2 + 0.0677248677248672*G0_1_0 + 0.0451499118165777*G0_1_2 - 0.0677248677248682*G0_2_0 + 0.0451499118165782*G0_2_1 - 0.135449735449736*G0_2_2; A[935] = -0.135449735449736*G0_0_0 - 0.0902998236331573*G0_0_1 - 0.0677248677248681*G0_0_2 - 0.361199294532628*G0_1_0 - 0.451499118165785*G0_1_1 - 0.225749559082893*G0_1_2 - 0.203174603174604*G0_2_0 - 0.225749559082893*G0_2_1 - 0.135449735449736*G0_2_2; A[936] = 0.541798941798943*G0_0_0 + 0.270899470899471*G0_0_1 + 0.270899470899471*G0_0_2 + 0.270899470899471*G0_1_0 + 0.632098765432099*G0_1_1 + 0.270899470899471*G0_1_2 + 0.270899470899471*G0_2_0 + 0.270899470899471*G0_2_1 + 0.541798941798942*G0_2_2; A[937] = 0.0677248677248684*G0_0_1 - 0.0677248677248675*G0_0_2 - 0.0677248677248675*G0_1_0 - 0.135449735449736*G0_1_1 + 0.090299823633157*G0_1_2 + 0.067724867724868*G0_2_0 + 0.0902998236331577*G0_2_1 - 0.135449735449735*G0_2_2; A[938] = -0.0451499118165788*G0_0_1 - 0.0225749559082901*G0_0_2 - 0.0451499118165786*G0_1_0 + 0.0451499118165781*G0_1_1 - 0.0225749559082899*G0_2_0 - 0.0451499118165794*G0_2_2; A[939] = -0.0451499118165784*G0_0_1 - 0.0225749559082893*G0_0_2 - 0.0451499118165784*G0_1_0 - 0.0225749559082891*G0_1_2 - 0.0225749559082888*G0_2_0 - 0.0225749559082887*G0_2_1 - 0.0451499118165783*G0_2_2; A[940] = -0.0677248677248678*G0_0_1 - 0.0225749559082888*G0_0_2 - 0.0677248677248676*G0_1_0 - 0.0451499118165781*G0_1_2 - 0.0225749559082885*G0_2_0 - 0.0451499118165782*G0_2_1 - 0.0451499118165778*G0_2_2; A[941] = -0.0451499118165789*G0_0_1 - 0.0677248677248675*G0_0_2 - 0.0451499118165786*G0_1_0 - 0.225749559082893*G0_1_1 - 0.180599647266314*G0_1_2 - 0.0677248677248678*G0_2_0 - 0.180599647266314*G0_2_1 - 0.135449735449736*G0_2_2; A[942] = -0.0451499118165786*G0_0_1 - 0.0677248677248677*G0_0_2 - 0.0451499118165783*G0_1_0 - 0.0451499118165789*G0_1_1 - 0.0225749559082894*G0_1_2 - 0.0677248677248676*G0_2_0 - 0.0225749559082894*G0_2_1; A[943] = 0.135449735449736*G0_0_1 + 0.270899470899471*G0_0_2 + 0.135449735449735*G0_1_0 + 0.31604938271605*G0_1_1 + 0.135449735449735*G0_1_2 + 0.270899470899471*G0_2_0 + 0.135449735449736*G0_2_1; A[944] = 0.31604938271605*G0_0_1 + 0.135449735449735*G0_0_2 + 0.31604938271605*G0_1_0 - 0.0902998236331568*G0_1_1 + 0.135449735449737*G0_1_2 + 0.135449735449737*G0_2_0 + 0.135449735449737*G0_2_1 + 0.270899470899472*G0_2_2; A[945] = -0.0183421516754852*G0_0_0 - 0.0183421516754852*G0_0_1 - 0.0183421516754852*G0_0_2 - 0.0253968253968253*G0_1_0 - 0.0253968253968253*G0_1_1 - 0.0253968253968253*G0_1_2 - 0.0253968253968252*G0_2_0 - 0.0253968253968252*G0_2_1 - 0.0253968253968251*G0_2_2; A[946] = 0.0183421516754848*G0_0_0; A[947] = -0.00705467372134016*G0_0_1 - 0.0253968253968253*G0_1_1; A[948] = -0.00705467372134039*G0_0_2 + 0.0423280423280422*G0_2_2; A[949] = 0.0677248677248677*G0_0_1 + 0.0225749559082897*G0_0_2 + 0.135449735449736*G0_1_1 + 0.0338624338624343*G0_1_2 + 0.0338624338624338*G0_2_1; A[950] = -0.186243386243386*G0_0_1 - 0.0507936507936511*G0_0_2 - 0.270899470899471*G0_1_1 - 0.0931216931216939*G0_1_2 - 0.093121693121693*G0_2_1 + 0.0677248677248673*G0_2_2; A[951] = -0.112874779541446*G0_0_1 - 0.203174603174603*G0_0_2 - 0.101587301587301*G0_1_2 - 0.101587301587302*G0_2_1 - 0.270899470899471*G0_2_2; A[952] = -0.0677248677248676*G0_0_0 - 0.011287477954145*G0_0_2 - 0.0112874779541451*G0_2_0; A[953] = 0.0846560846560844*G0_0_0 + 0.0423280423280429*G0_0_2 + 0.0423280423280429*G0_2_0 + 0.0225749559082896*G0_2_2; A[954] = -0.112874779541446*G0_0_0 - 0.101587301587302*G0_0_2 - 0.101587301587302*G0_2_0 - 0.135449735449736*G0_2_2; A[955] = -0.0225749559082891*G0_0_0 - 0.011287477954145*G0_0_1 - 0.0112874779541447*G0_1_0; A[956] = 0.0169312169312166*G0_0_0 + 0.0197530864197532*G0_0_1 + 0.0197530864197529*G0_1_0 + 0.0225749559082891*G0_1_1; A[957] = 0.0225749559082899*G0_0_0 + 0.0338624338624338*G0_0_1 + 0.0338624338624343*G0_1_0 + 0.0451499118165786*G0_1_1; A[958] = 0.067724867724868*G0_0_0 + 0.067724867724868*G0_0_1 + 0.0564373897707236*G0_0_2 + 0.135449735449736*G0_1_0 + 0.135449735449736*G0_1_1 + 0.101587301587301*G0_1_2 + 0.101587301587302*G0_2_0 + 0.101587301587302*G0_2_1 + 0.0677248677248671*G0_2_2; A[959] = -0.0846560846560849*G0_0_0 - 0.0846560846560851*G0_0_1 - 0.042328042328043*G0_0_2 - 0.270899470899471*G0_1_0 - 0.270899470899472*G0_1_1 - 0.177777777777778*G0_1_2 - 0.177777777777779*G0_2_0 - 0.177777777777779*G0_2_1 - 0.0169312169312162*G0_2_2; A[960] = 0.112874779541446*G0_0_0 + 0.112874779541446*G0_0_1 + 0.0112874779541449*G0_0_2 + 0.101587301587302*G0_1_2 + 0.101587301587302*G0_2_0 + 0.101587301587302*G0_2_1 - 0.0677248677248679*G0_2_2; A[961] = 0.0225749559082893*G0_0_0 + 0.0112874779541449*G0_0_1 + 0.0225749559082892*G0_0_2 + 0.0564373897707235*G0_1_0 + 0.0225749559082891*G0_1_1 + 0.0564373897707234*G0_1_2 + 0.0902998236331572*G0_2_0 + 0.0564373897707227*G0_2_1 + 0.0902998236331572*G0_2_2; A[962] = -0.0169312169312168*G0_0_0 + 0.00282186948853606*G0_0_1 - 0.0169312169312168*G0_0_2 + 0.00282186948853632*G0_1_0 + 0.00564373897707248*G0_1_1 + 0.0028218694885363*G0_1_2 + 0.0677248677248682*G0_2_0 + 0.00282186948853665*G0_2_1 + 0.0677248677248682*G0_2_2; A[963] = -0.0225749559082897*G0_0_0 + 0.0112874779541445*G0_0_1 - 0.0225749559082897*G0_0_2 - 0.0338624338624343*G0_1_0 + 0.0225749559082891*G0_1_1 - 0.0338624338624343*G0_1_2 - 0.0338624338624344*G0_2_1; A[964] = 0.0112874779541448*G0_0_1 + 0.0112874779541448*G0_0_2 + 0.0112874779541445*G0_1_0 + 0.0451499118165789*G0_1_1 + 0.0451499118165789*G0_1_2 + 0.0112874779541445*G0_2_0 + 0.0451499118165789*G0_2_1 + 0.0451499118165789*G0_2_2; A[965] = 0.00282186948853608*G0_0_1 + 0.00282186948853611*G0_0_2 + 0.00282186948853634*G0_1_0 + 0.0225749559082893*G0_1_1 + 0.0225749559082893*G0_1_2 + 0.00282186948853633*G0_2_0 + 0.0225749559082893*G0_2_1 + 0.0225749559082893*G0_2_2; A[966] = 0.011287477954145*G0_0_1 + 0.011287477954145*G0_0_2 + 0.0112874779541444*G0_1_0 + 0.0112874779541444*G0_2_0; A[967] = 0.135449735449736*G0_0_0 + 0.067724867724868*G0_0_1 + 0.0451499118165784*G0_0_2 + 0.0677248677248676*G0_1_0 + 0.0225749559082888*G0_1_2 + 0.0451499118165787*G0_2_0 + 0.0225749559082887*G0_2_1; A[968] = -0.0677248677248673*G0_0_1 + 0.0677248677248677*G0_0_2 - 0.0677248677248683*G0_1_0 - 0.135449735449736*G0_1_1 + 0.0451499118165785*G0_1_2 + 0.0677248677248675*G0_2_0 + 0.0451499118165784*G0_2_1; A[969] = -0.541798941798942*G0_0_0 - 0.270899470899471*G0_0_1 - 0.27089947089947*G0_0_2 - 0.270899470899471*G0_1_0 - 0.135449735449736*G0_1_2 - 0.270899470899471*G0_2_0 - 0.135449735449735*G0_2_1 + 0.0451499118165786*G0_2_2; A[970] = -0.135449735449736*G0_0_0 - 0.0677248677248683*G0_0_1 - 0.0902998236331573*G0_0_2 - 0.203174603174604*G0_1_0 - 0.135449735449736*G0_1_1 - 0.225749559082893*G0_1_2 - 0.361199294532629*G0_2_0 - 0.225749559082892*G0_2_1 - 0.451499118165786*G0_2_2; A[971] = -0.0677248677248675*G0_0_1 + 0.067724867724868*G0_0_2 + 0.0677248677248683*G0_1_0 - 0.135449735449736*G0_1_1 + 0.0902998236331576*G0_1_2 - 0.0677248677248675*G0_2_0 + 0.090299823633157*G0_2_1 - 0.135449735449735*G0_2_2; A[972] = 0.541798941798941*G0_0_0 + 0.270899470899471*G0_0_1 + 0.270899470899471*G0_0_2 + 0.270899470899471*G0_1_0 + 0.541798941798943*G0_1_1 + 0.270899470899471*G0_1_2 + 0.270899470899471*G0_2_0 + 0.270899470899471*G0_2_1 + 0.6320987654321*G0_2_2; A[973] = -0.0677248677248683*G0_0_1 - 0.045149911816579*G0_0_2 - 0.0677248677248681*G0_1_0 - 0.135449735449736*G0_1_1 - 0.180599647266315*G0_1_2 - 0.0451499118165788*G0_2_0 - 0.180599647266315*G0_2_1 - 0.225749559082894*G0_2_2; A[974] = -0.0677248677248679*G0_0_1 - 0.0451499118165791*G0_0_2 - 0.0677248677248673*G0_1_0 - 0.0225749559082891*G0_1_2 - 0.045149911816578*G0_2_0 - 0.0225749559082888*G0_2_1 - 0.0451499118165787*G0_2_2; A[975] = 0.270899470899471*G0_0_1 + 0.135449735449737*G0_0_2 + 0.270899470899471*G0_1_0 + 0.135449735449736*G0_1_2 + 0.135449735449736*G0_2_0 + 0.135449735449735*G0_2_1 + 0.316049382716051*G0_2_2; A[976] = -0.0225749559082893*G0_0_1 - 0.0451499118165785*G0_0_2 - 0.0225749559082896*G0_1_0 - 0.0451499118165787*G0_1_1 - 0.045149911816579*G0_2_0 + 0.0451499118165784*G0_2_2; A[977] = -0.0225749559082894*G0_0_1 - 0.0451499118165782*G0_0_2 - 0.0225749559082891*G0_1_0 - 0.0451499118165786*G0_1_1 - 0.0225749559082888*G0_1_2 - 0.0451499118165779*G0_2_0 - 0.0225749559082893*G0_2_1; A[978] = -0.0225749559082892*G0_0_1 - 0.0677248677248678*G0_0_2 - 0.0225749559082892*G0_1_0 - 0.0451499118165787*G0_1_1 - 0.0451499118165784*G0_1_2 - 0.0677248677248682*G0_2_0 - 0.0451499118165787*G0_2_1; A[979] = 0.135449735449736*G0_0_1 + 0.316049382716049*G0_0_2 + 0.135449735449736*G0_1_0 + 0.270899470899472*G0_1_1 + 0.135449735449736*G0_1_2 + 0.31604938271605*G0_2_0 + 0.135449735449737*G0_2_1 - 0.0902998236331569*G0_2_2; A[980] = 0.042328042328042*G0_0_0 + 0.042328042328042*G0_0_1 + 0.042328042328042*G0_0_2 + 0.0493827160493825*G0_1_0 + 0.0493827160493826*G0_1_1 + 0.0493827160493825*G0_1_2 + 0.0423280423280422*G0_2_0 + 0.0423280423280422*G0_2_1 + 0.0423280423280421*G0_2_2; A[981] = -0.0253968253968255*G0_0_0 - 0.00705467372134048*G0_1_0; A[982] = 0.0183421516754848*G0_1_1; A[983] = -0.00705467372134036*G0_1_2 - 0.0253968253968253*G0_2_2; A[984] = -0.0225749559082893*G0_1_1 - 0.0112874779541452*G0_1_2 - 0.0112874779541444*G0_2_1; A[985] = 0.0169312169312173*G0_1_1 + 0.0197530864197541*G0_1_2 + 0.0197530864197532*G0_2_1 + 0.02257495590829*G0_2_2; A[986] = 0.0225749559082895*G0_1_1 + 0.0338624338624338*G0_1_2 + 0.0338624338624345*G0_2_1 + 0.0451499118165787*G0_2_2; A[987] = 0.0902998236331567*G0_0_0 + 0.0338624338624336*G0_0_2 + 0.0677248677248678*G0_1_0 + 0.022574955908289*G0_1_2 + 0.0338624338624342*G0_2_0; A[988] = 0.0677248677248677*G0_0_0 + 0.0649029982363318*G0_0_2 + 0.0846560846560843*G0_1_0 + 0.0846560846560848*G0_1_2 + 0.0649029982363311*G0_2_0 + 0.067724867724868*G0_2_2; A[989] = 0.0338624338624337*G0_0_2 + 0.0225749559082895*G0_1_0 + 0.0677248677248677*G0_1_2 + 0.0338624338624345*G0_2_0 + 0.090299823633157*G0_2_2; A[990] = 0.0451499118165784*G0_0_0 + 0.0338624338624336*G0_0_1 + 0.0338624338624339*G0_1_0 + 0.022574955908289*G0_1_1; A[991] = 0.0225749559082892*G0_0_0 + 0.0197530864197533*G0_0_1 + 0.0197530864197531*G0_1_0 + 0.0169312169312169*G0_1_1; A[992] = -0.0112874779541449*G0_0_1 - 0.0112874779541452*G0_1_0 - 0.0225749559082896*G0_1_1; A[993] = -0.270899470899471*G0_0_0 - 0.270899470899471*G0_0_1 - 0.169312169312169*G0_0_2 - 0.0677248677248678*G0_1_0 - 0.0677248677248676*G0_1_1 - 0.0790123456790118*G0_1_2 - 0.16931216931217*G0_2_0 - 0.16931216931217*G0_2_1 - 0.0677248677248672*G0_2_2; A[994] = 0.0677248677248679*G0_0_0 + 0.0677248677248679*G0_0_1 + 0.16084656084656*G0_0_2 + 0.118518518518519*G0_1_0 + 0.118518518518519*G0_1_1 + 0.0253968253968248*G0_1_2 + 0.160846560846562*G0_2_0 + 0.160846560846562*G0_2_1 - 0.0169312169312175*G0_2_2; A[995] = -0.0338624338624332*G0_0_2 - 0.0225749559082895*G0_1_0 - 0.0225749559082895*G0_1_1 + 0.011287477954145*G0_1_2 - 0.0338624338624345*G0_2_0 - 0.0338624338624345*G0_2_1 + 0.067724867724868*G0_2_2; A[996] = -0.135449735449736*G0_0_0 - 0.0338624338624333*G0_0_1 - 0.135449735449736*G0_0_2 - 0.0338624338624342*G0_1_0 - 0.0451499118165783*G0_1_1 - 0.0338624338624341*G0_1_2 - 0.135449735449736*G0_2_0 - 0.0338624338624337*G0_2_1 - 0.135449735449736*G0_2_2; A[997] = 0.0225749559082894*G0_0_0 - 0.0197530864197536*G0_0_1 + 0.0225749559082893*G0_0_2 - 0.0197530864197531*G0_1_0 + 0.0225749559082891*G0_1_1 - 0.0197530864197532*G0_1_2 + 0.0225749559082892*G0_2_0 - 0.0197530864197534*G0_2_1 + 0.0225749559082892*G0_2_2; A[998] = 0.0112874779541449*G0_0_1 + 0.0112874779541452*G0_1_0 - 0.0451499118165782*G0_1_1 + 0.0112874779541452*G0_1_2 + 0.0112874779541451*G0_2_1; A[999] = -0.0677248677248674*G0_0_0 - 0.16931216931217*G0_0_1 - 0.16931216931217*G0_0_2 - 0.0790123456790122*G0_1_0 - 0.0677248677248681*G0_1_1 - 0.0677248677248681*G0_1_2 - 0.169312169312169*G0_2_0 - 0.270899470899472*G0_2_1 - 0.270899470899472*G0_2_2; A[1000] = -0.0169312169312171*G0_0_0 + 0.160846560846561*G0_0_1 + 0.160846560846561*G0_0_2 + 0.0253968253968251*G0_1_0 + 0.118518518518518*G0_1_1 + 0.118518518518518*G0_1_2 + 0.16084656084656*G0_2_0 + 0.0677248677248675*G0_2_1 + 0.0677248677248675*G0_2_2; A[1001] = 0.0677248677248679*G0_0_0 - 0.0338624338624336*G0_0_1 - 0.0338624338624336*G0_0_2 + 0.0112874779541449*G0_1_0 - 0.0225749559082891*G0_1_1 - 0.0225749559082891*G0_1_2 - 0.0338624338624334*G0_2_0; A[1002] = 0.0451499118165789*G0_0_0 + 0.0902998236331565*G0_0_1 + 0.0451499118165783*G0_0_2 + 0.0902998236331567*G0_1_0 + 0.135449735449735*G0_1_1 + 0.0677248677248678*G0_1_2 + 0.0451499118165789*G0_2_0 + 0.0677248677248683*G0_2_1; A[1003] = 0.0451499118165798*G0_0_1 + 0.0225749559082892*G0_0_2 + 0.0451499118165788*G0_1_0 + 0.0902998236331572*G0_1_1 + 0.045149911816578*G0_1_2 + 0.0225749559082901*G0_2_0 + 0.0451499118165795*G0_2_1; A[1004] = 0.0677248677248681*G0_0_1 + 0.0451499118165799*G0_0_2 + 0.0677248677248683*G0_1_0 + 0.135449735449735*G0_1_1 + 0.0902998236331575*G0_1_2 + 0.0451499118165791*G0_2_0 + 0.0902998236331569*G0_2_1 + 0.0451499118165792*G0_2_2; A[1005] = 0.0451499118165787*G0_0_0 + 0.31604938271605*G0_0_1 + 0.180599647266315*G0_0_2 + 0.31604938271605*G0_1_0 + 0.0451499118165789*G0_1_1 + 0.180599647266315*G0_1_2 + 0.180599647266315*G0_2_0 + 0.180599647266315*G0_2_1 + 0.316049382716052*G0_2_2; A[1006] = -0.0451499118165786*G0_0_1 - 0.0225749559082899*G0_0_2 - 0.0451499118165788*G0_1_0 + 0.0451499118165782*G0_1_1 - 0.0225749559082901*G0_2_0 - 0.0451499118165794*G0_2_2; A[1007] = -0.0677248677248681*G0_0_1 - 0.0451499118165788*G0_0_2 - 0.0677248677248683*G0_1_0 - 0.135449735449736*G0_1_1 - 0.180599647266315*G0_1_2 - 0.045149911816579*G0_2_0 - 0.180599647266315*G0_2_1 - 0.225749559082894*G0_2_2; A[1008] = 0.632098765432099*G0_0_0 + 0.361199294532628*G0_0_1 + 0.361199294532629*G0_0_2 + 0.361199294532628*G0_1_0 + 0.632098765432099*G0_1_1 + 0.361199294532629*G0_1_2 + 0.361199294532629*G0_2_0 + 0.361199294532629*G0_2_1 + 0.632098765432101*G0_2_2; A[1009] = -0.451499118165784*G0_0_0 - 0.0902998236331568*G0_0_1 - 0.225749559082893*G0_0_2 - 0.361199294532628*G0_1_0 - 0.135449735449735*G0_1_1 - 0.203174603174602*G0_1_2 - 0.225749559082893*G0_2_0 - 0.0677248677248683*G0_2_1 - 0.135449735449736*G0_2_2; A[1010] = -0.135449735449736*G0_0_0 - 0.0677248677248683*G0_0_1 - 0.225749559082893*G0_0_2 - 0.203174603174603*G0_1_0 - 0.135449735449736*G0_1_1 - 0.361199294532629*G0_1_2 - 0.225749559082893*G0_2_0 - 0.0902998236331571*G0_2_1 - 0.451499118165786*G0_2_2; A[1011] = 0.31604938271605*G0_0_0 + 0.180599647266315*G0_0_1 + 0.180599647266314*G0_0_2 + 0.180599647266314*G0_1_0 + 0.045149911816579*G0_1_1 + 0.316049382716049*G0_1_2 + 0.180599647266315*G0_2_0 + 0.31604938271605*G0_2_1 + 0.0451499118165784*G0_2_2; A[1012] = -0.225749559082892*G0_0_0 - 0.180599647266314*G0_0_1 - 0.0451499118165783*G0_0_2 - 0.180599647266314*G0_1_0 - 0.135449735449735*G0_1_1 - 0.0677248677248676*G0_1_2 - 0.0451499118165785*G0_2_0 - 0.0677248677248675*G0_2_1; A[1013] = -0.0451499118165786*G0_0_0 - 0.022574955908289*G0_0_2 + 0.0451499118165786*G0_1_1 - 0.0451499118165775*G0_1_2 - 0.0225749559082892*G0_2_0 - 0.0451499118165787*G0_2_1; A[1014] = -0.0902998236331579*G0_0_0 - 0.406349206349207*G0_0_1 - 0.225749559082894*G0_0_2 - 0.406349206349207*G0_1_0 - 0.722398589065256*G0_1_1 - 0.406349206349207*G0_1_2 - 0.225749559082894*G0_2_0 - 0.406349206349208*G0_2_1 - 0.0902998236331579*G0_2_2; A[1015] = -0.0253968253968251*G0_0_0 - 0.0253968253968251*G0_0_1 - 0.0253968253968251*G0_0_2 - 0.0183421516754849*G0_1_0 - 0.0183421516754848*G0_1_1 - 0.0183421516754849*G0_1_2 - 0.0253968253968253*G0_2_0 - 0.0253968253968253*G0_2_1 - 0.0253968253968254*G0_2_2; A[1016] = 0.0423280423280424*G0_0_0 - 0.00705467372134026*G0_1_0; A[1017] = 0.0183421516754849*G0_1_1; A[1018] = -0.00705467372134038*G0_1_2 - 0.0253968253968254*G0_2_2; A[1019] = -0.0225749559082893*G0_1_1 - 0.0112874779541447*G0_1_2 - 0.0112874779541447*G0_2_1; A[1020] = 0.0169312169312169*G0_1_1 + 0.019753086419753*G0_1_2 + 0.0197530864197532*G0_2_1 + 0.0225749559082892*G0_2_2; A[1021] = 0.0225749559082892*G0_1_1 + 0.0338624338624338*G0_1_2 + 0.0338624338624341*G0_2_1 + 0.0451499118165789*G0_2_2; A[1022] = -0.270899470899471*G0_0_0 - 0.101587301587302*G0_0_2 - 0.203174603174603*G0_1_0 - 0.112874779541446*G0_1_2 - 0.101587301587301*G0_2_0; A[1023] = 0.0677248677248681*G0_0_0 - 0.093121693121693*G0_0_2 - 0.0507936507936508*G0_1_0 - 0.186243386243386*G0_1_2 - 0.0931216931216934*G0_2_0 - 0.270899470899472*G0_2_2; A[1024] = 0.0338624338624339*G0_0_2 + 0.0225749559082892*G0_1_0 + 0.0677248677248678*G0_1_2 + 0.0338624338624341*G0_2_0 + 0.135449735449736*G0_2_2; A[1025] = -0.135449735449735*G0_0_0 - 0.101587301587302*G0_0_1 - 0.101587301587301*G0_1_0 - 0.112874779541446*G0_1_1; A[1026] = 0.0225749559082895*G0_0_0 + 0.0423280423280425*G0_0_1 + 0.0423280423280426*G0_1_0 + 0.084656084656085*G0_1_1; A[1027] = -0.0112874779541445*G0_0_1 - 0.0112874779541447*G0_1_0 - 0.0677248677248677*G0_1_1; A[1028] = 0.0902998236331569*G0_0_0 + 0.0902998236331567*G0_0_1 + 0.0564373897707224*G0_0_2 + 0.0225749559082894*G0_1_0 + 0.0225749559082894*G0_1_1 + 0.0112874779541444*G0_1_2 + 0.0564373897707234*G0_2_0 + 0.0564373897707232*G0_2_1 + 0.0225749559082894*G0_2_2; A[1029] = 0.0677248677248675*G0_0_0 + 0.0677248677248675*G0_0_1 + 0.00282186948853692*G0_0_2 - 0.0169312169312176*G0_1_0 - 0.0169312169312176*G0_1_1 + 0.0028218694885362*G0_1_2 + 0.00282186948853595*G0_2_0 + 0.00282186948853597*G0_2_1 + 0.00564373897707188*G0_2_2; A[1030] = -0.0338624338624343*G0_0_2 - 0.0225749559082893*G0_1_0 - 0.0225749559082892*G0_1_1 + 0.0112874779541445*G0_1_2 - 0.0338624338624341*G0_2_0 - 0.0338624338624341*G0_2_1 + 0.0225749559082894*G0_2_2; A[1031] = 0.0451499118165786*G0_0_0 + 0.0112874779541442*G0_0_1 + 0.0451499118165785*G0_0_2 + 0.011287477954145*G0_1_0 + 0.011287477954145*G0_1_2 + 0.0451499118165787*G0_2_0 + 0.0112874779541446*G0_2_1 + 0.0451499118165787*G0_2_2; A[1032] = 0.0225749559082893*G0_0_0 + 0.00282186948853653*G0_0_1 + 0.0225749559082892*G0_0_2 + 0.00282186948853595*G0_1_0 + 0.00282186948853588*G0_1_2 + 0.0225749559082892*G0_2_0 + 0.00282186948853604*G0_2_1 + 0.0225749559082893*G0_2_2; A[1033] = 0.0112874779541444*G0_0_1 + 0.0112874779541447*G0_1_0 + 0.0112874779541447*G0_1_2 + 0.0112874779541447*G0_2_1; A[1034] = 0.0677248677248673*G0_0_0 + 0.101587301587302*G0_0_1 + 0.101587301587302*G0_0_2 + 0.0564373897707228*G0_1_0 + 0.067724867724868*G0_1_1 + 0.0677248677248679*G0_1_2 + 0.101587301587301*G0_2_0 + 0.135449735449735*G0_2_1 + 0.135449735449736*G0_2_2; A[1035] = -0.0169312169312166*G0_0_0 - 0.177777777777777*G0_0_1 - 0.177777777777777*G0_0_2 - 0.0423280423280418*G0_1_0 - 0.084656084656084*G0_1_1 - 0.0846560846560841*G0_1_2 - 0.177777777777778*G0_2_0 - 0.270899470899471*G0_2_1 - 0.270899470899471*G0_2_2; A[1036] = -0.0677248677248679*G0_0_0 + 0.101587301587302*G0_0_1 + 0.101587301587302*G0_0_2 + 0.0112874779541442*G0_1_0 + 0.112874779541446*G0_1_1 + 0.112874779541446*G0_1_2 + 0.101587301587301*G0_2_0; A[1037] = 0.0451499118165791*G0_0_0 - 0.27089947089947*G0_0_1 - 0.135449735449735*G0_0_2 - 0.27089947089947*G0_1_0 - 0.541798941798942*G0_1_1 - 0.27089947089947*G0_1_2 - 0.135449735449735*G0_2_0 - 0.27089947089947*G0_2_1; A[1038] = 0.0451499118165782*G0_0_1 + 0.0225749559082896*G0_0_2 + 0.0451499118165785*G0_1_0 + 0.135449735449736*G0_1_1 + 0.0677248677248681*G0_1_2 + 0.0225749559082893*G0_2_0 + 0.0677248677248678*G0_2_1; A[1039] = 0.0677248677248679*G0_0_1 + 0.0451499118165781*G0_0_2 + 0.0677248677248678*G0_1_0 - 0.0677248677248676*G0_1_2 + 0.0451499118165791*G0_2_0 - 0.0677248677248673*G0_2_1 - 0.135449735449735*G0_2_2; A[1040] = 0.0451499118165784*G0_0_0 - 0.0451499118165784*G0_0_1 - 0.0451499118165787*G0_1_0 - 0.0225749559082902*G0_1_2 - 0.0225749559082894*G0_2_1 - 0.0451499118165789*G0_2_2; A[1041] = -0.0451499118165784*G0_0_1 - 0.0225749559082888*G0_0_2 - 0.0451499118165784*G0_1_0 - 0.0225749559082887*G0_1_2 - 0.0225749559082893*G0_2_0 - 0.0225749559082891*G0_2_1 - 0.0451499118165783*G0_2_2; A[1042] = -0.0677248677248673*G0_0_1 - 0.045149911816578*G0_0_2 - 0.0677248677248679*G0_1_0 - 0.0225749559082888*G0_1_2 - 0.0451499118165791*G0_2_0 - 0.0225749559082891*G0_2_1 - 0.0451499118165787*G0_2_2; A[1043] = -0.451499118165784*G0_0_0 - 0.361199294532628*G0_0_1 - 0.225749559082893*G0_0_2 - 0.0902998236331568*G0_1_0 - 0.135449735449735*G0_1_1 - 0.0677248677248683*G0_1_2 - 0.225749559082892*G0_2_0 - 0.203174603174602*G0_2_1 - 0.135449735449736*G0_2_2; A[1044] = 0.632098765432098*G0_0_0 + 0.27089947089947*G0_0_1 + 0.27089947089947*G0_0_2 + 0.27089947089947*G0_1_0 + 0.541798941798941*G0_1_1 + 0.27089947089947*G0_1_2 + 0.27089947089947*G0_2_0 + 0.27089947089947*G0_2_1 + 0.541798941798942*G0_2_2; A[1045] = -0.135449735449736*G0_0_0 - 0.0677248677248678*G0_0_1 + 0.0902998236331573*G0_0_2 + 0.0677248677248682*G0_1_0 - 0.0677248677248674*G0_1_2 + 0.0902998236331574*G0_2_0 + 0.0677248677248673*G0_2_1 - 0.135449735449736*G0_2_2; A[1046] = -0.225749559082892*G0_0_0 - 0.0451499118165787*G0_0_1 - 0.180599647266313*G0_0_2 - 0.0451499118165788*G0_1_0 - 0.0677248677248674*G0_1_2 - 0.180599647266314*G0_2_0 - 0.0677248677248677*G0_2_1 - 0.135449735449735*G0_2_2; A[1047] = 0.316049382716049*G0_0_0 + 0.135449735449735*G0_0_1 + 0.135449735449735*G0_0_2 + 0.135449735449735*G0_1_0 + 0.27089947089947*G0_1_2 + 0.135449735449735*G0_2_0 + 0.270899470899471*G0_2_1; A[1048] = -0.0451499118165788*G0_0_0 - 0.0451499118165786*G0_0_1 - 0.0225749559082898*G0_0_2 - 0.0451499118165786*G0_1_0 - 0.0677248677248681*G0_1_2 - 0.0225749559082894*G0_2_0 - 0.0677248677248679*G0_2_1; A[1049] = -0.0902998236331572*G0_0_0 + 0.316049382716049*G0_0_1 + 0.135449735449735*G0_0_2 + 0.316049382716049*G0_1_0 + 0.135449735449735*G0_1_2 + 0.135449735449735*G0_2_0 + 0.135449735449734*G0_2_1 + 0.27089947089947*G0_2_2; A[1050] = -0.0253968253968253*G0_0_0 - 0.0253968253968253*G0_0_1 - 0.0253968253968253*G0_0_2 - 0.0183421516754853*G0_1_0 - 0.0183421516754853*G0_1_1 - 0.0183421516754853*G0_1_2 - 0.0253968253968253*G0_2_0 - 0.0253968253968253*G0_2_1 - 0.0253968253968252*G0_2_2; A[1051] = -0.0253968253968254*G0_0_0 - 0.00705467372134063*G0_1_0; A[1052] = 0.0183421516754851*G0_1_1; A[1053] = -0.00705467372134029*G0_1_2 + 0.0423280423280423*G0_2_2; A[1054] = -0.0677248677248678*G0_1_1 - 0.0112874779541445*G0_1_2 - 0.0112874779541447*G0_2_1; A[1055] = 0.0846560846560847*G0_1_1 + 0.0423280423280424*G0_1_2 + 0.0423280423280422*G0_2_1 + 0.0225749559082886*G0_2_2; A[1056] = -0.112874779541446*G0_1_1 - 0.101587301587302*G0_1_2 - 0.101587301587302*G0_2_1 - 0.135449735449736*G0_2_2; A[1057] = 0.135449735449736*G0_0_0 + 0.0338624338624342*G0_0_2 + 0.067724867724868*G0_1_0 + 0.022574955908289*G0_1_2 + 0.0338624338624335*G0_2_0; A[1058] = -0.270899470899471*G0_0_0 - 0.0931216931216937*G0_0_2 - 0.186243386243387*G0_1_0 - 0.0507936507936504*G0_1_2 - 0.0931216931216927*G0_2_0 + 0.067724867724868*G0_2_2; A[1059] = -0.101587301587301*G0_0_2 - 0.112874779541446*G0_1_0 - 0.203174603174604*G0_1_2 - 0.101587301587302*G0_2_0 - 0.270899470899472*G0_2_2; A[1060] = 0.0451499118165786*G0_0_0 + 0.0338624338624341*G0_0_1 + 0.0338624338624341*G0_1_0 + 0.0225749559082891*G0_1_1; A[1061] = 0.0225749559082891*G0_0_0 + 0.0197530864197528*G0_0_1 + 0.0197530864197529*G0_1_0 + 0.016931216931217*G0_1_1; A[1062] = -0.0112874779541444*G0_0_1 - 0.0112874779541443*G0_1_0 - 0.0225749559082892*G0_1_1; A[1063] = 0.135449735449736*G0_0_0 + 0.135449735449736*G0_0_1 + 0.101587301587301*G0_0_2 + 0.0677248677248679*G0_1_0 + 0.0677248677248679*G0_1_1 + 0.0564373897707237*G0_1_2 + 0.101587301587302*G0_2_0 + 0.101587301587302*G0_2_1 + 0.0677248677248671*G0_2_2; A[1064] = -0.270899470899471*G0_0_0 - 0.270899470899471*G0_0_1 - 0.177777777777777*G0_0_2 - 0.0846560846560845*G0_1_0 - 0.0846560846560846*G0_1_1 - 0.0423280423280429*G0_1_2 - 0.177777777777778*G0_2_0 - 0.177777777777779*G0_2_1 - 0.016931216931216*G0_2_2; A[1065] = 0.101587301587301*G0_0_2 + 0.112874779541446*G0_1_0 + 0.112874779541446*G0_1_1 + 0.0112874779541446*G0_1_2 + 0.101587301587302*G0_2_0 + 0.101587301587302*G0_2_1 - 0.0677248677248682*G0_2_2; A[1066] = 0.0451499118165789*G0_0_0 + 0.0112874779541446*G0_0_1 + 0.045149911816579*G0_0_2 + 0.0112874779541446*G0_1_0 + 0.0112874779541447*G0_1_2 + 0.0451499118165789*G0_2_0 + 0.0112874779541444*G0_2_1 + 0.0451499118165789*G0_2_2; A[1067] = 0.022574955908289*G0_0_0 + 0.00282186948853611*G0_0_1 + 0.022574955908289*G0_0_2 + 0.00282186948853596*G0_1_0 + 0.002821869488536*G0_1_2 + 0.0225749559082892*G0_2_0 + 0.00282186948853643*G0_2_1 + 0.0225749559082892*G0_2_2; A[1068] = 0.0112874779541447*G0_0_1 + 0.0112874779541445*G0_1_0 + 0.0112874779541445*G0_1_2 + 0.0112874779541442*G0_2_1; A[1069] = 0.0225749559082892*G0_0_0 + 0.0564373897707235*G0_0_1 + 0.0564373897707235*G0_0_2 + 0.0112874779541451*G0_1_0 + 0.0225749559082893*G0_1_1 + 0.0225749559082894*G0_1_2 + 0.056437389770723*G0_2_0 + 0.0902998236331576*G0_2_1 + 0.0902998236331575*G0_2_2; A[1070] = 0.00564373897707241*G0_0_0 + 0.00282186948853617*G0_0_1 + 0.00282186948853616*G0_0_2 + 0.00282186948853587*G0_1_0 - 0.0169312169312171*G0_1_1 - 0.0169312169312171*G0_1_2 + 0.00282186948853634*G0_2_0 + 0.0677248677248679*G0_2_1 + 0.0677248677248679*G0_2_2; A[1071] = 0.0225749559082891*G0_0_0 - 0.0338624338624341*G0_0_1 - 0.0338624338624341*G0_0_2 + 0.0112874779541449*G0_1_0 - 0.022574955908289*G0_1_1 - 0.022574955908289*G0_1_2 - 0.0338624338624341*G0_2_0; A[1072] = -0.135449735449736*G0_0_0 - 0.0677248677248682*G0_0_1 + 0.0451499118165782*G0_0_2 - 0.0677248677248676*G0_1_0 + 0.0677248677248678*G0_1_2 + 0.0451499118165783*G0_2_0 + 0.0677248677248673*G0_2_1; A[1073] = 0.0677248677248671*G0_0_1 + 0.0225749559082892*G0_0_2 + 0.0677248677248678*G0_1_0 + 0.135449735449736*G0_1_1 + 0.0451499118165783*G0_1_2 + 0.0225749559082887*G0_2_0 + 0.0451499118165779*G0_2_1; A[1074] = -0.270899470899471*G0_0_1 - 0.135449735449736*G0_0_2 - 0.270899470899471*G0_1_0 - 0.541798941798943*G0_1_1 - 0.270899470899471*G0_1_2 - 0.135449735449737*G0_2_0 - 0.270899470899471*G0_2_1 + 0.0451499118165778*G0_2_2; A[1075] = -0.135449735449736*G0_0_0 - 0.0677248677248681*G0_0_1 - 0.180599647266315*G0_0_2 - 0.0677248677248679*G0_1_0 - 0.0451499118165786*G0_1_2 - 0.180599647266315*G0_2_0 - 0.0451499118165791*G0_2_1 - 0.225749559082894*G0_2_2; A[1076] = -0.0677248677248676*G0_0_1 - 0.0225749559082885*G0_0_2 - 0.0677248677248678*G0_1_0 - 0.0451499118165781*G0_1_2 - 0.0225749559082888*G0_2_0 - 0.0451499118165782*G0_2_1 - 0.0451499118165778*G0_2_2; A[1077] = 0.270899470899471*G0_0_1 + 0.135449735449736*G0_0_2 + 0.270899470899471*G0_1_0 + 0.135449735449735*G0_1_2 + 0.135449735449737*G0_2_0 + 0.135449735449736*G0_2_1 + 0.316049382716051*G0_2_2; A[1078] = -0.135449735449736*G0_0_0 - 0.203174603174603*G0_0_1 - 0.225749559082893*G0_0_2 - 0.0677248677248683*G0_1_0 - 0.135449735449736*G0_1_1 - 0.0902998236331571*G0_1_2 - 0.225749559082893*G0_2_0 - 0.361199294532629*G0_2_1 - 0.451499118165786*G0_2_2; A[1079] = -0.135449735449736*G0_0_0 + 0.0677248677248682*G0_0_1 + 0.0902998236331574*G0_0_2 - 0.0677248677248678*G0_1_0 + 0.0677248677248674*G0_1_2 + 0.0902998236331573*G0_2_0 - 0.0677248677248674*G0_2_1 - 0.135449735449736*G0_2_2; A[1080] = 0.541798941798942*G0_0_0 + 0.270899470899471*G0_0_1 + 0.270899470899471*G0_0_2 + 0.270899470899471*G0_1_0 + 0.541798941798943*G0_1_1 + 0.270899470899472*G0_1_2 + 0.270899470899471*G0_2_0 + 0.270899470899472*G0_2_1 + 0.6320987654321*G0_2_2; A[1081] = -0.045149911816579*G0_0_0 - 0.0225749559082898*G0_0_1 - 0.0225749559082895*G0_1_0 - 0.0451499118165787*G0_1_2 - 0.0451499118165793*G0_2_1 + 0.0451499118165781*G0_2_2; A[1082] = -0.0451499118165786*G0_0_0 - 0.0225749559082891*G0_0_1 - 0.0451499118165783*G0_0_2 - 0.0225749559082892*G0_1_0 - 0.0677248677248677*G0_1_2 - 0.0451499118165783*G0_2_0 - 0.067724867724868*G0_2_1; A[1083] = -0.0451499118165782*G0_0_0 - 0.0225749559082892*G0_0_1 - 0.0225749559082894*G0_0_2 - 0.0225749559082888*G0_1_0 - 0.0451499118165786*G0_1_2 - 0.0225749559082891*G0_2_0 - 0.0451499118165782*G0_2_1; A[1084] = 0.270899470899472*G0_0_0 + 0.135449735449736*G0_0_1 + 0.135449735449737*G0_0_2 + 0.135449735449736*G0_1_0 + 0.31604938271605*G0_1_2 + 0.135449735449737*G0_2_0 + 0.316049382716051*G0_2_1 - 0.0902998236331556*G0_2_2; A[1085] = 0.0423280423280421*G0_0_0 + 0.0423280423280421*G0_0_1 + 0.0423280423280421*G0_0_2 + 0.0423280423280422*G0_1_0 + 0.0423280423280422*G0_1_1 + 0.0423280423280422*G0_1_2 + 0.0493827160493826*G0_2_0 + 0.0493827160493826*G0_2_1 + 0.0493827160493826*G0_2_2; A[1086] = -0.0253968253968254*G0_0_0 - 0.00705467372134038*G0_2_0; A[1087] = -0.0253968253968254*G0_1_1 - 0.00705467372134047*G0_2_1; A[1088] = 0.018342151675485*G0_2_2; A[1089] = 0.0451499118165788*G0_1_1 + 0.0338624338624341*G0_1_2 + 0.0338624338624339*G0_2_1 + 0.022574955908289*G0_2_2; A[1090] = 0.0225749559082893*G0_1_1 + 0.0197530864197531*G0_1_2 + 0.0197530864197532*G0_2_1 + 0.0169312169312173*G0_2_2; A[1091] = -0.0112874779541446*G0_1_2 - 0.0112874779541448*G0_2_1 - 0.0225749559082896*G0_2_2; A[1092] = 0.0451499118165784*G0_0_0 + 0.0338624338624338*G0_0_2 + 0.0338624338624337*G0_2_0 + 0.0225749559082892*G0_2_2; A[1093] = 0.0225749559082894*G0_0_0 + 0.0197530864197536*G0_0_2 + 0.0197530864197533*G0_2_0 + 0.0169312169312171*G0_2_2; A[1094] = -0.0112874779541448*G0_0_2 - 0.0112874779541448*G0_2_0 - 0.0225749559082893*G0_2_2; A[1095] = 0.0902998236331568*G0_0_0 + 0.0338624338624339*G0_0_1 + 0.033862433862434*G0_1_0 + 0.0677248677248677*G0_2_0 + 0.0225749559082892*G0_2_1; A[1096] = 0.0677248677248675*G0_0_0 + 0.0649029982363313*G0_0_1 + 0.0649029982363311*G0_1_0 + 0.0677248677248673*G0_1_1 + 0.0846560846560842*G0_2_0 + 0.0846560846560842*G0_2_1; A[1097] = 0.0338624338624337*G0_0_1 + 0.0338624338624341*G0_1_0 + 0.0902998236331571*G0_1_1 + 0.0225749559082891*G0_2_0 + 0.0677248677248675*G0_2_1; A[1098] = -0.135449735449736*G0_0_0 - 0.135449735449735*G0_0_1 - 0.0338624338624334*G0_0_2 - 0.135449735449736*G0_1_0 - 0.135449735449736*G0_1_1 - 0.0338624338624336*G0_1_2 - 0.0338624338624336*G0_2_0 - 0.0338624338624335*G0_2_1 - 0.0451499118165782*G0_2_2; A[1099] = 0.0225749559082896*G0_0_0 + 0.0225749559082896*G0_0_1 - 0.0197530864197535*G0_0_2 + 0.0225749559082897*G0_1_0 + 0.0225749559082896*G0_1_1 - 0.0197530864197532*G0_1_2 - 0.0197530864197531*G0_2_0 - 0.0197530864197532*G0_2_1 + 0.0225749559082892*G0_2_2; A[1100] = 0.0112874779541449*G0_0_2 + 0.0112874779541448*G0_1_2 + 0.0112874779541447*G0_2_0 + 0.0112874779541448*G0_2_1 - 0.0451499118165783*G0_2_2; A[1101] = -0.270899470899471*G0_0_0 - 0.169312169312169*G0_0_1 - 0.270899470899471*G0_0_2 - 0.16931216931217*G0_1_0 - 0.0677248677248675*G0_1_1 - 0.16931216931217*G0_1_2 - 0.0677248677248675*G0_2_0 - 0.0790123456790122*G0_2_1 - 0.0677248677248675*G0_2_2; A[1102] = 0.0677248677248675*G0_0_0 + 0.16084656084656*G0_0_1 + 0.0677248677248674*G0_0_2 + 0.160846560846561*G0_1_0 - 0.0169312169312173*G0_1_1 + 0.160846560846561*G0_1_2 + 0.118518518518518*G0_2_0 + 0.0253968253968253*G0_2_1 + 0.118518518518518*G0_2_2; A[1103] = -0.0338624338624335*G0_0_1 - 0.033862433862434*G0_1_0 + 0.067724867724868*G0_1_1 - 0.033862433862434*G0_1_2 - 0.022574955908289*G0_2_0 + 0.0112874779541447*G0_2_1 - 0.0225749559082889*G0_2_2; A[1104] = -0.0677248677248674*G0_0_0 - 0.16931216931217*G0_0_1 - 0.16931216931217*G0_0_2 - 0.169312169312169*G0_1_0 - 0.270899470899471*G0_1_1 - 0.270899470899471*G0_1_2 - 0.0790123456790121*G0_2_0 - 0.0677248677248675*G0_2_1 - 0.0677248677248675*G0_2_2; A[1105] = -0.0169312169312172*G0_0_0 + 0.160846560846561*G0_0_1 + 0.160846560846561*G0_0_2 + 0.16084656084656*G0_1_0 + 0.0677248677248673*G0_1_1 + 0.0677248677248674*G0_1_2 + 0.0253968253968251*G0_2_0 + 0.118518518518518*G0_2_1 + 0.118518518518518*G0_2_2; A[1106] = 0.0677248677248678*G0_0_0 - 0.0338624338624337*G0_0_1 - 0.0338624338624338*G0_0_2 - 0.0338624338624335*G0_1_0 + 0.0112874779541448*G0_2_0 - 0.0225749559082891*G0_2_1 - 0.0225749559082891*G0_2_2; A[1107] = 0.0451499118165789*G0_0_0 + 0.0451499118165787*G0_0_1 + 0.0902998236331567*G0_0_2 + 0.0451499118165786*G0_1_0 + 0.0677248677248673*G0_1_2 + 0.0902998236331567*G0_2_0 + 0.0677248677248675*G0_2_1 + 0.135449735449735*G0_2_2; A[1108] = 0.0451499118165788*G0_0_1 + 0.0677248677248674*G0_0_2 + 0.045149911816579*G0_1_0 + 0.0451499118165786*G0_1_1 + 0.0902998236331569*G0_1_2 + 0.0677248677248675*G0_2_0 + 0.0902998236331564*G0_2_1 + 0.135449735449734*G0_2_2; A[1109] = 0.0225749559082895*G0_0_1 + 0.0451499118165793*G0_0_2 + 0.0225749559082894*G0_1_0 + 0.0451499118165791*G0_1_2 + 0.0451499118165787*G0_2_0 + 0.0451499118165786*G0_2_1 + 0.0902998236331574*G0_2_2; A[1110] = 0.0451499118165789*G0_0_0 + 0.180599647266314*G0_0_1 + 0.31604938271605*G0_0_2 + 0.180599647266315*G0_1_0 + 0.31604938271605*G0_1_1 + 0.180599647266315*G0_1_2 + 0.31604938271605*G0_2_0 + 0.180599647266314*G0_2_1 + 0.0451499118165786*G0_2_2; A[1111] = -0.0451499118165786*G0_0_1 - 0.0677248677248678*G0_0_2 - 0.0451499118165789*G0_1_0 - 0.225749559082893*G0_1_1 - 0.180599647266314*G0_1_2 - 0.0677248677248675*G0_2_0 - 0.180599647266314*G0_2_1 - 0.135449735449736*G0_2_2; A[1112] = -0.0225749559082895*G0_0_1 - 0.045149911816579*G0_0_2 - 0.0225749559082893*G0_1_0 - 0.0451499118165787*G0_1_1 - 0.0451499118165785*G0_2_0 + 0.0451499118165784*G0_2_2; A[1113] = 0.31604938271605*G0_0_0 + 0.180599647266314*G0_0_1 + 0.180599647266315*G0_0_2 + 0.180599647266315*G0_1_0 + 0.045149911816579*G0_1_1 + 0.31604938271605*G0_1_2 + 0.180599647266314*G0_2_0 + 0.316049382716049*G0_2_1 + 0.0451499118165784*G0_2_2; A[1114] = -0.225749559082892*G0_0_0 - 0.0451499118165788*G0_0_1 - 0.180599647266314*G0_0_2 - 0.0451499118165787*G0_1_0 - 0.0677248677248677*G0_1_2 - 0.180599647266313*G0_2_0 - 0.0677248677248674*G0_2_1 - 0.135449735449735*G0_2_2; A[1115] = -0.045149911816579*G0_0_0 - 0.0225749559082895*G0_0_1 - 0.0225749559082898*G0_1_0 - 0.0451499118165793*G0_1_2 - 0.0451499118165788*G0_2_1 + 0.0451499118165781*G0_2_2; A[1116] = 0.632098765432099*G0_0_0 + 0.361199294532628*G0_0_1 + 0.361199294532628*G0_0_2 + 0.361199294532628*G0_1_0 + 0.632098765432099*G0_1_1 + 0.361199294532628*G0_1_2 + 0.361199294532627*G0_2_0 + 0.361199294532628*G0_2_1 + 0.632098765432099*G0_2_2; A[1117] = -0.451499118165785*G0_0_0 - 0.225749559082892*G0_0_1 - 0.0902998236331567*G0_0_2 - 0.225749559082892*G0_1_0 - 0.135449735449735*G0_1_1 - 0.0677248677248675*G0_1_2 - 0.361199294532628*G0_2_0 - 0.203174603174602*G0_2_1 - 0.135449735449735*G0_2_2; A[1118] = -0.135449735449735*G0_0_0 - 0.225749559082892*G0_0_1 - 0.0677248677248671*G0_0_2 - 0.225749559082892*G0_1_0 - 0.451499118165785*G0_1_1 - 0.0902998236331566*G0_1_2 - 0.203174603174603*G0_2_0 - 0.361199294532628*G0_2_1 - 0.135449735449734*G0_2_2; A[1119] = -0.0902998236331582*G0_0_0 - 0.225749559082893*G0_0_1 - 0.406349206349207*G0_0_2 - 0.225749559082894*G0_1_0 - 0.0902998236331575*G0_1_1 - 0.406349206349207*G0_1_2 - 0.406349206349207*G0_2_0 - 0.406349206349206*G0_2_1 - 0.722398589065256*G0_2_2; A[1120] = -0.0253968253968252*G0_0_0 - 0.0253968253968252*G0_0_1 - 0.0253968253968252*G0_0_2 - 0.0253968253968253*G0_1_0 - 0.0253968253968254*G0_1_1 - 0.0253968253968253*G0_1_2 - 0.0183421516754849*G0_2_0 - 0.0183421516754849*G0_2_1 - 0.0183421516754848*G0_2_2; A[1121] = 0.0423280423280422*G0_0_0 - 0.00705467372134043*G0_2_0; A[1122] = -0.0253968253968254*G0_1_1 - 0.00705467372134051*G0_2_1; A[1123] = 0.0183421516754851*G0_2_2; A[1124] = 0.0451499118165786*G0_1_1 + 0.0338624338624339*G0_1_2 + 0.0338624338624339*G0_2_1 + 0.022574955908289*G0_2_2; A[1125] = 0.0225749559082893*G0_1_1 + 0.0197530864197531*G0_1_2 + 0.0197530864197531*G0_2_1 + 0.0169312169312171*G0_2_2; A[1126] = -0.0112874779541445*G0_1_2 - 0.0112874779541449*G0_2_1 - 0.0225749559082897*G0_2_2; A[1127] = -0.135449735449735*G0_0_0 - 0.101587301587302*G0_0_2 - 0.101587301587301*G0_2_0 - 0.112874779541446*G0_2_2; A[1128] = 0.0225749559082892*G0_0_0 + 0.0423280423280423*G0_0_2 + 0.0423280423280425*G0_2_0 + 0.0846560846560851*G0_2_2; A[1129] = -0.0112874779541446*G0_0_2 - 0.0112874779541448*G0_2_0 - 0.0677248677248681*G0_2_2; A[1130] = -0.270899470899471*G0_0_0 - 0.101587301587302*G0_0_1 - 0.101587301587301*G0_1_0 - 0.203174603174603*G0_2_0 - 0.112874779541446*G0_2_1; A[1131] = 0.0677248677248679*G0_0_0 - 0.0931216931216928*G0_0_1 - 0.0931216931216933*G0_1_0 - 0.270899470899471*G0_1_1 - 0.0507936507936508*G0_2_0 - 0.186243386243386*G0_2_1; A[1132] = 0.0338624338624338*G0_0_1 + 0.033862433862434*G0_1_0 + 0.135449735449736*G0_1_1 + 0.0225749559082891*G0_2_0 + 0.0677248677248677*G0_2_1; A[1133] = 0.0451499118165785*G0_0_0 + 0.0451499118165783*G0_0_1 + 0.0112874779541441*G0_0_2 + 0.0451499118165786*G0_1_0 + 0.0451499118165784*G0_1_1 + 0.0112874779541447*G0_1_2 + 0.0112874779541446*G0_2_0 + 0.0112874779541446*G0_2_1; A[1134] = 0.0225749559082893*G0_0_0 + 0.0225749559082892*G0_0_1 + 0.00282186948853655*G0_0_2 + 0.0225749559082891*G0_1_0 + 0.0225749559082892*G0_1_1 + 0.00282186948853577*G0_1_2 + 0.00282186948853563*G0_2_0 + 0.00282186948853566*G0_2_1; A[1135] = 0.0112874779541443*G0_0_2 + 0.0112874779541447*G0_1_2 + 0.0112874779541448*G0_2_0 + 0.0112874779541449*G0_2_1; A[1136] = 0.090299823633157*G0_0_0 + 0.0564373897707228*G0_0_1 + 0.090299823633157*G0_0_2 + 0.056437389770723*G0_1_0 + 0.0225749559082892*G0_1_1 + 0.0564373897707229*G0_1_2 + 0.0225749559082893*G0_2_0 + 0.0112874779541444*G0_2_1 + 0.0225749559082893*G0_2_2; A[1137] = 0.0677248677248676*G0_0_0 + 0.00282186948853633*G0_0_1 + 0.0677248677248677*G0_0_2 + 0.00282186948853632*G0_1_0 + 0.00564373897707231*G0_1_1 + 0.00282186948853639*G0_1_2 - 0.016931216931217*G0_2_0 + 0.00282186948853621*G0_2_1 - 0.0169312169312171*G0_2_2; A[1138] = -0.0338624338624339*G0_0_1 - 0.033862433862434*G0_1_0 + 0.0225749559082892*G0_1_1 - 0.0338624338624341*G0_1_2 - 0.0225749559082891*G0_2_0 + 0.0112874779541446*G0_2_1 - 0.0225749559082892*G0_2_2; A[1139] = 0.0677248677248673*G0_0_0 + 0.101587301587302*G0_0_1 + 0.101587301587302*G0_0_2 + 0.101587301587301*G0_1_0 + 0.135449735449735*G0_1_1 + 0.135449735449735*G0_1_2 + 0.0564373897707228*G0_2_0 + 0.0677248677248677*G0_2_1 + 0.0677248677248676*G0_2_2; A[1140] = -0.0169312169312166*G0_0_0 - 0.177777777777778*G0_0_1 - 0.177777777777778*G0_0_2 - 0.177777777777778*G0_1_0 - 0.270899470899471*G0_1_1 - 0.270899470899471*G0_1_2 - 0.0423280423280418*G0_2_0 - 0.0846560846560841*G0_2_1 - 0.0846560846560841*G0_2_2; A[1141] = -0.0677248677248677*G0_0_0 + 0.101587301587302*G0_0_1 + 0.101587301587302*G0_0_2 + 0.101587301587302*G0_1_0 + 0.0112874779541445*G0_2_0 + 0.112874779541446*G0_2_1 + 0.112874779541446*G0_2_2; A[1142] = 0.0451499118165786*G0_0_0 - 0.135449735449735*G0_0_1 - 0.270899470899471*G0_0_2 - 0.135449735449735*G0_1_0 - 0.27089947089947*G0_1_2 - 0.270899470899471*G0_2_0 - 0.27089947089947*G0_2_1 - 0.541798941798942*G0_2_2; A[1143] = 0.0451499118165787*G0_0_1 + 0.0677248677248681*G0_0_2 + 0.0451499118165785*G0_1_0 - 0.135449735449736*G0_1_1 - 0.0677248677248678*G0_1_2 + 0.0677248677248677*G0_2_0 - 0.0677248677248679*G0_2_1; A[1144] = 0.0225749559082892*G0_0_1 + 0.0451499118165782*G0_0_2 + 0.0225749559082894*G0_1_0 + 0.0677248677248678*G0_1_2 + 0.0451499118165781*G0_2_0 + 0.0677248677248677*G0_2_1 + 0.135449735449736*G0_2_2; A[1145] = 0.0451499118165783*G0_0_0 - 0.0451499118165788*G0_0_2 - 0.0451499118165782*G0_1_1 - 0.0225749559082892*G0_1_2 - 0.0451499118165787*G0_2_0 - 0.0225749559082893*G0_2_1; A[1146] = -0.0451499118165783*G0_0_1 - 0.0677248677248676*G0_0_2 - 0.0451499118165786*G0_1_0 - 0.0451499118165789*G0_1_1 - 0.0225749559082894*G0_1_2 - 0.0677248677248677*G0_2_0 - 0.0225749559082894*G0_2_1; A[1147] = -0.0225749559082892*G0_0_1 - 0.0451499118165779*G0_0_2 - 0.0225749559082894*G0_1_0 - 0.0451499118165786*G0_1_1 - 0.0225749559082893*G0_1_2 - 0.0451499118165782*G0_2_0 - 0.0225749559082888*G0_2_1; A[1148] = -0.225749559082892*G0_0_0 - 0.180599647266314*G0_0_1 - 0.0451499118165785*G0_0_2 - 0.180599647266314*G0_1_0 - 0.135449735449735*G0_1_1 - 0.0677248677248675*G0_1_2 - 0.0451499118165783*G0_2_0 - 0.0677248677248676*G0_2_1; A[1149] = 0.316049382716049*G0_0_0 + 0.135449735449735*G0_0_1 + 0.135449735449735*G0_0_2 + 0.135449735449735*G0_1_0 + 0.270899470899471*G0_1_2 + 0.135449735449735*G0_2_0 + 0.27089947089947*G0_2_1; A[1150] = -0.0451499118165786*G0_0_0 - 0.0225749559082892*G0_0_1 - 0.0451499118165783*G0_0_2 - 0.0225749559082891*G0_1_0 - 0.067724867724868*G0_1_2 - 0.0451499118165783*G0_2_0 - 0.0677248677248677*G0_2_1; A[1151] = -0.451499118165785*G0_0_0 - 0.225749559082892*G0_0_1 - 0.361199294532628*G0_0_2 - 0.225749559082892*G0_1_0 - 0.135449735449735*G0_1_1 - 0.203174603174602*G0_1_2 - 0.0902998236331567*G0_2_0 - 0.0677248677248675*G0_2_1 - 0.135449735449735*G0_2_2; A[1152] = 0.632098765432099*G0_0_0 + 0.27089947089947*G0_0_1 + 0.270899470899471*G0_0_2 + 0.27089947089947*G0_1_0 + 0.541798941798942*G0_1_1 + 0.27089947089947*G0_1_2 + 0.270899470899471*G0_2_0 + 0.27089947089947*G0_2_1 + 0.541798941798942*G0_2_2; A[1153] = -0.135449735449736*G0_0_0 + 0.0902998236331569*G0_0_1 - 0.0677248677248682*G0_0_2 + 0.0902998236331571*G0_1_0 - 0.135449735449736*G0_1_1 + 0.0677248677248678*G0_1_2 + 0.0677248677248679*G0_2_0 - 0.0677248677248676*G0_2_1; A[1154] = -0.0902998236331566*G0_0_0 + 0.135449735449735*G0_0_1 + 0.316049382716049*G0_0_2 + 0.135449735449735*G0_1_0 + 0.270899470899471*G0_1_1 + 0.135449735449735*G0_1_2 + 0.316049382716049*G0_2_0 + 0.135449735449736*G0_2_1; A[1155] = -0.0253968253968253*G0_0_0 - 0.0253968253968252*G0_0_1 - 0.0253968253968253*G0_0_2 - 0.0253968253968253*G0_1_0 - 0.0253968253968252*G0_1_1 - 0.0253968253968253*G0_1_2 - 0.0183421516754849*G0_2_0 - 0.018342151675485*G0_2_1 - 0.0183421516754849*G0_2_2; A[1156] = -0.0253968253968254*G0_0_0 - 0.00705467372134036*G0_2_0; A[1157] = 0.0423280423280423*G0_1_1 - 0.00705467372134033*G0_2_1; A[1158] = 0.018342151675485*G0_2_2; A[1159] = -0.135449735449736*G0_1_1 - 0.101587301587302*G0_1_2 - 0.101587301587302*G0_2_1 - 0.112874779541446*G0_2_2; A[1160] = 0.0225749559082892*G0_1_1 + 0.0423280423280425*G0_1_2 + 0.0423280423280424*G0_2_1 + 0.0846560846560844*G0_2_2; A[1161] = -0.0112874779541447*G0_1_2 - 0.0112874779541449*G0_2_1 - 0.0677248677248677*G0_2_2; A[1162] = 0.0451499118165786*G0_0_0 + 0.0338624338624339*G0_0_2 + 0.0338624338624338*G0_2_0 + 0.0225749559082893*G0_2_2; A[1163] = 0.0225749559082891*G0_0_0 + 0.0197530864197532*G0_0_2 + 0.0197530864197535*G0_2_0 + 0.0169312169312173*G0_2_2; A[1164] = -0.0112874779541448*G0_0_2 - 0.0112874779541448*G0_2_0 - 0.0225749559082893*G0_2_2; A[1165] = 0.135449735449735*G0_0_0 + 0.0338624338624339*G0_0_1 + 0.0338624338624336*G0_1_0 + 0.0677248677248678*G0_2_0 + 0.0225749559082893*G0_2_1; A[1166] = -0.270899470899471*G0_0_0 - 0.0931216931216931*G0_0_1 - 0.0931216931216925*G0_1_0 + 0.0677248677248683*G0_1_1 - 0.186243386243386*G0_2_0 - 0.0507936507936508*G0_2_1; A[1167] = -0.101587301587301*G0_0_1 - 0.101587301587302*G0_1_0 - 0.270899470899471*G0_1_1 - 0.112874779541446*G0_2_0 - 0.203174603174603*G0_2_1; A[1168] = 0.0451499118165785*G0_0_0 + 0.0451499118165784*G0_0_1 + 0.0112874779541444*G0_0_2 + 0.0451499118165783*G0_1_0 + 0.0451499118165784*G0_1_1 + 0.0112874779541442*G0_1_2 + 0.0112874779541446*G0_2_0 + 0.0112874779541446*G0_2_1; A[1169] = 0.0225749559082891*G0_0_0 + 0.0225749559082892*G0_0_1 + 0.00282186948853609*G0_0_2 + 0.0225749559082893*G0_1_0 + 0.0225749559082894*G0_1_1 + 0.00282186948853646*G0_1_2 + 0.002821869488536*G0_2_0 + 0.00282186948853593*G0_2_1; A[1170] = 0.0112874779541446*G0_0_2 + 0.0112874779541444*G0_1_2 + 0.0112874779541448*G0_2_0 + 0.0112874779541448*G0_2_1; A[1171] = 0.135449735449735*G0_0_0 + 0.101587301587301*G0_0_1 + 0.135449735449735*G0_0_2 + 0.101587301587301*G0_1_0 + 0.0677248677248674*G0_1_1 + 0.101587301587301*G0_1_2 + 0.0677248677248676*G0_2_0 + 0.0564373897707229*G0_2_1 + 0.0677248677248675*G0_2_2; A[1172] = -0.270899470899471*G0_0_0 - 0.177777777777777*G0_0_1 - 0.270899470899471*G0_0_2 - 0.177777777777778*G0_1_0 - 0.0169312169312165*G0_1_1 - 0.177777777777778*G0_1_2 - 0.0846560846560845*G0_2_0 - 0.0423280423280421*G0_2_1 - 0.0846560846560845*G0_2_2; A[1173] = 0.101587301587301*G0_0_1 + 0.101587301587302*G0_1_0 - 0.0677248677248679*G0_1_1 + 0.101587301587302*G0_1_2 + 0.112874779541446*G0_2_0 + 0.0112874779541444*G0_2_1 + 0.112874779541446*G0_2_2; A[1174] = 0.0225749559082891*G0_0_0 + 0.056437389770723*G0_0_1 + 0.0564373897707231*G0_0_2 + 0.056437389770723*G0_1_0 + 0.0902998236331571*G0_1_1 + 0.0902998236331571*G0_1_2 + 0.0112874779541447*G0_2_0 + 0.0225749559082893*G0_2_1 + 0.0225749559082893*G0_2_2; A[1175] = 0.00564373897707234*G0_0_0 + 0.00282186948853632*G0_0_1 + 0.0028218694885363*G0_0_2 + 0.00282186948853616*G0_1_0 + 0.0677248677248681*G0_1_1 + 0.0677248677248679*G0_1_2 + 0.00282186948853582*G0_2_0 - 0.0169312169312168*G0_2_1 - 0.0169312169312168*G0_2_2; A[1176] = 0.0225749559082892*G0_0_0 - 0.033862433862434*G0_0_1 - 0.033862433862434*G0_0_2 - 0.033862433862434*G0_1_0 + 0.0112874779541448*G0_2_0 - 0.0225749559082894*G0_2_1 - 0.0225749559082893*G0_2_2; A[1177] = -0.135449735449736*G0_0_0 + 0.0451499118165787*G0_0_1 - 0.0677248677248678*G0_0_2 + 0.0451499118165786*G0_1_0 + 0.067724867724868*G0_1_2 - 0.0677248677248675*G0_2_0 + 0.0677248677248683*G0_2_1; A[1178] = -0.135449735449736*G0_0_1 - 0.270899470899471*G0_0_2 - 0.135449735449736*G0_1_0 + 0.0451499118165789*G0_1_1 - 0.270899470899471*G0_1_2 - 0.270899470899471*G0_2_0 - 0.270899470899472*G0_2_1 - 0.541798941798942*G0_2_2; A[1179] = 0.0225749559082888*G0_0_1 + 0.0677248677248672*G0_0_2 + 0.0225749559082891*G0_1_0 + 0.0451499118165781*G0_1_2 + 0.0677248677248675*G0_2_0 + 0.0451499118165788*G0_2_1 + 0.135449735449735*G0_2_2; A[1180] = -0.135449735449735*G0_0_0 - 0.180599647266314*G0_0_1 - 0.0677248677248672*G0_0_2 - 0.180599647266314*G0_1_0 - 0.225749559082892*G0_1_1 - 0.0451499118165784*G0_1_2 - 0.067724867724867*G0_2_0 - 0.045149911816578*G0_2_1; A[1181] = 0.135449735449735*G0_0_1 + 0.270899470899471*G0_0_2 + 0.135449735449736*G0_1_0 + 0.31604938271605*G0_1_1 + 0.135449735449736*G0_1_2 + 0.270899470899471*G0_2_0 + 0.135449735449735*G0_2_1; A[1182] = -0.0225749559082892*G0_0_1 - 0.0677248677248682*G0_0_2 - 0.0225749559082892*G0_1_0 - 0.0451499118165787*G0_1_1 - 0.0451499118165787*G0_1_2 - 0.0677248677248678*G0_2_0 - 0.0451499118165784*G0_2_1; A[1183] = -0.0451499118165786*G0_0_0 - 0.0225749559082892*G0_0_2 + 0.0451499118165786*G0_1_1 - 0.0451499118165786*G0_1_2 - 0.022574955908289*G0_2_0 - 0.0451499118165775*G0_2_1; A[1184] = -0.0451499118165788*G0_0_0 - 0.0451499118165786*G0_0_1 - 0.0225749559082894*G0_0_2 - 0.0451499118165786*G0_1_0 - 0.0677248677248679*G0_1_2 - 0.0225749559082898*G0_2_0 - 0.0677248677248681*G0_2_1; A[1185] = -0.0451499118165782*G0_0_0 - 0.0225749559082888*G0_0_1 - 0.0225749559082891*G0_0_2 - 0.0225749559082892*G0_1_0 - 0.0451499118165782*G0_1_2 - 0.0225749559082894*G0_2_0 - 0.0451499118165786*G0_2_1; A[1186] = -0.135449735449735*G0_0_0 - 0.225749559082892*G0_0_1 - 0.203174603174603*G0_0_2 - 0.225749559082892*G0_1_0 - 0.451499118165785*G0_1_1 - 0.361199294532628*G0_1_2 - 0.0677248677248671*G0_2_0 - 0.0902998236331566*G0_2_1 - 0.135449735449734*G0_2_2; A[1187] = -0.135449735449736*G0_0_0 + 0.0902998236331571*G0_0_1 + 0.0677248677248679*G0_0_2 + 0.0902998236331569*G0_1_0 - 0.135449735449736*G0_1_1 - 0.0677248677248676*G0_1_2 - 0.0677248677248682*G0_2_0 + 0.0677248677248678*G0_2_1; A[1188] = 0.541798941798942*G0_0_0 + 0.27089947089947*G0_0_1 + 0.270899470899471*G0_0_2 + 0.27089947089947*G0_1_0 + 0.632098765432099*G0_1_1 + 0.27089947089947*G0_1_2 + 0.270899470899471*G0_2_0 + 0.27089947089947*G0_2_1 + 0.541798941798942*G0_2_2; A[1189] = 0.270899470899471*G0_0_0 + 0.135449735449736*G0_0_1 + 0.135449735449735*G0_0_2 + 0.135449735449736*G0_1_0 - 0.0902998236331575*G0_1_1 + 0.316049382716049*G0_1_2 + 0.135449735449735*G0_2_0 + 0.316049382716049*G0_2_1; A[1190] = -0.0677248677248679*G0_0_0 - 0.0677248677248678*G0_0_1 - 0.0677248677248678*G0_0_2 - 0.0677248677248678*G0_1_0 - 0.0677248677248679*G0_1_1 - 0.0677248677248678*G0_1_2 - 0.067724867724868*G0_2_0 - 0.067724867724868*G0_2_1 - 0.0677248677248681*G0_2_2; A[1191] = -0.0677248677248677*G0_0_0; A[1192] = -0.0677248677248675*G0_1_1; A[1193] = -0.0677248677248676*G0_2_2; A[1194] = 0.0902998236331569*G0_1_1; A[1195] = -0.135449735449736*G0_1_1 - 0.112874779541448*G0_1_2 - 0.112874779541446*G0_2_1 - 0.135449735449736*G0_2_2; A[1196] = 0.0902998236331575*G0_2_2; A[1197] = 0.0902998236331571*G0_0_0; A[1198] = -0.135449735449736*G0_0_0 - 0.112874779541446*G0_0_2 - 0.112874779541447*G0_2_0 - 0.135449735449736*G0_2_2; A[1199] = 0.0902998236331568*G0_2_2; A[1200] = 0.090299823633157*G0_0_0; A[1201] = -0.135449735449735*G0_0_0 - 0.112874779541446*G0_0_1 - 0.112874779541447*G0_1_0 - 0.135449735449736*G0_1_1; A[1202] = 0.0902998236331575*G0_1_1; A[1203] = 0.0902998236331572*G0_0_0 + 0.0902998236331572*G0_0_1 + 0.0902998236331568*G0_0_2 + 0.0902998236331573*G0_1_0 + 0.0902998236331571*G0_1_1 + 0.090299823633157*G0_1_2 + 0.0902998236331572*G0_2_0 + 0.0902998236331571*G0_2_1 + 0.0902998236331578*G0_2_2; A[1204] = -0.135449735449737*G0_0_0 - 0.135449735449737*G0_0_1 - 0.0225749559082894*G0_0_2 - 0.135449735449737*G0_1_0 - 0.135449735449737*G0_1_1 - 0.0225749559082896*G0_1_2 - 0.0225749559082896*G0_2_0 - 0.0225749559082896*G0_2_1 - 0.0451499118165797*G0_2_2; A[1205] = 0.0902998236331571*G0_2_2; A[1206] = 0.0902998236331576*G0_0_0 + 0.0902998236331571*G0_0_1 + 0.0902998236331577*G0_0_2 + 0.0902998236331575*G0_1_0 + 0.0902998236331573*G0_1_1 + 0.0902998236331574*G0_1_2 + 0.0902998236331571*G0_2_0 + 0.0902998236331576*G0_2_1 + 0.0902998236331571*G0_2_2; A[1207] = -0.135449735449735*G0_0_0 - 0.0225749559082894*G0_0_1 - 0.135449735449736*G0_0_2 - 0.022574955908289*G0_1_0 - 0.0451499118165787*G0_1_1 - 0.0225749559082889*G0_1_2 - 0.135449735449736*G0_2_0 - 0.0225749559082897*G0_2_1 - 0.135449735449735*G0_2_2; A[1208] = 0.0902998236331566*G0_1_1; A[1209] = 0.0902998236331574*G0_0_0 + 0.0902998236331577*G0_0_1 + 0.0902998236331577*G0_0_2 + 0.0902998236331573*G0_1_0 + 0.0902998236331576*G0_1_1 + 0.0902998236331576*G0_1_2 + 0.0902998236331575*G0_2_0 + 0.0902998236331571*G0_2_1 + 0.0902998236331572*G0_2_2; A[1210] = -0.0451499118165784*G0_0_0 - 0.0225749559082888*G0_0_1 - 0.0225749559082887*G0_0_2 - 0.0225749559082894*G0_1_0 - 0.135449735449735*G0_1_1 - 0.135449735449735*G0_1_2 - 0.0225749559082894*G0_2_0 - 0.135449735449735*G0_2_1 - 0.135449735449735*G0_2_2; A[1211] = 0.0902998236331566*G0_0_0; A[1212] = -0.722398589065256*G0_0_0 - 0.316049382716049*G0_0_1 - 0.316049382716049*G0_0_2 - 0.316049382716049*G0_1_0 - 0.135449735449735*G0_1_2 - 0.316049382716049*G0_2_0 - 0.135449735449735*G0_2_1; A[1213] = -0.31604938271605*G0_0_1 - 0.135449735449735*G0_0_2 - 0.31604938271605*G0_1_0 - 0.722398589065257*G0_1_1 - 0.31604938271605*G0_1_2 - 0.135449735449735*G0_2_0 - 0.316049382716048*G0_2_1; A[1214] = -0.135449735449735*G0_0_1 - 0.31604938271605*G0_0_2 - 0.135449735449736*G0_1_0 - 0.31604938271605*G0_1_2 - 0.316049382716049*G0_2_0 - 0.31604938271605*G0_2_1 - 0.722398589065256*G0_2_2; A[1215] = -0.722398589065257*G0_0_0 - 0.406349206349207*G0_0_1 - 0.406349206349208*G0_0_2 - 0.406349206349208*G0_1_0 - 0.0902998236331577*G0_1_1 - 0.225749559082894*G0_1_2 - 0.406349206349207*G0_2_0 - 0.225749559082894*G0_2_1 - 0.090299823633158*G0_2_2; A[1216] = 0.31604938271605*G0_0_1 + 0.135449735449737*G0_0_2 + 0.31604938271605*G0_1_0 - 0.0902998236331568*G0_1_1 + 0.135449735449737*G0_1_2 + 0.135449735449735*G0_2_0 + 0.135449735449737*G0_2_1 + 0.270899470899472*G0_2_2; A[1217] = 0.135449735449736*G0_0_1 + 0.31604938271605*G0_0_2 + 0.135449735449736*G0_1_0 + 0.270899470899472*G0_1_1 + 0.135449735449737*G0_1_2 + 0.316049382716049*G0_2_0 + 0.135449735449736*G0_2_1 - 0.0902998236331569*G0_2_2; A[1218] = -0.0902998236331579*G0_0_0 - 0.406349206349207*G0_0_1 - 0.225749559082895*G0_0_2 - 0.406349206349207*G0_1_0 - 0.722398589065256*G0_1_1 - 0.406349206349208*G0_1_2 - 0.225749559082894*G0_2_0 - 0.406349206349207*G0_2_1 - 0.0902998236331579*G0_2_2; A[1219] = -0.0902998236331572*G0_0_0 + 0.316049382716049*G0_0_1 + 0.135449735449735*G0_0_2 + 0.316049382716049*G0_1_0 + 0.135449735449734*G0_1_2 + 0.135449735449735*G0_2_0 + 0.135449735449735*G0_2_1 + 0.27089947089947*G0_2_2; A[1220] = 0.270899470899472*G0_0_0 + 0.135449735449736*G0_0_1 + 0.135449735449737*G0_0_2 + 0.135449735449736*G0_1_0 + 0.316049382716051*G0_1_2 + 0.135449735449737*G0_2_0 + 0.31604938271605*G0_2_1 - 0.0902998236331556*G0_2_2; A[1221] = -0.0902998236331582*G0_0_0 - 0.225749559082894*G0_0_1 - 0.406349206349207*G0_0_2 - 0.225749559082893*G0_1_0 - 0.0902998236331575*G0_1_1 - 0.406349206349206*G0_1_2 - 0.406349206349207*G0_2_0 - 0.406349206349207*G0_2_1 - 0.722398589065256*G0_2_2; A[1222] = -0.0902998236331566*G0_0_0 + 0.135449735449735*G0_0_1 + 0.316049382716049*G0_0_2 + 0.135449735449735*G0_1_0 + 0.270899470899471*G0_1_1 + 0.135449735449736*G0_1_2 + 0.316049382716049*G0_2_0 + 0.135449735449735*G0_2_1; A[1223] = 0.270899470899471*G0_0_0 + 0.135449735449736*G0_0_1 + 0.135449735449735*G0_0_2 + 0.135449735449736*G0_1_0 - 0.0902998236331575*G0_1_1 + 0.316049382716049*G0_1_2 + 0.135449735449735*G0_2_0 + 0.316049382716049*G0_2_1; A[1224] = 1.44479717813051*G0_0_0 + 0.722398589065257*G0_0_1 + 0.722398589065257*G0_0_2 + 0.722398589065257*G0_1_0 + 1.44479717813051*G0_1_1 + 0.722398589065256*G0_1_2 + 0.722398589065257*G0_2_0 + 0.722398589065255*G0_2_1 + 1.44479717813051*G0_2_2; } /// Constructor poisson3d_4_cell_integral_1_otherwise::poisson3d_4_cell_integral_1_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson3d_4_cell_integral_1_otherwise::~poisson3d_4_cell_integral_1_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson3d_4_cell_integral_1_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 35 // Number of operations (multiply-add pairs) for tensor contraction: 1207 // Total number of operations (multiply-add pairs): 1245 // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0 = det*w[0][0]*(1.0); const double G0_1 = det*w[0][1]*(1.0); const double G0_2 = det*w[0][2]*(1.0); const double G0_3 = det*w[0][3]*(1.0); const double G0_4 = det*w[0][4]*(1.0); const double G0_5 = det*w[0][5]*(1.0); const double G0_6 = det*w[0][6]*(1.0); const double G0_7 = det*w[0][7]*(1.0); const double G0_8 = det*w[0][8]*(1.0); const double G0_9 = det*w[0][9]*(1.0); const double G0_10 = det*w[0][10]*(1.0); const double G0_11 = det*w[0][11]*(1.0); const double G0_12 = det*w[0][12]*(1.0); const double G0_13 = det*w[0][13]*(1.0); const double G0_14 = det*w[0][14]*(1.0); const double G0_15 = det*w[0][15]*(1.0); const double G0_16 = det*w[0][16]*(1.0); const double G0_17 = det*w[0][17]*(1.0); const double G0_18 = det*w[0][18]*(1.0); const double G0_19 = det*w[0][19]*(1.0); const double G0_20 = det*w[0][20]*(1.0); const double G0_21 = det*w[0][21]*(1.0); const double G0_22 = det*w[0][22]*(1.0); const double G0_23 = det*w[0][23]*(1.0); const double G0_24 = det*w[0][24]*(1.0); const double G0_25 = det*w[0][25]*(1.0); const double G0_26 = det*w[0][26]*(1.0); const double G0_27 = det*w[0][27]*(1.0); const double G0_28 = det*w[0][28]*(1.0); const double G0_29 = det*w[0][29]*(1.0); const double G0_30 = det*w[0][30]*(1.0); const double G0_31 = det*w[0][31]*(1.0); const double G0_32 = det*w[0][32]*(1.0); const double G0_33 = det*w[0][33]*(1.0); const double G0_34 = det*w[0][34]*(1.0); // Compute element tensor A[0] = 0.000200416867083531*G0_0 + 1.63005718561269e-05*G0_1 + 1.63005718561268e-05*G0_2 + 1.63005718561269e-05*G0_3 - 0.000121853455186786*G0_4 + 8.39078616856376e-05*G0_5 - 0.000121853455186786*G0_6 - 0.000121853455186786*G0_7 + 8.39078616856376e-05*G0_8 - 0.000121853455186786*G0_9 - 0.000121853455186786*G0_10 + 8.39078616856378e-05*G0_11 - 0.000121853455186786*G0_12 - 0.000149644594089037*G0_13 + 0.000112233445566778*G0_14 - 6.84089572978449e-05*G0_15 - 0.000149644594089036*G0_16 + 0.000112233445566777*G0_17 - 6.84089572978445e-05*G0_18 - 0.000149644594089037*G0_19 + 0.000112233445566777*G0_20 - 6.84089572978438e-05*G0_21 - 0.000215915771471324*G0_22 - 0.000215915771471324*G0_23 - 0.000215915771471325*G0_24 + 0.000288600288600288*G0_25 - 0.000185986852653516*G0_26 - 0.000185986852653516*G0_27 + 0.000288600288600287*G0_28 - 0.000185986852653516*G0_29 - 0.000185986852653516*G0_30 + 0.000288600288600287*G0_31 - 0.000185986852653516*G0_32 - 0.000185986852653516*G0_33 - 0.000538720538720526*G0_34; A[1] = 1.63005718561269e-05*G0_0 + 0.000200416867083532*G0_1 + 1.63005718561273e-05*G0_2 + 1.63005718561274e-05*G0_3 - 0.000121853455186787*G0_4 + 8.39078616856389e-05*G0_5 - 0.000121853455186788*G0_6 - 0.000149644594089039*G0_7 + 0.000112233445566779*G0_8 - 6.84089572978461e-05*G0_9 - 0.000149644594089038*G0_10 + 0.000112233445566778*G0_11 - 6.84089572978456e-05*G0_12 - 0.000121853455186788*G0_13 + 8.39078616856391e-05*G0_14 - 0.000121853455186788*G0_15 - 0.000121853455186787*G0_16 + 8.39078616856391e-05*G0_17 - 0.000121853455186788*G0_18 - 6.84089572978459e-05*G0_19 + 0.000112233445566778*G0_20 - 0.000149644594089037*G0_21 + 0.000288600288600287*G0_22 - 0.000185986852653519*G0_23 - 0.000185986852653518*G0_24 - 0.000215915771471325*G0_25 - 0.000215915771471326*G0_26 - 0.000215915771471326*G0_27 - 0.000185986852653518*G0_28 + 0.000288600288600287*G0_29 - 0.000185986852653518*G0_30 - 0.000185986852653518*G0_31 + 0.000288600288600287*G0_32 - 0.000185986852653518*G0_33 - 0.000538720538720536*G0_34; A[2] = 1.63005718561268e-05*G0_0 + 1.63005718561273e-05*G0_1 + 0.000200416867083532*G0_2 + 1.63005718561271e-05*G0_3 - 0.000149644594089038*G0_4 + 0.000112233445566779*G0_5 - 6.84089572978459e-05*G0_6 - 0.000121853455186787*G0_7 + 8.39078616856385e-05*G0_8 - 0.000121853455186787*G0_9 - 6.84089572978448e-05*G0_10 + 0.000112233445566778*G0_11 - 0.000149644594089037*G0_12 - 0.000121853455186788*G0_13 + 8.39078616856394e-05*G0_14 - 0.000121853455186788*G0_15 - 6.8408957297845e-05*G0_16 + 0.000112233445566778*G0_17 - 0.000149644594089037*G0_18 - 0.000121853455186787*G0_19 + 8.39078616856388e-05*G0_20 - 0.000121853455186787*G0_21 - 0.000185986852653516*G0_22 + 0.000288600288600287*G0_23 - 0.000185986852653519*G0_24 - 0.000185986852653517*G0_25 + 0.000288600288600288*G0_26 - 0.000185986852653519*G0_27 - 0.000215915771471325*G0_28 - 0.000215915771471324*G0_29 - 0.000215915771471327*G0_30 - 0.000185986852653518*G0_31 - 0.000185986852653517*G0_32 + 0.000288600288600287*G0_33 - 0.000538720538720532*G0_34; A[3] = 1.63005718561269e-05*G0_0 + 1.63005718561274e-05*G0_1 + 1.63005718561271e-05*G0_2 + 0.000200416867083533*G0_3 - 6.84089572978455e-05*G0_4 + 0.000112233445566778*G0_5 - 0.000149644594089037*G0_6 - 6.84089572978457e-05*G0_7 + 0.000112233445566778*G0_8 - 0.000149644594089037*G0_9 - 0.000121853455186787*G0_10 + 8.3907861685639e-05*G0_11 - 0.000121853455186787*G0_12 - 6.84089572978461e-05*G0_13 + 0.000112233445566779*G0_14 - 0.000149644594089038*G0_15 - 0.000121853455186787*G0_16 + 8.39078616856391e-05*G0_17 - 0.000121853455186788*G0_18 - 0.000121853455186788*G0_19 + 8.3907861685639e-05*G0_20 - 0.000121853455186787*G0_21 - 0.000185986852653517*G0_22 - 0.000185986852653519*G0_23 + 0.000288600288600286*G0_24 - 0.000185986852653518*G0_25 - 0.000185986852653518*G0_26 + 0.000288600288600287*G0_27 - 0.000185986852653518*G0_28 - 0.000185986852653518*G0_29 + 0.000288600288600286*G0_30 - 0.000215915771471325*G0_31 - 0.000215915771471325*G0_32 - 0.000215915771471326*G0_33 - 0.000538720538720535*G0_34; A[4] = -0.000121853455186786*G0_0 - 0.000121853455186787*G0_1 - 0.000149644594089038*G0_2 - 6.84089572978455e-05*G0_3 + 0.00171022393244614*G0_4 - 0.00125701459034791*G0_5 + 0.000684089572978457*G0_6 + 0.000273635829191384*G0_7 - 0.000153920153920153*G0_8 + 0.00035914702581369*G0_9 + 0.000359147025813688*G0_10 - 0.000654160654160648*G0_11 + 0.000855111966223068*G0_12 + 0.000273635829191384*G0_13 - 0.000153920153920154*G0_14 + 0.000359147025813691*G0_15 + 0.000359147025813688*G0_16 - 0.000654160654160648*G0_17 + 0.00085511196622307*G0_18 + 0.000136817914595692*G0_19 - 9.83378761156539e-05*G0_20 + 0.00013681791459569*G0_21 - 3.42044786489231e-05*G0_22 + 0.000102613435946766*G0_23 + 0.000513067179733844*G0_24 - 3.42044786489231e-05*G0_25 + 0.000102613435946766*G0_26 + 0.000513067179733845*G0_27 + 8.55111966223083e-05*G0_28 + 8.55111966223071e-05*G0_29 + 0.000974827641494301*G0_30 - 1.7102239324461e-05*G0_31 - 1.71022393244622e-05*G0_32 + 5.13067179733819e-05*G0_33 + 0.00109454331676553*G0_34; A[5] = 8.39078616856376e-05*G0_0 + 8.39078616856389e-05*G0_1 + 0.000112233445566779*G0_2 + 0.000112233445566778*G0_3 - 0.00125701459034791*G0_4 + 0.00238576238576237*G0_5 - 0.00125701459034792*G0_6 - 0.000153920153920155*G0_7 + 0.000256533589866923*G0_8 - 0.000654160654160652*G0_9 - 0.000153920153920152*G0_10 + 0.000256533589866921*G0_11 - 0.000654160654160647*G0_12 - 0.000153920153920154*G0_13 + 0.000256533589866923*G0_14 - 0.000654160654160651*G0_15 - 0.000153920153920152*G0_16 + 0.000256533589866921*G0_17 - 0.000654160654160649*G0_18 - 9.83378761156543e-05*G0_19 + 1.92400192400202e-05*G0_20 - 9.83378761156527e-05*G0_21 - 0.000179573512906845*G0_22 - 7.69600769600751e-05*G0_23 - 7.6960076960077e-05*G0_24 - 0.000179573512906845*G0_25 - 7.69600769600741e-05*G0_26 - 7.69600769600776e-05*G0_27 + 0.000269360269360266*G0_28 + 0.000269360269360268*G0_29 - 0.00101330767997434*G0_30 + 0.000269360269360267*G0_31 + 0.000269360269360267*G0_32 - 0.00101330767997434*G0_33 - 0.00102613435946768*G0_34; A[6] = -0.000121853455186786*G0_0 - 0.000121853455186788*G0_1 - 6.84089572978459e-05*G0_2 - 0.000149644594089037*G0_3 + 0.000684089572978457*G0_4 - 0.00125701459034792*G0_5 + 0.00171022393244614*G0_6 + 0.000359147025813692*G0_7 - 0.000654160654160651*G0_8 + 0.000855111966223073*G0_9 + 0.000273635829191382*G0_10 - 0.000153920153920153*G0_11 + 0.000359147025813688*G0_12 + 0.000359147025813692*G0_13 - 0.000654160654160652*G0_14 + 0.000855111966223072*G0_15 + 0.000273635829191382*G0_16 - 0.000153920153920154*G0_17 + 0.00035914702581369*G0_18 + 0.000136817914595693*G0_19 - 9.83378761156542e-05*G0_20 + 0.00013681791459569*G0_21 - 3.42044786489236e-05*G0_22 + 0.000513067179733842*G0_23 + 0.000102613435946769*G0_24 - 3.42044786489239e-05*G0_25 + 0.000513067179733843*G0_26 + 0.000102613435946769*G0_27 - 1.71022393244599e-05*G0_28 - 1.71022393244606e-05*G0_29 + 5.13067179733835e-05*G0_30 + 8.55111966223066e-05*G0_31 + 8.5511196622307e-05*G0_32 + 0.0009748276414943*G0_33 + 0.00109454331676553*G0_34; A[7] = -0.000121853455186786*G0_0 - 0.000149644594089039*G0_1 - 0.000121853455186787*G0_2 - 6.84089572978457e-05*G0_3 + 0.000273635829191384*G0_4 - 0.000153920153920155*G0_5 + 0.000359147025813692*G0_6 + 0.00171022393244614*G0_7 - 0.00125701459034791*G0_8 + 0.000684089572978457*G0_9 + 0.000855111966223069*G0_10 - 0.000654160654160648*G0_11 + 0.000359147025813689*G0_12 + 0.000273635829191385*G0_13 - 0.000153920153920155*G0_14 + 0.000359147025813691*G0_15 + 0.000136817914595691*G0_16 - 9.83378761156544e-05*G0_17 + 0.000136817914595693*G0_18 + 0.00035914702581369*G0_19 - 0.000654160654160649*G0_20 + 0.000855111966223068*G0_21 + 0.000102613435946766*G0_22 - 3.42044786489207e-05*G0_23 + 0.000513067179733846*G0_24 + 8.55111966223045e-05*G0_25 + 8.55111966223094e-05*G0_26 + 0.000974827641494305*G0_27 - 3.42044786489234e-05*G0_28 + 0.000102613435946768*G0_29 + 0.000513067179733846*G0_30 - 1.71022393244627e-05*G0_31 + 5.13067179733828e-05*G0_32 - 1.71022393244584e-05*G0_33 + 0.00109454331676554*G0_34; A[8] = 8.39078616856376e-05*G0_0 + 0.000112233445566779*G0_1 + 8.39078616856386e-05*G0_2 + 0.000112233445566778*G0_3 - 0.000153920153920154*G0_4 + 0.000256533589866923*G0_5 - 0.000654160654160651*G0_6 - 0.00125701459034791*G0_7 + 0.00238576238576237*G0_8 - 0.00125701459034791*G0_9 - 0.000654160654160647*G0_10 + 0.00025653358986692*G0_11 - 0.000153920153920152*G0_12 - 0.000153920153920154*G0_13 + 0.000256533589866923*G0_14 - 0.000654160654160651*G0_15 - 9.8337876115653e-05*G0_16 + 1.92400192400203e-05*G0_17 - 9.83378761156543e-05*G0_18 - 0.000153920153920153*G0_19 + 0.000256533589866921*G0_20 - 0.000654160654160646*G0_21 - 7.69600769600723e-05*G0_22 - 0.000179573512906847*G0_23 - 7.69600769600749e-05*G0_24 + 0.000269360269360267*G0_25 + 0.000269360269360265*G0_26 - 0.00101330767997434*G0_27 - 0.000179573512906847*G0_28 - 7.69600769600744e-05*G0_29 - 7.69600769600763e-05*G0_30 + 0.000269360269360267*G0_31 - 0.00101330767997434*G0_32 + 0.000269360269360265*G0_33 - 0.00102613435946769*G0_34; A[9] = -0.000121853455186786*G0_0 - 6.84089572978461e-05*G0_1 - 0.000121853455186787*G0_2 - 0.000149644594089037*G0_3 + 0.00035914702581369*G0_4 - 0.000654160654160652*G0_5 + 0.000855111966223073*G0_6 + 0.000684089572978457*G0_7 - 0.00125701459034791*G0_8 + 0.00171022393244614*G0_9 + 0.000359147025813688*G0_10 - 0.000153920153920153*G0_11 + 0.000273635829191382*G0_12 + 0.000359147025813692*G0_13 - 0.000654160654160652*G0_14 + 0.000855111966223072*G0_15 + 0.000136817914595691*G0_16 - 9.83378761156542e-05*G0_17 + 0.000136817914595692*G0_18 + 0.000273635829191383*G0_19 - 0.000153920153920154*G0_20 + 0.000359147025813688*G0_21 + 0.000513067179733841*G0_22 - 3.4204478648922e-05*G0_23 + 0.000102613435946769*G0_24 - 1.71022393244626e-05*G0_25 - 1.71022393244607e-05*G0_26 + 5.13067179733846e-05*G0_27 - 3.42044786489222e-05*G0_28 + 0.000513067179733842*G0_29 + 0.000102613435946769*G0_30 + 8.55111966223058e-05*G0_31 + 0.000974827641494298*G0_32 + 8.55111966223081e-05*G0_33 + 0.00109454331676553*G0_34; A[10] = -0.000121853455186786*G0_0 - 0.000149644594089038*G0_1 - 6.84089572978448e-05*G0_2 - 0.000121853455186787*G0_3 + 0.000359147025813688*G0_4 - 0.000153920153920152*G0_5 + 0.000273635829191382*G0_6 + 0.000855111966223069*G0_7 - 0.000654160654160647*G0_8 + 0.000359147025813688*G0_9 + 0.00171022393244614*G0_10 - 0.00125701459034791*G0_11 + 0.000684089572978454*G0_12 + 0.000136817914595692*G0_13 - 9.83378761156536e-05*G0_14 + 0.000136817914595691*G0_15 + 0.000273635829191381*G0_16 - 0.000153920153920153*G0_17 + 0.000359147025813689*G0_18 + 0.000359147025813689*G0_19 - 0.000654160654160648*G0_20 + 0.000855111966223068*G0_21 + 0.000102613435946764*G0_22 + 0.000513067179733843*G0_23 - 3.42044786489217e-05*G0_24 + 8.55111966223058e-05*G0_25 + 0.000974827641494302*G0_26 + 8.55111966223086e-05*G0_27 - 1.71022393244607e-05*G0_28 + 5.13067179733813e-05*G0_29 - 1.71022393244607e-05*G0_30 - 3.42044786489237e-05*G0_31 + 0.000102613435946766*G0_32 + 0.000513067179733843*G0_33 + 0.00109454331676553*G0_34; A[11] = 8.39078616856378e-05*G0_0 + 0.000112233445566778*G0_1 + 0.000112233445566778*G0_2 + 8.3907861685639e-05*G0_3 - 0.000654160654160648*G0_4 + 0.000256533589866921*G0_5 - 0.000153920153920153*G0_6 - 0.000654160654160648*G0_7 + 0.00025653358986692*G0_8 - 0.000153920153920153*G0_9 - 0.00125701459034791*G0_10 + 0.00238576238576236*G0_11 - 0.00125701459034791*G0_12 - 9.83378761156541e-05*G0_13 + 1.92400192400198e-05*G0_14 - 9.83378761156533e-05*G0_15 - 0.000153920153920152*G0_16 + 0.000256533589866921*G0_17 - 0.000654160654160648*G0_18 - 0.000153920153920153*G0_19 + 0.000256533589866921*G0_20 - 0.000654160654160647*G0_21 - 7.69600769600791e-05*G0_22 - 7.69600769600788e-05*G0_23 - 0.000179573512906844*G0_24 + 0.000269360269360269*G0_25 - 0.00101330767997434*G0_26 + 0.000269360269360267*G0_27 + 0.000269360269360268*G0_28 - 0.00101330767997434*G0_29 + 0.000269360269360266*G0_30 - 0.000179573512906843*G0_31 - 7.6960076960077e-05*G0_32 - 7.69600769600788e-05*G0_33 - 0.00102613435946769*G0_34; A[12] = -0.000121853455186786*G0_0 - 6.84089572978456e-05*G0_1 - 0.000149644594089037*G0_2 - 0.000121853455186787*G0_3 + 0.000855111966223068*G0_4 - 0.000654160654160647*G0_5 + 0.000359147025813688*G0_6 + 0.000359147025813689*G0_7 - 0.000153920153920152*G0_8 + 0.000273635829191381*G0_9 + 0.000684089572978454*G0_10 - 0.00125701459034791*G0_11 + 0.00171022393244614*G0_12 + 0.000136817914595692*G0_13 - 9.83378761156539e-05*G0_14 + 0.000136817914595691*G0_15 + 0.000359147025813687*G0_16 - 0.000654160654160647*G0_17 + 0.00085511196622307*G0_18 + 0.000273635829191382*G0_19 - 0.000153920153920153*G0_20 + 0.000359147025813688*G0_21 + 0.000513067179733841*G0_22 + 0.000102613435946763*G0_23 - 3.42044786489221e-05*G0_24 - 1.71022393244608e-05*G0_25 + 5.13067179733824e-05*G0_26 - 1.71022393244605e-05*G0_27 + 8.5511196622309e-05*G0_28 + 0.000974827641494299*G0_29 + 8.55111966223071e-05*G0_30 - 3.42044786489217e-05*G0_31 + 0.00051306717973384*G0_32 + 0.000102613435946766*G0_33 + 0.00109454331676553*G0_34; A[13] = -0.000149644594089037*G0_0 - 0.000121853455186788*G0_1 - 0.000121853455186788*G0_2 - 6.84089572978461e-05*G0_3 + 0.000273635829191384*G0_4 - 0.000153920153920154*G0_5 + 0.000359147025813692*G0_6 + 0.000273635829191385*G0_7 - 0.000153920153920154*G0_8 + 0.000359147025813692*G0_9 + 0.000136817914595692*G0_10 - 9.83378761156542e-05*G0_11 + 0.000136817914595692*G0_12 + 0.00171022393244614*G0_13 - 0.00125701459034792*G0_14 + 0.000684089572978458*G0_15 + 0.000855111966223069*G0_16 - 0.000654160654160649*G0_17 + 0.000359147025813691*G0_18 + 0.000855111966223072*G0_19 - 0.00065416065416065*G0_20 + 0.000359147025813689*G0_21 + 8.55111966223108e-05*G0_22 + 8.55111966223086e-05*G0_23 + 0.000974827641494303*G0_24 + 0.000102613435946767*G0_25 - 3.42044786489219e-05*G0_26 + 0.000513067179733844*G0_27 + 0.000102613435946769*G0_28 - 3.42044786489187e-05*G0_29 + 0.000513067179733843*G0_30 + 5.13067179733838e-05*G0_31 - 1.7102239324459e-05*G0_32 - 1.71022393244611e-05*G0_33 + 0.00109454331676554*G0_34; A[14] = 0.000112233445566778*G0_0 + 8.39078616856391e-05*G0_1 + 8.39078616856394e-05*G0_2 + 0.000112233445566779*G0_3 - 0.000153920153920154*G0_4 + 0.000256533589866923*G0_5 - 0.000654160654160652*G0_6 - 0.000153920153920155*G0_7 + 0.000256533589866923*G0_8 - 0.000654160654160652*G0_9 - 9.83378761156535e-05*G0_10 + 1.92400192400198e-05*G0_11 - 9.83378761156539e-05*G0_12 - 0.00125701459034792*G0_13 + 0.00238576238576237*G0_14 - 0.00125701459034792*G0_15 - 0.000654160654160649*G0_16 + 0.000256533589866922*G0_17 - 0.000153920153920154*G0_18 - 0.00065416065416065*G0_19 + 0.000256533589866923*G0_20 - 0.000153920153920153*G0_21 + 0.000269360269360266*G0_22 + 0.000269360269360267*G0_23 - 0.00101330767997434*G0_24 - 7.69600769600749e-05*G0_25 - 0.000179573512906846*G0_26 - 7.69600769600788e-05*G0_27 - 7.69600769600764e-05*G0_28 - 0.000179573512906849*G0_29 - 7.69600769600795e-05*G0_30 - 0.00101330767997434*G0_31 + 0.000269360269360265*G0_32 + 0.000269360269360266*G0_33 - 0.0010261343594677*G0_34; A[15] = -6.84089572978449e-05*G0_0 - 0.000121853455186788*G0_1 - 0.000121853455186788*G0_2 - 0.000149644594089038*G0_3 + 0.000359147025813691*G0_4 - 0.000654160654160651*G0_5 + 0.000855111966223072*G0_6 + 0.000359147025813691*G0_7 - 0.000654160654160651*G0_8 + 0.000855111966223072*G0_9 + 0.000136817914595691*G0_10 - 9.83378761156533e-05*G0_11 + 0.000136817914595691*G0_12 + 0.000684089572978458*G0_13 - 0.00125701459034792*G0_14 + 0.00171022393244614*G0_15 + 0.000359147025813688*G0_16 - 0.000153920153920153*G0_17 + 0.000273635829191384*G0_18 + 0.00035914702581369*G0_19 - 0.000153920153920154*G0_20 + 0.000273635829191381*G0_21 - 1.71022393244611e-05*G0_22 - 1.71022393244604e-05*G0_23 + 5.13067179733835e-05*G0_24 + 0.000513067179733841*G0_25 - 3.4204478648922e-05*G0_26 + 0.000102613435946769*G0_27 + 0.000513067179733842*G0_28 - 3.42044786489213e-05*G0_29 + 0.000102613435946768*G0_30 + 0.000974827641494298*G0_31 + 8.55111966223068e-05*G0_32 + 8.55111966223077e-05*G0_33 + 0.00109454331676553*G0_34; A[16] = -0.000149644594089036*G0_0 - 0.000121853455186787*G0_1 - 6.8408957297845e-05*G0_2 - 0.000121853455186787*G0_3 + 0.000359147025813688*G0_4 - 0.000153920153920152*G0_5 + 0.000273635829191382*G0_6 + 0.000136817914595691*G0_7 - 9.8337876115653e-05*G0_8 + 0.000136817914595691*G0_9 + 0.000273635829191381*G0_10 - 0.000153920153920152*G0_11 + 0.000359147025813688*G0_12 + 0.00085511196622307*G0_13 - 0.000654160654160649*G0_14 + 0.000359147025813688*G0_15 + 0.00171022393244614*G0_16 - 0.00125701459034791*G0_17 + 0.000684089572978456*G0_18 + 0.00085511196622307*G0_19 - 0.000654160654160649*G0_20 + 0.000359147025813687*G0_21 + 8.5511196622307e-05*G0_22 + 0.000974827641494301*G0_23 + 8.5511196622308e-05*G0_24 + 0.000102613435946765*G0_25 + 0.000513067179733844*G0_26 - 3.42044786489219e-05*G0_27 + 5.13067179733824e-05*G0_28 - 1.71022393244606e-05*G0_29 - 1.71022393244618e-05*G0_30 + 0.000102613435946766*G0_31 - 3.4204478648923e-05*G0_32 + 0.000513067179733842*G0_33 + 0.00109454331676553*G0_34; A[17] = 0.000112233445566777*G0_0 + 8.39078616856391e-05*G0_1 + 0.000112233445566778*G0_2 + 8.39078616856391e-05*G0_3 - 0.000654160654160648*G0_4 + 0.000256533589866921*G0_5 - 0.000153920153920154*G0_6 - 9.83378761156544e-05*G0_7 + 1.92400192400203e-05*G0_8 - 9.83378761156542e-05*G0_9 - 0.000153920153920153*G0_10 + 0.000256533589866921*G0_11 - 0.000654160654160647*G0_12 - 0.000654160654160649*G0_13 + 0.000256533589866922*G0_14 - 0.000153920153920153*G0_15 - 0.00125701459034791*G0_16 + 0.00238576238576236*G0_17 - 0.00125701459034791*G0_18 - 0.000654160654160649*G0_19 + 0.000256533589866923*G0_20 - 0.000153920153920153*G0_21 + 0.000269360269360267*G0_22 - 0.00101330767997434*G0_23 + 0.000269360269360266*G0_24 - 7.69600769600793e-05*G0_25 - 7.69600769600773e-05*G0_26 - 0.000179573512906845*G0_27 - 0.00101330767997434*G0_28 + 0.000269360269360266*G0_29 + 0.000269360269360266*G0_30 - 7.69600769600775e-05*G0_31 - 0.000179573512906846*G0_32 - 7.69600769600771e-05*G0_33 - 0.00102613435946769*G0_34; A[18] = -6.84089572978445e-05*G0_0 - 0.000121853455186788*G0_1 - 0.000149644594089037*G0_2 - 0.000121853455186788*G0_3 + 0.00085511196622307*G0_4 - 0.000654160654160649*G0_5 + 0.00035914702581369*G0_6 + 0.000136817914595693*G0_7 - 9.83378761156543e-05*G0_8 + 0.000136817914595692*G0_9 + 0.000359147025813689*G0_10 - 0.000654160654160648*G0_11 + 0.00085511196622307*G0_12 + 0.000359147025813691*G0_13 - 0.000153920153920154*G0_14 + 0.000273635829191384*G0_15 + 0.000684089572978456*G0_16 - 0.00125701459034791*G0_17 + 0.00171022393244614*G0_18 + 0.000359147025813691*G0_19 - 0.000153920153920155*G0_20 + 0.000273635829191382*G0_21 - 1.7102239324461e-05*G0_22 + 5.13067179733836e-05*G0_23 - 1.71022393244591e-05*G0_24 + 0.000513067179733845*G0_25 + 0.000102613435946766*G0_26 - 3.42044786489196e-05*G0_27 + 0.000974827641494302*G0_28 + 8.5511196622308e-05*G0_29 + 8.55111966223094e-05*G0_30 + 0.000513067179733844*G0_31 - 3.4204478648922e-05*G0_32 + 0.000102613435946769*G0_33 + 0.00109454331676554*G0_34; A[19] = -0.000149644594089037*G0_0 - 6.84089572978459e-05*G0_1 - 0.000121853455186787*G0_2 - 0.000121853455186788*G0_3 + 0.000136817914595692*G0_4 - 9.83378761156543e-05*G0_5 + 0.000136817914595693*G0_6 + 0.00035914702581369*G0_7 - 0.000153920153920153*G0_8 + 0.000273635829191383*G0_9 + 0.000359147025813689*G0_10 - 0.000153920153920153*G0_11 + 0.000273635829191382*G0_12 + 0.000855111966223072*G0_13 - 0.00065416065416065*G0_14 + 0.00035914702581369*G0_15 + 0.00085511196622307*G0_16 - 0.000654160654160649*G0_17 + 0.000359147025813691*G0_18 + 0.00171022393244614*G0_19 - 0.00125701459034791*G0_20 + 0.000684089572978455*G0_21 + 0.000974827641494302*G0_22 + 8.55111966223087e-05*G0_23 + 8.55111966223104e-05*G0_24 + 5.13067179733826e-05*G0_25 - 1.71022393244601e-05*G0_26 - 1.71022393244587e-05*G0_27 + 0.000102613435946766*G0_28 + 0.000513067179733843*G0_29 - 3.420447864892e-05*G0_30 + 0.000102613435946768*G0_31 + 0.000513067179733842*G0_32 - 3.42044786489211e-05*G0_33 + 0.00109454331676554*G0_34; A[20] = 0.000112233445566777*G0_0 + 0.000112233445566778*G0_1 + 8.39078616856388e-05*G0_2 + 8.3907861685639e-05*G0_3 - 9.83378761156539e-05*G0_4 + 1.92400192400202e-05*G0_5 - 9.83378761156542e-05*G0_6 - 0.000654160654160649*G0_7 + 0.000256533589866921*G0_8 - 0.000153920153920154*G0_9 - 0.000654160654160648*G0_10 + 0.000256533589866921*G0_11 - 0.000153920153920153*G0_12 - 0.00065416065416065*G0_13 + 0.000256533589866923*G0_14 - 0.000153920153920154*G0_15 - 0.000654160654160649*G0_16 + 0.000256533589866923*G0_17 - 0.000153920153920155*G0_18 - 0.00125701459034791*G0_19 + 0.00238576238576236*G0_20 - 0.00125701459034791*G0_21 - 0.00101330767997434*G0_22 + 0.000269360269360269*G0_23 + 0.000269360269360266*G0_24 - 0.00101330767997434*G0_25 + 0.000269360269360269*G0_26 + 0.000269360269360265*G0_27 - 7.69600769600807e-05*G0_28 - 7.69600769600769e-05*G0_29 - 0.000179573512906845*G0_30 - 7.69600769600798e-05*G0_31 - 7.69600769600762e-05*G0_32 - 0.000179573512906844*G0_33 - 0.00102613435946769*G0_34; A[21] = -6.84089572978438e-05*G0_0 - 0.000149644594089037*G0_1 - 0.000121853455186787*G0_2 - 0.000121853455186787*G0_3 + 0.00013681791459569*G0_4 - 9.83378761156527e-05*G0_5 + 0.00013681791459569*G0_6 + 0.000855111966223068*G0_7 - 0.000654160654160646*G0_8 + 0.000359147025813688*G0_9 + 0.000855111966223068*G0_10 - 0.000654160654160647*G0_11 + 0.000359147025813688*G0_12 + 0.000359147025813689*G0_13 - 0.000153920153920153*G0_14 + 0.000273635829191382*G0_15 + 0.000359147025813687*G0_16 - 0.000153920153920153*G0_17 + 0.000273635829191382*G0_18 + 0.000684089572978455*G0_19 - 0.00125701459034791*G0_20 + 0.00171022393244614*G0_21 + 5.13067179733814e-05*G0_22 - 1.71022393244638e-05*G0_23 - 1.71022393244615e-05*G0_24 + 0.000974827641494301*G0_25 + 8.55111966223051e-05*G0_26 + 8.55111966223076e-05*G0_27 + 0.000513067179733844*G0_28 + 0.000102613435946764*G0_29 - 3.42044786489226e-05*G0_30 + 0.000513067179733843*G0_31 + 0.000102613435946765*G0_32 - 3.42044786489242e-05*G0_33 + 0.00109454331676552*G0_34; A[22] = -0.000215915771471324*G0_0 + 0.000288600288600287*G0_1 - 0.000185986852653516*G0_2 - 0.000185986852653517*G0_3 - 3.42044786489231e-05*G0_4 - 0.000179573512906845*G0_5 - 3.42044786489236e-05*G0_6 + 0.000102613435946766*G0_7 - 7.69600769600725e-05*G0_8 + 0.000513067179733841*G0_9 + 0.000102613435946764*G0_10 - 7.69600769600791e-05*G0_11 + 0.000513067179733841*G0_12 + 8.55111966223108e-05*G0_13 + 0.000269360269360266*G0_14 - 1.71022393244611e-05*G0_15 + 8.5511196622307e-05*G0_16 + 0.000269360269360267*G0_17 - 1.7102239324461e-05*G0_18 + 0.000974827641494302*G0_19 - 0.00101330767997434*G0_20 + 5.13067179733814e-05*G0_21 + 0.00779862113195442*G0_22 - 0.00205226871893538*G0_23 - 0.00205226871893537*G0_24 - 0.000205226871893537*G0_25 - 0.00143658810325477*G0_26 - 0.00143658810325476*G0_27 - 0.00143658810325476*G0_28 + 0.00389931056597721*G0_29 - 0.00102613435946769*G0_30 - 0.00143658810325476*G0_31 + 0.0038993105659772*G0_32 - 0.00102613435946769*G0_33 + 0.0016418149751483*G0_34; A[23] = -0.000215915771471324*G0_0 - 0.000185986852653519*G0_1 + 0.000288600288600287*G0_2 - 0.000185986852653519*G0_3 + 0.000102613435946766*G0_4 - 7.69600769600751e-05*G0_5 + 0.000513067179733843*G0_6 - 3.42044786489207e-05*G0_7 - 0.000179573512906847*G0_8 - 3.4204478648922e-05*G0_9 + 0.000513067179733843*G0_10 - 7.69600769600788e-05*G0_11 + 0.000102613435946763*G0_12 + 8.55111966223086e-05*G0_13 + 0.000269360269360267*G0_14 - 1.71022393244604e-05*G0_15 + 0.000974827641494302*G0_16 - 0.00101330767997434*G0_17 + 5.13067179733835e-05*G0_18 + 8.55111966223087e-05*G0_19 + 0.000269360269360269*G0_20 - 1.71022393244638e-05*G0_21 - 0.00205226871893538*G0_22 + 0.0077986211319544*G0_23 - 0.00205226871893537*G0_24 - 0.00143658810325476*G0_25 + 0.00389931056597721*G0_26 - 0.00102613435946769*G0_27 - 0.000205226871893536*G0_28 - 0.00143658810325476*G0_29 - 0.00143658810325476*G0_30 - 0.00143658810325476*G0_31 - 0.00102613435946769*G0_32 + 0.0038993105659772*G0_33 + 0.00164181497514829*G0_34; A[24] = -0.000215915771471325*G0_0 - 0.000185986852653518*G0_1 - 0.000185986852653519*G0_2 + 0.000288600288600286*G0_3 + 0.000513067179733844*G0_4 - 7.69600769600771e-05*G0_5 + 0.000102613435946769*G0_6 + 0.000513067179733846*G0_7 - 7.6960076960075e-05*G0_8 + 0.000102613435946769*G0_9 - 3.42044786489217e-05*G0_10 - 0.000179573512906844*G0_11 - 3.4204478648922e-05*G0_12 + 0.000974827641494303*G0_13 - 0.00101330767997434*G0_14 + 5.13067179733835e-05*G0_15 + 8.55111966223081e-05*G0_16 + 0.000269360269360266*G0_17 - 1.7102239324459e-05*G0_18 + 8.55111966223104e-05*G0_19 + 0.000269360269360266*G0_20 - 1.71022393244615e-05*G0_21 - 0.00205226871893537*G0_22 - 0.00205226871893537*G0_23 + 0.00779862113195441*G0_24 - 0.00143658810325477*G0_25 - 0.00102613435946768*G0_26 + 0.00389931056597721*G0_27 - 0.00143658810325476*G0_28 - 0.00102613435946768*G0_29 + 0.00389931056597721*G0_30 - 0.000205226871893539*G0_31 - 0.00143658810325476*G0_32 - 0.00143658810325476*G0_33 + 0.00164181497514831*G0_34; A[25] = 0.000288600288600288*G0_0 - 0.000215915771471325*G0_1 - 0.000185986852653517*G0_2 - 0.000185986852653518*G0_3 - 3.42044786489231e-05*G0_4 - 0.000179573512906845*G0_5 - 3.4204478648924e-05*G0_6 + 8.55111966223046e-05*G0_7 + 0.000269360269360267*G0_8 - 1.71022393244626e-05*G0_9 + 8.55111966223058e-05*G0_10 + 0.000269360269360269*G0_11 - 1.71022393244608e-05*G0_12 + 0.000102613435946767*G0_13 - 7.69600769600748e-05*G0_14 + 0.00051306717973384*G0_15 + 0.000102613435946765*G0_16 - 7.69600769600793e-05*G0_17 + 0.000513067179733845*G0_18 + 5.13067179733827e-05*G0_19 - 0.00101330767997434*G0_20 + 0.000974827641494301*G0_21 - 0.000205226871893538*G0_22 - 0.00143658810325476*G0_23 - 0.00143658810325477*G0_24 + 0.00779862113195442*G0_25 - 0.00205226871893538*G0_26 - 0.00205226871893537*G0_27 + 0.00389931056597721*G0_28 - 0.00143658810325476*G0_29 - 0.00102613435946769*G0_30 + 0.0038993105659772*G0_31 - 0.00143658810325476*G0_32 - 0.00102613435946769*G0_33 + 0.00164181497514829*G0_34; A[26] = -0.000185986852653516*G0_0 - 0.000215915771471326*G0_1 + 0.000288600288600288*G0_2 - 0.000185986852653518*G0_3 + 0.000102613435946766*G0_4 - 7.69600769600741e-05*G0_5 + 0.000513067179733843*G0_6 + 8.55111966223095e-05*G0_7 + 0.000269360269360265*G0_8 - 1.71022393244608e-05*G0_9 + 0.000974827641494302*G0_10 - 0.00101330767997434*G0_11 + 5.13067179733824e-05*G0_12 - 3.42044786489219e-05*G0_13 - 0.000179573512906846*G0_14 - 3.42044786489221e-05*G0_15 + 0.000513067179733844*G0_16 - 7.69600769600772e-05*G0_17 + 0.000102613435946766*G0_18 - 1.71022393244601e-05*G0_19 + 0.000269360269360269*G0_20 + 8.55111966223051e-05*G0_21 - 0.00143658810325477*G0_22 + 0.00389931056597721*G0_23 - 0.00102613435946768*G0_24 - 0.00205226871893538*G0_25 + 0.00779862113195442*G0_26 - 0.00205226871893537*G0_27 - 0.00143658810325476*G0_28 - 0.000205226871893539*G0_29 - 0.00143658810325476*G0_30 - 0.00102613435946769*G0_31 - 0.00143658810325476*G0_32 + 0.00389931056597721*G0_33 + 0.0016418149751483*G0_34; A[27] = -0.000185986852653516*G0_0 - 0.000215915771471326*G0_1 - 0.000185986852653519*G0_2 + 0.000288600288600287*G0_3 + 0.000513067179733845*G0_4 - 7.69600769600775e-05*G0_5 + 0.000102613435946769*G0_6 + 0.000974827641494305*G0_7 - 0.00101330767997434*G0_8 + 5.13067179733846e-05*G0_9 + 8.55111966223086e-05*G0_10 + 0.000269360269360267*G0_11 - 1.71022393244605e-05*G0_12 + 0.000513067179733844*G0_13 - 7.69600769600788e-05*G0_14 + 0.000102613435946769*G0_15 - 3.42044786489218e-05*G0_16 - 0.000179573512906845*G0_17 - 3.42044786489195e-05*G0_18 - 1.71022393244587e-05*G0_19 + 0.000269360269360265*G0_20 + 8.55111966223076e-05*G0_21 - 0.00143658810325476*G0_22 - 0.00102613435946769*G0_23 + 0.00389931056597721*G0_24 - 0.00205226871893537*G0_25 - 0.00205226871893537*G0_26 + 0.00779862113195442*G0_27 - 0.00102613435946768*G0_28 - 0.00143658810325476*G0_29 + 0.00389931056597721*G0_30 - 0.00143658810325476*G0_31 - 0.00020522687189354*G0_32 - 0.00143658810325476*G0_33 + 0.00164181497514831*G0_34; A[28] = 0.000288600288600287*G0_0 - 0.000185986852653518*G0_1 - 0.000215915771471325*G0_2 - 0.000185986852653518*G0_3 + 8.55111966223083e-05*G0_4 + 0.000269360269360266*G0_5 - 1.71022393244599e-05*G0_6 - 3.42044786489235e-05*G0_7 - 0.000179573512906847*G0_8 - 3.42044786489223e-05*G0_9 - 1.71022393244607e-05*G0_10 + 0.000269360269360268*G0_11 + 8.5511196622309e-05*G0_12 + 0.000102613435946769*G0_13 - 7.69600769600765e-05*G0_14 + 0.000513067179733842*G0_15 + 5.13067179733824e-05*G0_16 - 0.00101330767997434*G0_17 + 0.000974827641494302*G0_18 + 0.000102613435946766*G0_19 - 7.69600769600808e-05*G0_20 + 0.000513067179733844*G0_21 - 0.00143658810325476*G0_22 - 0.000205226871893536*G0_23 - 0.00143658810325476*G0_24 + 0.00389931056597721*G0_25 - 0.00143658810325476*G0_26 - 0.00102613435946768*G0_27 + 0.00779862113195441*G0_28 - 0.00205226871893537*G0_29 - 0.00205226871893537*G0_30 + 0.0038993105659772*G0_31 - 0.00102613435946768*G0_32 - 0.00143658810325476*G0_33 + 0.0016418149751483*G0_34; A[29] = -0.000185986852653516*G0_0 + 0.000288600288600287*G0_1 - 0.000215915771471324*G0_2 - 0.000185986852653517*G0_3 + 8.55111966223071e-05*G0_4 + 0.000269360269360268*G0_5 - 1.71022393244605e-05*G0_6 + 0.000102613435946768*G0_7 - 7.69600769600744e-05*G0_8 + 0.000513067179733842*G0_9 + 5.13067179733813e-05*G0_10 - 0.00101330767997434*G0_11 + 0.000974827641494299*G0_12 - 3.42044786489188e-05*G0_13 - 0.000179573512906849*G0_14 - 3.42044786489213e-05*G0_15 - 1.71022393244606e-05*G0_16 + 0.000269360269360266*G0_17 + 8.5511196622308e-05*G0_18 + 0.000513067179733843*G0_19 - 7.69600769600771e-05*G0_20 + 0.000102613435946764*G0_21 + 0.00389931056597721*G0_22 - 0.00143658810325476*G0_23 - 0.00102613435946768*G0_24 - 0.00143658810325476*G0_25 - 0.000205226871893539*G0_26 - 0.00143658810325476*G0_27 - 0.00205226871893537*G0_28 + 0.00779862113195441*G0_29 - 0.00205226871893537*G0_30 - 0.00102613435946768*G0_31 + 0.0038993105659772*G0_32 - 0.00143658810325476*G0_33 + 0.0016418149751483*G0_34; A[30] = -0.000185986852653516*G0_0 - 0.000185986852653518*G0_1 - 0.000215915771471327*G0_2 + 0.000288600288600286*G0_3 + 0.000974827641494301*G0_4 - 0.00101330767997434*G0_5 + 5.13067179733835e-05*G0_6 + 0.000513067179733846*G0_7 - 7.69600769600764e-05*G0_8 + 0.000102613435946769*G0_9 - 1.71022393244607e-05*G0_10 + 0.000269360269360266*G0_11 + 8.55111966223071e-05*G0_12 + 0.000513067179733843*G0_13 - 7.69600769600797e-05*G0_14 + 0.000102613435946768*G0_15 - 1.71022393244618e-05*G0_16 + 0.000269360269360266*G0_17 + 8.55111966223093e-05*G0_18 - 3.420447864892e-05*G0_19 - 0.000179573512906845*G0_20 - 3.42044786489226e-05*G0_21 - 0.00102613435946769*G0_22 - 0.00143658810325476*G0_23 + 0.00389931056597721*G0_24 - 0.00102613435946769*G0_25 - 0.00143658810325476*G0_26 + 0.00389931056597721*G0_27 - 0.00205226871893537*G0_28 - 0.00205226871893537*G0_29 + 0.00779862113195441*G0_30 - 0.00143658810325476*G0_31 - 0.00143658810325476*G0_32 - 0.000205226871893541*G0_33 + 0.00164181497514831*G0_34; A[31] = 0.000288600288600287*G0_0 - 0.000185986852653518*G0_1 - 0.000185986852653518*G0_2 - 0.000215915771471324*G0_3 - 1.71022393244609e-05*G0_4 + 0.000269360269360267*G0_5 + 8.55111966223065e-05*G0_6 - 1.71022393244627e-05*G0_7 + 0.000269360269360267*G0_8 + 8.55111966223058e-05*G0_9 - 3.42044786489238e-05*G0_10 - 0.000179573512906843*G0_11 - 3.42044786489218e-05*G0_12 + 5.13067179733838e-05*G0_13 - 0.00101330767997434*G0_14 + 0.000974827641494298*G0_15 + 0.000102613435946766*G0_16 - 7.69600769600774e-05*G0_17 + 0.000513067179733844*G0_18 + 0.000102613435946768*G0_19 - 7.69600769600798e-05*G0_20 + 0.000513067179733843*G0_21 - 0.00143658810325476*G0_22 - 0.00143658810325476*G0_23 - 0.000205226871893539*G0_24 + 0.0038993105659772*G0_25 - 0.00102613435946769*G0_26 - 0.00143658810325476*G0_27 + 0.0038993105659772*G0_28 - 0.00102613435946768*G0_29 - 0.00143658810325476*G0_30 + 0.0077986211319544*G0_31 - 0.00205226871893537*G0_32 - 0.00205226871893537*G0_33 + 0.00164181497514829*G0_34; A[32] = -0.000185986852653516*G0_0 + 0.000288600288600287*G0_1 - 0.000185986852653517*G0_2 - 0.000215915771471325*G0_3 - 1.71022393244622e-05*G0_4 + 0.000269360269360267*G0_5 + 8.5511196622307e-05*G0_6 + 5.13067179733827e-05*G0_7 - 0.00101330767997434*G0_8 + 0.000974827641494298*G0_9 + 0.000102613435946766*G0_10 - 7.6960076960077e-05*G0_11 + 0.00051306717973384*G0_12 - 1.7102239324459e-05*G0_13 + 0.000269360269360266*G0_14 + 8.55111966223069e-05*G0_15 - 3.42044786489229e-05*G0_16 - 0.000179573512906846*G0_17 - 3.42044786489221e-05*G0_18 + 0.000513067179733842*G0_19 - 7.69600769600761e-05*G0_20 + 0.000102613435946765*G0_21 + 0.0038993105659772*G0_22 - 0.00102613435946769*G0_23 - 0.00143658810325476*G0_24 - 0.00143658810325476*G0_25 - 0.00143658810325476*G0_26 - 0.00020522687189354*G0_27 - 0.00102613435946768*G0_28 + 0.0038993105659772*G0_29 - 0.00143658810325476*G0_30 - 0.00205226871893537*G0_31 + 0.0077986211319544*G0_32 - 0.00205226871893537*G0_33 + 0.00164181497514829*G0_34; A[33] = -0.000185986852653516*G0_0 - 0.000185986852653518*G0_1 + 0.000288600288600287*G0_2 - 0.000215915771471325*G0_3 + 5.13067179733818e-05*G0_4 - 0.00101330767997434*G0_5 + 0.0009748276414943*G0_6 - 1.71022393244584e-05*G0_7 + 0.000269360269360265*G0_8 + 8.55111966223081e-05*G0_9 + 0.000513067179733843*G0_10 - 7.69600769600788e-05*G0_11 + 0.000102613435946766*G0_12 - 1.71022393244611e-05*G0_13 + 0.000269360269360266*G0_14 + 8.55111966223078e-05*G0_15 + 0.000513067179733842*G0_16 - 7.69600769600771e-05*G0_17 + 0.000102613435946769*G0_18 - 3.42044786489211e-05*G0_19 - 0.000179573512906844*G0_20 - 3.42044786489242e-05*G0_21 - 0.00102613435946769*G0_22 + 0.0038993105659772*G0_23 - 0.00143658810325476*G0_24 - 0.00102613435946769*G0_25 + 0.00389931056597721*G0_26 - 0.00143658810325476*G0_27 - 0.00143658810325476*G0_28 - 0.00143658810325476*G0_29 - 0.000205226871893542*G0_30 - 0.00205226871893537*G0_31 - 0.00205226871893537*G0_32 + 0.0077986211319544*G0_33 + 0.00164181497514829*G0_34; A[34] = -0.000538720538720526*G0_0 - 0.000538720538720536*G0_1 - 0.000538720538720532*G0_2 - 0.000538720538720535*G0_3 + 0.00109454331676553*G0_4 - 0.00102613435946768*G0_5 + 0.00109454331676553*G0_6 + 0.00109454331676554*G0_7 - 0.00102613435946769*G0_8 + 0.00109454331676553*G0_9 + 0.00109454331676553*G0_10 - 0.00102613435946769*G0_11 + 0.00109454331676553*G0_12 + 0.00109454331676554*G0_13 - 0.0010261343594677*G0_14 + 0.00109454331676553*G0_15 + 0.00109454331676553*G0_16 - 0.00102613435946769*G0_17 + 0.00109454331676554*G0_18 + 0.00109454331676554*G0_19 - 0.00102613435946769*G0_20 + 0.00109454331676552*G0_21 + 0.0016418149751483*G0_22 + 0.0016418149751483*G0_23 + 0.00164181497514831*G0_24 + 0.00164181497514829*G0_25 + 0.0016418149751483*G0_26 + 0.00164181497514831*G0_27 + 0.0016418149751483*G0_28 + 0.0016418149751483*G0_29 + 0.00164181497514831*G0_30 + 0.00164181497514829*G0_31 + 0.00164181497514829*G0_32 + 0.00164181497514829*G0_33 + 0.0262690396023728*G0_34; } /// Constructor poisson3d_4_form_0::poisson3d_4_form_0() : ufc::form() { // Do nothing } /// Destructor poisson3d_4_form_0::~poisson3d_4_form_0() { // Do nothing } /// Return a string identifying the form const char* poisson3d_4_form_0::signature() const { return "b6aaf322c2beed24badd64608aec21d91f826b92422d6e5195f2dfa2195a62f35a2594ed02c74c173ed9649d4d71a4a8b44eb160cc49d54ee14eb5aff15a292b"; } /// Return the rank of the global tensor (r) std::size_t poisson3d_4_form_0::rank() const { return 2; } /// Return the number of coefficients (n) std::size_t poisson3d_4_form_0::num_coefficients() const { return 0; } /// Return the number of cell domains std::size_t poisson3d_4_form_0::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson3d_4_form_0::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson3d_4_form_0::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson3d_4_form_0::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson3d_4_form_0::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson3d_4_form_0::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson3d_4_form_0::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson3d_4_form_0::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson3d_4_form_0::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson3d_4_finite_element_0(); break; } case 1: { return new poisson3d_4_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson3d_4_form_0::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson3d_4_dofmap_0(); break; } case 1: { return new poisson3d_4_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson3d_4_form_0::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson3d_4_form_0::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson3d_4_form_0::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson3d_4_form_0::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson3d_4_form_0::create_default_cell_integral() const { return new poisson3d_4_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson3d_4_form_0::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson3d_4_form_0::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson3d_4_form_0::create_default_point_integral() const { return 0; } /// Constructor poisson3d_4_form_1::poisson3d_4_form_1() : ufc::form() { // Do nothing } /// Destructor poisson3d_4_form_1::~poisson3d_4_form_1() { // Do nothing } /// Return a string identifying the form const char* poisson3d_4_form_1::signature() const { return "aa81f33d2c7242bf5ccee1f1513ae397d6ebe06b58ca3a5b950c435e320a50631604067655d0fdd71121fba5e1db77e754e575f85f66116466713700d5ee55be"; } /// Return the rank of the global tensor (r) std::size_t poisson3d_4_form_1::rank() const { return 1; } /// Return the number of coefficients (n) std::size_t poisson3d_4_form_1::num_coefficients() const { return 1; } /// Return the number of cell domains std::size_t poisson3d_4_form_1::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson3d_4_form_1::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson3d_4_form_1::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson3d_4_form_1::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson3d_4_form_1::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson3d_4_form_1::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson3d_4_form_1::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson3d_4_form_1::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson3d_4_form_1::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson3d_4_finite_element_0(); break; } case 1: { return new poisson3d_4_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson3d_4_form_1::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson3d_4_dofmap_0(); break; } case 1: { return new poisson3d_4_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson3d_4_form_1::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson3d_4_form_1::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson3d_4_form_1::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson3d_4_form_1::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson3d_4_form_1::create_default_cell_integral() const { return new poisson3d_4_cell_integral_1_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson3d_4_form_1::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson3d_4_form_1::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson3d_4_form_1::create_default_point_integral() const { return 0; } dolfin-1.3.0/bench/fem/convergence/cpp/Poisson3D_2.h0000644000175000017500000010754012263015061021772 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #ifndef __POISSON3D_2_H #define __POISSON3D_2_H #include #include #include #include /// This class defines the interface for a finite element. class poisson3d_2_finite_element_0: public ufc::finite_element { public: /// Constructor poisson3d_2_finite_element_0(); /// Destructor virtual ~poisson3d_2_finite_element_0(); /// Return a string identifying the finite element virtual const char* signature() const; /// Return the cell shape virtual ufc::shape cell_shape() const; /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const; /// Return the rank of the value space virtual std::size_t value_rank() const; /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const; /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const; /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const; /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const; /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const; /// Create a new class instance virtual ufc::finite_element* create() const; }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class poisson3d_2_dofmap_0: public ufc::dofmap { public: /// Constructor poisson3d_2_dofmap_0(); /// Destructor virtual ~poisson3d_2_dofmap_0(); /// Return a string identifying the dofmap virtual const char* signature() const; /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const; /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const; /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const; /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const; /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const; /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const; /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const; /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const; /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** coordinates, const double* vertex_coordinates) const; /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const; /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const; /// Create a new class instance virtual ufc::dofmap* create() const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson3d_2_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor poisson3d_2_cell_integral_0_otherwise(); /// Destructor virtual ~poisson3d_2_cell_integral_0_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson3d_2_cell_integral_1_otherwise: public ufc::cell_integral { public: /// Constructor poisson3d_2_cell_integral_1_otherwise(); /// Destructor virtual ~poisson3d_2_cell_integral_1_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson3d_2_form_0: public ufc::form { public: /// Constructor poisson3d_2_form_0(); /// Destructor virtual ~poisson3d_2_form_0(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson3d_2_form_1: public ufc::form { public: /// Constructor poisson3d_2_form_1(); /// Destructor virtual ~poisson3d_2_form_1(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Poisson3D_2 { class CoefficientSpace_f: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_f(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_f() { } }; class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new poisson3d_2_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new poisson3d_2_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; class Form_L_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_L_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_2_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_L_FunctionSpace_0() { } }; typedef CoefficientSpace_f Form_L_FunctionSpace_1; class Form_L: public dolfin::Form { public: // Constructor Form_L(const dolfin::FunctionSpace& V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _ufc_form = boost::shared_ptr(new poisson3d_2_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = f; _ufc_form = boost::shared_ptr(new poisson3d_2_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = *f; _ufc_form = boost::shared_ptr(new poisson3d_2_form_1()); } // Constructor Form_L(boost::shared_ptr V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; _ufc_form = boost::shared_ptr(new poisson3d_2_form_1()); } // Constructor Form_L(boost::shared_ptr V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = f; _ufc_form = boost::shared_ptr(new poisson3d_2_form_1()); } // Constructor Form_L(boost::shared_ptr V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = *f; _ufc_form = boost::shared_ptr(new poisson3d_2_form_1()); } // Destructor ~Form_L() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { if (name == "f") return 0; dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { switch (i) { case 0: return "f"; } dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return "unnamed"; } // Typedefs typedef Form_L_FunctionSpace_0 TestSpace; typedef Form_L_FunctionSpace_1 CoefficientSpace_f; // Coefficients dolfin::CoefficientAssigner f; }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_L LinearForm; typedef Form_L ResidualForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/convergence/cpp/Poisson3D_5.h0000644000175000017500000010754012263015053021776 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #ifndef __POISSON3D_5_H #define __POISSON3D_5_H #include #include #include #include /// This class defines the interface for a finite element. class poisson3d_5_finite_element_0: public ufc::finite_element { public: /// Constructor poisson3d_5_finite_element_0(); /// Destructor virtual ~poisson3d_5_finite_element_0(); /// Return a string identifying the finite element virtual const char* signature() const; /// Return the cell shape virtual ufc::shape cell_shape() const; /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const; /// Return the rank of the value space virtual std::size_t value_rank() const; /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const; /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const; /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const; /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const; /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const; /// Create a new class instance virtual ufc::finite_element* create() const; }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class poisson3d_5_dofmap_0: public ufc::dofmap { public: /// Constructor poisson3d_5_dofmap_0(); /// Destructor virtual ~poisson3d_5_dofmap_0(); /// Return a string identifying the dofmap virtual const char* signature() const; /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const; /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const; /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const; /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const; /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const; /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const; /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const; /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const; /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** coordinates, const double* vertex_coordinates) const; /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const; /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const; /// Create a new class instance virtual ufc::dofmap* create() const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson3d_5_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor poisson3d_5_cell_integral_0_otherwise(); /// Destructor virtual ~poisson3d_5_cell_integral_0_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson3d_5_cell_integral_1_otherwise: public ufc::cell_integral { public: /// Constructor poisson3d_5_cell_integral_1_otherwise(); /// Destructor virtual ~poisson3d_5_cell_integral_1_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson3d_5_form_0: public ufc::form { public: /// Constructor poisson3d_5_form_0(); /// Destructor virtual ~poisson3d_5_form_0(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson3d_5_form_1: public ufc::form { public: /// Constructor poisson3d_5_form_1(); /// Destructor virtual ~poisson3d_5_form_1(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Poisson3D_5 { class CoefficientSpace_f: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_f(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_f() { } }; class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new poisson3d_5_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new poisson3d_5_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; class Form_L_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_L_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_5_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_L_FunctionSpace_0() { } }; typedef CoefficientSpace_f Form_L_FunctionSpace_1; class Form_L: public dolfin::Form { public: // Constructor Form_L(const dolfin::FunctionSpace& V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _ufc_form = boost::shared_ptr(new poisson3d_5_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = f; _ufc_form = boost::shared_ptr(new poisson3d_5_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = *f; _ufc_form = boost::shared_ptr(new poisson3d_5_form_1()); } // Constructor Form_L(boost::shared_ptr V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; _ufc_form = boost::shared_ptr(new poisson3d_5_form_1()); } // Constructor Form_L(boost::shared_ptr V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = f; _ufc_form = boost::shared_ptr(new poisson3d_5_form_1()); } // Constructor Form_L(boost::shared_ptr V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = *f; _ufc_form = boost::shared_ptr(new poisson3d_5_form_1()); } // Destructor ~Form_L() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { if (name == "f") return 0; dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { switch (i) { case 0: return "f"; } dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return "unnamed"; } // Typedefs typedef Form_L_FunctionSpace_0 TestSpace; typedef Form_L_FunctionSpace_1 CoefficientSpace_f; // Coefficients dolfin::CoefficientAssigner f; }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_L LinearForm; typedef Form_L ResidualForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/convergence/cpp/Poisson2D_4.h0000644000175000017500000010754012263015061021773 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #ifndef __POISSON2D_4_H #define __POISSON2D_4_H #include #include #include #include /// This class defines the interface for a finite element. class poisson2d_4_finite_element_0: public ufc::finite_element { public: /// Constructor poisson2d_4_finite_element_0(); /// Destructor virtual ~poisson2d_4_finite_element_0(); /// Return a string identifying the finite element virtual const char* signature() const; /// Return the cell shape virtual ufc::shape cell_shape() const; /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const; /// Return the rank of the value space virtual std::size_t value_rank() const; /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const; /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const; /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const; /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const; /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const; /// Create a new class instance virtual ufc::finite_element* create() const; }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class poisson2d_4_dofmap_0: public ufc::dofmap { public: /// Constructor poisson2d_4_dofmap_0(); /// Destructor virtual ~poisson2d_4_dofmap_0(); /// Return a string identifying the dofmap virtual const char* signature() const; /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const; /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const; /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const; /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const; /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const; /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const; /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const; /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const; /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** coordinates, const double* vertex_coordinates) const; /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const; /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const; /// Create a new class instance virtual ufc::dofmap* create() const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson2d_4_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor poisson2d_4_cell_integral_0_otherwise(); /// Destructor virtual ~poisson2d_4_cell_integral_0_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson2d_4_cell_integral_1_otherwise: public ufc::cell_integral { public: /// Constructor poisson2d_4_cell_integral_1_otherwise(); /// Destructor virtual ~poisson2d_4_cell_integral_1_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson2d_4_form_0: public ufc::form { public: /// Constructor poisson2d_4_form_0(); /// Destructor virtual ~poisson2d_4_form_0(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson2d_4_form_1: public ufc::form { public: /// Constructor poisson2d_4_form_1(); /// Destructor virtual ~poisson2d_4_form_1(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Poisson2D_4 { class CoefficientSpace_f: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_f(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_f() { } }; class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new poisson2d_4_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new poisson2d_4_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; class Form_L_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_L_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_4_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_4_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_L_FunctionSpace_0() { } }; typedef CoefficientSpace_f Form_L_FunctionSpace_1; class Form_L: public dolfin::Form { public: // Constructor Form_L(const dolfin::FunctionSpace& V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _ufc_form = boost::shared_ptr(new poisson2d_4_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = f; _ufc_form = boost::shared_ptr(new poisson2d_4_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = *f; _ufc_form = boost::shared_ptr(new poisson2d_4_form_1()); } // Constructor Form_L(boost::shared_ptr V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; _ufc_form = boost::shared_ptr(new poisson2d_4_form_1()); } // Constructor Form_L(boost::shared_ptr V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = f; _ufc_form = boost::shared_ptr(new poisson2d_4_form_1()); } // Constructor Form_L(boost::shared_ptr V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = *f; _ufc_form = boost::shared_ptr(new poisson2d_4_form_1()); } // Destructor ~Form_L() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { if (name == "f") return 0; dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { switch (i) { case 0: return "f"; } dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return "unnamed"; } // Typedefs typedef Form_L_FunctionSpace_0 TestSpace; typedef Form_L_FunctionSpace_1 CoefficientSpace_f; // Coefficients dolfin::CoefficientAssigner f; }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_L LinearForm; typedef Form_L ResidualForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/convergence/cpp/README0000644000175000017500000000241012263014601020424 0ustar johannrjohannrThis test program solves Poisson's equation - div grad u = f on the unit square and on the unit cube with homogeneous Dirichlet boundary conditions. In 2D, the right-hand side f is given by f(x, y) = 2 pi^2 sin(x) sin(y) and the exact solution is u(x, y) = sin(x) sin(y). In 3D, the right-hand side f is given by f(x, y) = 3 pi^2 sin(x) sin(y) sin(z) and the exact solution is u(x, y) = sin(x) sin(y) sin(z). The solution is computed with Lagrange finite elements of degree 1-5 and the error is computed in the maximum norm (maximum taken only over the values at vertices). Here are the results (2005-06-30, DOLFIN version 0.5.7+): Maximum norm error in 2D: ------------------------- | h = 1/2 h = 1/4 h = 1/8 ------------------------------------ q = 1 | 3.831e-01 1.375e-01 3.748e-02 q = 2 | 1.067e-02 1.782e-03 1.480e-04 q = 3 | 3.675e-03 5.417e-04 4.243e-05 q = 4 | 1.027e-03 2.644e-05 4.862e-07 q = 5 | 1.639e-05 1.803e-06 3.985e-08 Maximum norm error in 3D: ------------------------- | h = 1/2 h = 1/4 h = 1/8 ------------------------------------ q = 1 | 5.065e-01 2.129e-01 6.127e-02 q = 2 | 3.890e-02 6.874e-03 5.589e-04 q = 3 | 1.088e-03 1.722e-03 1.535e-04 q = 4 | 6.868e-03 2.154e-04 3.983e-06 q = 5 | 3.821e-04 1.450e-05 3.598e-07 dolfin-1.3.0/bench/fem/convergence/cpp/Poisson3D_3.cpp0000644000175000017500000220607412263015054022334 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #include "Poisson3D_3.h" /// Constructor poisson3d_3_finite_element_0::poisson3d_3_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor poisson3d_3_finite_element_0::~poisson3d_3_finite_element_0() { // Do nothing } /// Return a string identifying the finite element const char* poisson3d_3_finite_element_0::signature() const { return "FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 3, None)"; } /// Return the cell shape ufc::shape poisson3d_3_finite_element_0::cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape std::size_t poisson3d_3_finite_element_0::topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape std::size_t poisson3d_3_finite_element_0::geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space std::size_t poisson3d_3_finite_element_0::space_dimension() const { return 20; } /// Return the rank of the value space std::size_t poisson3d_3_finite_element_0::value_rank() const { return 0; } /// Return the dimension of the value space for axis i std::size_t poisson3d_3_finite_element_0::value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell void poisson3d_3_finite_element_0::evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0288675134594813, 0.0130410132739325, 0.00752923252421043, 0.0053239713749995, 0.018298126367785, 0.014173667737846, 0.0115727512471569, 0.00818317088384972, 0.00668153104781059, 0.00472455591261533, -0.028347335475692, -0.0239578711874978, -0.0207481250689683, -0.0185576872239523, -0.0160714285714286, -0.0131222664791956, -0.0107142857142857, -0.00927884361197611, -0.00757614408414157, -0.00535714285714285}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0288675134594812, -0.0130410132739325, 0.0075292325242104, 0.00532397137499951, 0.018298126367785, -0.014173667737846, -0.0115727512471569, 0.00818317088384971, 0.00668153104781063, 0.00472455591261534, 0.028347335475692, -0.0239578711874977, -0.0207481250689683, 0.0185576872239523, 0.0160714285714286, 0.0131222664791956, -0.0107142857142857, -0.00927884361197613, -0.00757614408414159, -0.00535714285714286}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0288675134594812, 0.0, -0.0150584650484209, 0.00532397137499951, 0.0, 0.0, 0.0, 0.0245495126515492, -0.0133630620956212, 0.00472455591261537, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0428571428571429, -0.0278365308359284, 0.0151522881682832, -0.00535714285714287}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0288675134594813, 0.0, 0.0, -0.0159719141249985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.028347335475692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0535714285714286}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, 0.0, 0.112938487863156, -0.063887656499994, 0.0, 0.0, 0.0, 0.0736485379546474, 0.0267261241912424, -0.0236227795630767, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0649519052838329, -0.0606091526731326, 0.0267857142857143}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, 0.0, -0.0225876975726313, 0.127775312999988, 0.0, 0.0, 0.0, 0.0, 0.0668153104781061, 0.0472455591261534, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0757614408414158, -0.0535714285714286}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, 0.0978075995544939, -0.0564692439315782, -0.063887656499994, 0.054894379103355, -0.0425210032135381, 0.0231455024943138, 0.0245495126515491, -0.0133630620956212, -0.0236227795630767, 0.0, 0.0, 0.0484122918275927, 0.0, -0.0375, -0.0524890659167824, 0.0, 0.0216506350946109, 0.0303045763365663, 0.0267857142857143}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, -0.0195615199108989, 0.0112938487863156, 0.127775312999988, 0.0, 0.0, 0.0578637562357844, 0.0, -0.0334076552390531, 0.0472455591261534, 0.0, 0.0, 0.0, 0.0, 0.0, 0.065611332395978, 0.0, 0.0, -0.0378807204207079, -0.0535714285714286}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, 0.097807599554494, -0.0790569415042095, -0.031943828249997, 0.054894379103355, 0.014173667737846, -0.0462910049886276, -0.0245495126515492, 0.0133630620956212, 0.0236227795630767, 0.0, 0.0479157423749955, -0.0069160416896561, -0.0618589574131742, -0.0160714285714286, 0.00874817765279706, 0.0428571428571429, 0.0154647393532935, 0.0, -0.00535714285714286}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, -0.0195615199108988, 0.124232336649472, -0.031943828249997, 0.0, 0.0566946709513841, -0.0115727512471569, 0.0245495126515492, -0.0467707173346743, 0.0236227795630767, 0.0, 0.0, 0.0, 0.0618589574131742, -0.0214285714285714, 0.00437408882639853, -0.0642857142857143, 0.00927884361197613, 0.00757614408414158, -0.00535714285714285}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, -0.0978075995544939, -0.0564692439315782, -0.063887656499994, 0.054894379103355, 0.0425210032135381, -0.0231455024943137, 0.0245495126515491, -0.0133630620956212, -0.0236227795630767, 0.0, 0.0, 0.0484122918275927, 0.0, 0.0375, 0.0524890659167824, 0.0, 0.021650635094611, 0.0303045763365663, 0.0267857142857143}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, 0.0195615199108988, 0.0112938487863156, 0.127775312999988, 0.0, 0.0, -0.0578637562357845, 0.0, -0.033407655239053, 0.0472455591261534, 0.0, 0.0, 0.0, 0.0, 0.0, -0.065611332395978, 0.0, 0.0, -0.0378807204207079, -0.0535714285714286}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 12: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, -0.097807599554494, -0.0790569415042095, -0.031943828249997, 0.054894379103355, -0.014173667737846, 0.0462910049886276, -0.0245495126515492, 0.0133630620956212, 0.0236227795630767, 0.0, 0.0479157423749955, -0.0069160416896561, 0.0618589574131742, 0.0160714285714286, -0.00874817765279707, 0.0428571428571429, 0.0154647393532935, 0.0, -0.00535714285714287}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 13: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, 0.0195615199108988, 0.124232336649472, -0.031943828249997, 0.0, -0.0566946709513841, 0.0115727512471569, 0.0245495126515492, -0.0467707173346743, 0.0236227795630767, 0.0, 0.0, 0.0, -0.0618589574131742, 0.0214285714285714, -0.00437408882639852, -0.0642857142857143, 0.00927884361197614, 0.00757614408414158, -0.00535714285714285}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 14: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, -0.117369119465393, -0.0451753951452625, -0.031943828249997, -0.018298126367785, 0.0425210032135381, 0.0347182537414707, 0.0409158544192486, 0.0334076552390531, 0.0236227795630767, 0.0850420064270761, 0.0239578711874977, 0.0207481250689683, -0.00618589574131741, -0.00535714285714285, -0.00437408882639853, -0.0107142857142857, -0.00927884361197613, -0.00757614408414159, -0.00535714285714286}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 15: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, 0.117369119465393, -0.0451753951452626, -0.031943828249997, -0.018298126367785, -0.0425210032135381, -0.0347182537414707, 0.0409158544192486, 0.0334076552390531, 0.0236227795630767, -0.0850420064270761, 0.0239578711874978, 0.0207481250689683, 0.00618589574131741, 0.00535714285714285, 0.00437408882639852, -0.0107142857142857, -0.00927884361197613, -0.00757614408414159, -0.00535714285714286}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 16: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.259807621135332, 0.117369119465393, 0.0677630927178939, 0.0479157423749954, 0.0, 0.0850420064270762, 0.0694365074829413, -0.0736485379546474, 0.0400891862868636, -0.0992156741649221, 0.0, 0.0, 0.0, 0.0, 0.075, -0.0262445329583912, 0.0, -0.0649519052838329, -0.0151522881682832, 0.0267857142857143}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 17: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.259807621135331, -0.117369119465393, 0.0677630927178938, 0.0479157423749954, 0.0, -0.0850420064270761, -0.0694365074829413, -0.0736485379546474, 0.0400891862868637, -0.0992156741649221, 0.0, 0.0, 0.0, 0.0, -0.075, 0.0262445329583912, 0.0, -0.0649519052838329, -0.0151522881682832, 0.0267857142857143}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 18: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.259807621135332, 0.0, -0.135526185435788, 0.0479157423749955, -0.10978875820671, 0.0, 0.0, 0.0245495126515491, -0.0801783725737273, -0.0992156741649222, 0.0, 0.0, -0.0968245836551854, 0.0, 0.0, 0.0, 0.0, 0.021650635094611, 0.0303045763365663, 0.0267857142857143}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 19: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.259807621135332, 0.0, 0.0, -0.143747227124986, -0.10978875820671, 0.0, 0.0, -0.122747563257746, 0.0, 0.0425210032135381, 0.0, -0.095831484749991, 0.0138320833793122, 0.0, 0.0, 0.0, 0.0428571428571429, 0.0154647393532936, 0.0, -0.00535714285714284}; // Compute value(s) for (unsigned int r = 0; r < 20; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell void poisson3d_3_finite_element_0::evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 20; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell void poisson3d_3_finite_element_0::evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 3) { return ; } // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[27][3]; for (unsigned int row = 0; row < 27; row++) { for (unsigned int col = 0; col < 3; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 2) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[3][3] = {{K[0], K[1], K[2]}, {K[3], K[4], K[5]}, {K[6], K[7], K[8]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[27][27]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0288675134594813, 0.0130410132739325, 0.00752923252421043, 0.0053239713749995, 0.018298126367785, 0.014173667737846, 0.0115727512471569, 0.00818317088384972, 0.00668153104781059, 0.00472455591261533, -0.028347335475692, -0.0239578711874978, -0.0207481250689683, -0.0185576872239523, -0.0160714285714286, -0.0131222664791956, -0.0107142857142857, -0.00927884361197611, -0.00757614408414157, -0.00535714285714285}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0288675134594812, -0.0130410132739325, 0.0075292325242104, 0.00532397137499951, 0.018298126367785, -0.014173667737846, -0.0115727512471569, 0.00818317088384971, 0.00668153104781063, 0.00472455591261534, 0.028347335475692, -0.0239578711874977, -0.0207481250689683, 0.0185576872239523, 0.0160714285714286, 0.0131222664791956, -0.0107142857142857, -0.00927884361197613, -0.00757614408414159, -0.00535714285714286}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0288675134594812, 0.0, -0.0150584650484209, 0.00532397137499951, 0.0, 0.0, 0.0, 0.0245495126515492, -0.0133630620956212, 0.00472455591261537, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0428571428571429, -0.0278365308359284, 0.0151522881682832, -0.00535714285714287}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0288675134594813, 0.0, 0.0, -0.0159719141249985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.028347335475692, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0535714285714286}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, 0.0, 0.112938487863156, -0.063887656499994, 0.0, 0.0, 0.0, 0.0736485379546474, 0.0267261241912424, -0.0236227795630767, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0649519052838329, -0.0606091526731326, 0.0267857142857143}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, 0.0, -0.0225876975726313, 0.127775312999988, 0.0, 0.0, 0.0, 0.0, 0.0668153104781061, 0.0472455591261534, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0757614408414158, -0.0535714285714286}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, 0.0978075995544939, -0.0564692439315782, -0.063887656499994, 0.054894379103355, -0.0425210032135381, 0.0231455024943138, 0.0245495126515491, -0.0133630620956212, -0.0236227795630767, 0.0, 0.0, 0.0484122918275927, 0.0, -0.0375, -0.0524890659167824, 0.0, 0.0216506350946109, 0.0303045763365663, 0.0267857142857143}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, -0.0195615199108989, 0.0112938487863156, 0.127775312999988, 0.0, 0.0, 0.0578637562357844, 0.0, -0.0334076552390531, 0.0472455591261534, 0.0, 0.0, 0.0, 0.0, 0.0, 0.065611332395978, 0.0, 0.0, -0.0378807204207079, -0.0535714285714286}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, 0.097807599554494, -0.0790569415042095, -0.031943828249997, 0.054894379103355, 0.014173667737846, -0.0462910049886276, -0.0245495126515492, 0.0133630620956212, 0.0236227795630767, 0.0, 0.0479157423749955, -0.0069160416896561, -0.0618589574131742, -0.0160714285714286, 0.00874817765279706, 0.0428571428571429, 0.0154647393532935, 0.0, -0.00535714285714286}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, -0.0195615199108988, 0.124232336649472, -0.031943828249997, 0.0, 0.0566946709513841, -0.0115727512471569, 0.0245495126515492, -0.0467707173346743, 0.0236227795630767, 0.0, 0.0, 0.0, 0.0618589574131742, -0.0214285714285714, 0.00437408882639853, -0.0642857142857143, 0.00927884361197613, 0.00757614408414158, -0.00535714285714285}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, -0.0978075995544939, -0.0564692439315782, -0.063887656499994, 0.054894379103355, 0.0425210032135381, -0.0231455024943137, 0.0245495126515491, -0.0133630620956212, -0.0236227795630767, 0.0, 0.0, 0.0484122918275927, 0.0, 0.0375, 0.0524890659167824, 0.0, 0.021650635094611, 0.0303045763365663, 0.0267857142857143}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, 0.0195615199108988, 0.0112938487863156, 0.127775312999988, 0.0, 0.0, -0.0578637562357845, 0.0, -0.033407655239053, 0.0472455591261534, 0.0, 0.0, 0.0, 0.0, 0.0, -0.065611332395978, 0.0, 0.0, -0.0378807204207079, -0.0535714285714286}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 12: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, -0.097807599554494, -0.0790569415042095, -0.031943828249997, 0.054894379103355, -0.014173667737846, 0.0462910049886276, -0.0245495126515492, 0.0133630620956212, 0.0236227795630767, 0.0, 0.0479157423749955, -0.0069160416896561, 0.0618589574131742, 0.0160714285714286, -0.00874817765279707, 0.0428571428571429, 0.0154647393532935, 0.0, -0.00535714285714287}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 13: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, 0.0195615199108988, 0.124232336649472, -0.031943828249997, 0.0, -0.0566946709513841, 0.0115727512471569, 0.0245495126515492, -0.0467707173346743, 0.0236227795630767, 0.0, 0.0, 0.0, -0.0618589574131742, 0.0214285714285714, -0.00437408882639852, -0.0642857142857143, 0.00927884361197614, 0.00757614408414158, -0.00535714285714285}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 14: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, -0.117369119465393, -0.0451753951452625, -0.031943828249997, -0.018298126367785, 0.0425210032135381, 0.0347182537414707, 0.0409158544192486, 0.0334076552390531, 0.0236227795630767, 0.0850420064270761, 0.0239578711874977, 0.0207481250689683, -0.00618589574131741, -0.00535714285714285, -0.00437408882639853, -0.0107142857142857, -0.00927884361197613, -0.00757614408414159, -0.00535714285714286}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 15: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.0, 0.117369119465393, -0.0451753951452626, -0.031943828249997, -0.018298126367785, -0.0425210032135381, -0.0347182537414707, 0.0409158544192486, 0.0334076552390531, 0.0236227795630767, -0.0850420064270761, 0.0239578711874978, 0.0207481250689683, 0.00618589574131741, 0.00535714285714285, 0.00437408882639852, -0.0107142857142857, -0.00927884361197613, -0.00757614408414159, -0.00535714285714286}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 16: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.259807621135332, 0.117369119465393, 0.0677630927178939, 0.0479157423749954, 0.0, 0.0850420064270762, 0.0694365074829413, -0.0736485379546474, 0.0400891862868636, -0.0992156741649221, 0.0, 0.0, 0.0, 0.0, 0.075, -0.0262445329583912, 0.0, -0.0649519052838329, -0.0151522881682832, 0.0267857142857143}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 17: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.259807621135331, -0.117369119465393, 0.0677630927178938, 0.0479157423749954, 0.0, -0.0850420064270761, -0.0694365074829413, -0.0736485379546474, 0.0400891862868637, -0.0992156741649221, 0.0, 0.0, 0.0, 0.0, -0.075, 0.0262445329583912, 0.0, -0.0649519052838329, -0.0151522881682832, 0.0267857142857143}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 18: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.259807621135332, 0.0, -0.135526185435788, 0.0479157423749955, -0.10978875820671, 0.0, 0.0, 0.0245495126515491, -0.0801783725737273, -0.0992156741649222, 0.0, 0.0, -0.0968245836551854, 0.0, 0.0, 0.0, 0.0, 0.021650635094611, 0.0303045763365663, 0.0267857142857143}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 19: { // Array of basisvalues double basisvalues[20] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[10] *= std::sqrt(63.0); // Table(s) of coefficients static const double coefficients0[20] = \ {0.259807621135332, 0.0, 0.0, -0.143747227124986, -0.10978875820671, 0.0, 0.0, -0.122747563257746, 0.0, 0.0425210032135381, 0.0, -0.095831484749991, 0.0138320833793122, 0.0, 0.0, 0.0, 0.0428571428571429, 0.0154647393532936, 0.0, -0.00535714285714284}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771367, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, 0.0, -3.34664010613631, -2.36643191323985, 15.4919333848297, 0.0, 0.0, 0.69282032302755, 0.565685424949236, 0.399999999999998, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.89897948556635, 0.0, 0.0, 0.0, 14.1985914794391, -0.828078671210824, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.24264068711928, 0.0, 0.0, 0.0, 0.0, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.60000000000001, 0.0, 8.76356092008266, -1.54919333848297, 0.0, 0.0, 0.0, 9.52470471983252, -1.48131215963608, 0.261861468283192, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.11769145362398, 0.0, 3.16227766016838, 4.91934955049954, 0.0, 0.0, 0.0, 0.0, 10.690449676497, -2.41897262725906, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, 0.0, 7.66811580507233, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.59160797830996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063972, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 9.16515138991168, 7.09929573971954, -0.414039335605413, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355964, -0.408248290463863, 3.17542648054295, 0.0, 0.0, 7.17137165600637, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, -5.69209978830309, 4.38178046004133, -0.774596669241485, 0.0, 10.998181667894, 0.962140470884733, 4.76235235991626, -0.740656079818043, 0.130930734141595, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 2.73861278752583, 1.58113883008419, 2.45967477524977, 0.0, 0.0, 9.25820099772552, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, 0.0, 0.0, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270664, 0.0, -3.16227766016839, -2.2360679774998, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824849, 0.377964473009227, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.8, 0.0, 3.65148371670111, -2.84018778721878, 0.0, 0.0, 0.0, 0.0, 12.3442679969674, 1.39659449751035, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.20454076850486, 0.0, 0.0, 6.6407830863536, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825746, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[20][20] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.9580398915498, 5.61248608016091, -1.08012344973464, -0.763762615825974, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461895, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531985, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912986, 0.0, 0.0, 8.87411967464943, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697351, 5.79655069847577, -1.67332005306815, -1.18321595661993, 7.74596669241484, -1.2, -0.979795897113272, 0.346410161513776, 0.28284271247462, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772445, 2.44948974278318, 2.82842712474619, -1.0, 1.30930734141596, 7.09929573971954, -0.414039335605412, -2.04939015319192, -0.478091443733757, 0.169030850945702, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974981, 2.12132034355965, -0.408248290463863, 3.17542648054294, 9.07114735222146, 0.0, 7.17137165600636, 0.0, -1.38013111868471, -1.56144011671765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033675, 4.38178046004133, -0.774596669241484, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991626, -0.74065607981804, 0.130930734141596, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681199, 0.547722557505166, 1.58113883008419, 2.45967477524977, 0.0, 9.07114735222145, 1.8516401995451, 0.0, 5.34522483824849, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613579, -6.26099033699941, 0.0, 3.83405790253617, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872629, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.03923048454133, 0.0, 3.16227766016838, -0.447213595499959, 0.0, 0.0, 0.0, 5.89188303637179, -0.534522483824848, 0.0755928946018459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.900000000000008, 0.0, 1.46059348668044, 1.42009389360939, 0.0, 0.0, 0.0, 9.07114735222145, 4.93770719878694, -0.698297248755175, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.734846922834955, 0.0, -6.26099033699941, 2.21359436211787, 0.0, 0.0, 0.0, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7157676649773, 0.0, 0.0, -4.69574275274956, 0.0, 0.0, 0.0, 0.0, 0.0, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[27]; for (unsigned int r = 0; r < 27; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[20][20] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 20; t++) { for (unsigned int u = 0; u < 20; u++) { for (unsigned int tu = 0; tu < 20; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 20; s++) { for (unsigned int t = 0; t < 20; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell void poisson3d_3_finite_element_0::evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 20; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 3) { return ; } // Helper variable to hold values of a single dof. double dof_values[27]; for (unsigned int r = 0; r < 27; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 20; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f double poisson3d_3_finite_element_0::evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = 0.666666666666667*vertex_coordinates[6] + 0.333333333333333*vertex_coordinates[9]; y[1] = 0.666666666666667*vertex_coordinates[7] + 0.333333333333333*vertex_coordinates[10]; y[2] = 0.666666666666667*vertex_coordinates[8] + 0.333333333333333*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 5: { y[0] = 0.333333333333333*vertex_coordinates[6] + 0.666666666666667*vertex_coordinates[9]; y[1] = 0.333333333333333*vertex_coordinates[7] + 0.666666666666667*vertex_coordinates[10]; y[2] = 0.333333333333333*vertex_coordinates[8] + 0.666666666666667*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 6: { y[0] = 0.666666666666667*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[9]; y[1] = 0.666666666666667*vertex_coordinates[4] + 0.333333333333333*vertex_coordinates[10]; y[2] = 0.666666666666667*vertex_coordinates[5] + 0.333333333333333*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 7: { y[0] = 0.333333333333333*vertex_coordinates[3] + 0.666666666666667*vertex_coordinates[9]; y[1] = 0.333333333333333*vertex_coordinates[4] + 0.666666666666667*vertex_coordinates[10]; y[2] = 0.333333333333333*vertex_coordinates[5] + 0.666666666666667*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 8: { y[0] = 0.666666666666667*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[6]; y[1] = 0.666666666666667*vertex_coordinates[4] + 0.333333333333333*vertex_coordinates[7]; y[2] = 0.666666666666667*vertex_coordinates[5] + 0.333333333333333*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 9: { y[0] = 0.333333333333333*vertex_coordinates[3] + 0.666666666666667*vertex_coordinates[6]; y[1] = 0.333333333333333*vertex_coordinates[4] + 0.666666666666667*vertex_coordinates[7]; y[2] = 0.333333333333333*vertex_coordinates[5] + 0.666666666666667*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 10: { y[0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[9]; y[1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[10]; y[2] = 0.666666666666667*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 11: { y[0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[9]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[10]; y[2] = 0.333333333333333*vertex_coordinates[2] + 0.666666666666667*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 12: { y[0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[6]; y[1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[7]; y[2] = 0.666666666666667*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 13: { y[0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[6]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[7]; y[2] = 0.333333333333333*vertex_coordinates[2] + 0.666666666666667*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 14: { y[0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[3]; y[1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[4]; y[2] = 0.666666666666667*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 15: { y[0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[3]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[4]; y[2] = 0.333333333333333*vertex_coordinates[2] + 0.666666666666667*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 16: { y[0] = 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[6] + 0.333333333333333*vertex_coordinates[9]; y[1] = 0.333333333333333*vertex_coordinates[4] + 0.333333333333333*vertex_coordinates[7] + 0.333333333333333*vertex_coordinates[10]; y[2] = 0.333333333333333*vertex_coordinates[5] + 0.333333333333333*vertex_coordinates[8] + 0.333333333333333*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 17: { y[0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[6] + 0.333333333333333*vertex_coordinates[9]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[7] + 0.333333333333333*vertex_coordinates[10]; y[2] = 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[8] + 0.333333333333333*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 18: { y[0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[9]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[4] + 0.333333333333333*vertex_coordinates[10]; y[2] = 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[5] + 0.333333333333333*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 19: { y[0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[6]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[4] + 0.333333333333333*vertex_coordinates[7]; y[2] = 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[5] + 0.333333333333333*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f void poisson3d_3_finite_element_0::evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = 0.666666666666667*vertex_coordinates[6] + 0.333333333333333*vertex_coordinates[9]; y[1] = 0.666666666666667*vertex_coordinates[7] + 0.333333333333333*vertex_coordinates[10]; y[2] = 0.666666666666667*vertex_coordinates[8] + 0.333333333333333*vertex_coordinates[11]; f.evaluate(vals, y, c); values[4] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[6] + 0.666666666666667*vertex_coordinates[9]; y[1] = 0.333333333333333*vertex_coordinates[7] + 0.666666666666667*vertex_coordinates[10]; y[2] = 0.333333333333333*vertex_coordinates[8] + 0.666666666666667*vertex_coordinates[11]; f.evaluate(vals, y, c); values[5] = vals[0]; y[0] = 0.666666666666667*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[9]; y[1] = 0.666666666666667*vertex_coordinates[4] + 0.333333333333333*vertex_coordinates[10]; y[2] = 0.666666666666667*vertex_coordinates[5] + 0.333333333333333*vertex_coordinates[11]; f.evaluate(vals, y, c); values[6] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[3] + 0.666666666666667*vertex_coordinates[9]; y[1] = 0.333333333333333*vertex_coordinates[4] + 0.666666666666667*vertex_coordinates[10]; y[2] = 0.333333333333333*vertex_coordinates[5] + 0.666666666666667*vertex_coordinates[11]; f.evaluate(vals, y, c); values[7] = vals[0]; y[0] = 0.666666666666667*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[6]; y[1] = 0.666666666666667*vertex_coordinates[4] + 0.333333333333333*vertex_coordinates[7]; y[2] = 0.666666666666667*vertex_coordinates[5] + 0.333333333333333*vertex_coordinates[8]; f.evaluate(vals, y, c); values[8] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[3] + 0.666666666666667*vertex_coordinates[6]; y[1] = 0.333333333333333*vertex_coordinates[4] + 0.666666666666667*vertex_coordinates[7]; y[2] = 0.333333333333333*vertex_coordinates[5] + 0.666666666666667*vertex_coordinates[8]; f.evaluate(vals, y, c); values[9] = vals[0]; y[0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[9]; y[1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[10]; y[2] = 0.666666666666667*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[11]; f.evaluate(vals, y, c); values[10] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[9]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[10]; y[2] = 0.333333333333333*vertex_coordinates[2] + 0.666666666666667*vertex_coordinates[11]; f.evaluate(vals, y, c); values[11] = vals[0]; y[0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[6]; y[1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[7]; y[2] = 0.666666666666667*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[8]; f.evaluate(vals, y, c); values[12] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[6]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[7]; y[2] = 0.333333333333333*vertex_coordinates[2] + 0.666666666666667*vertex_coordinates[8]; f.evaluate(vals, y, c); values[13] = vals[0]; y[0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[3]; y[1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[4]; y[2] = 0.666666666666667*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); values[14] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[3]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[4]; y[2] = 0.333333333333333*vertex_coordinates[2] + 0.666666666666667*vertex_coordinates[5]; f.evaluate(vals, y, c); values[15] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[6] + 0.333333333333333*vertex_coordinates[9]; y[1] = 0.333333333333333*vertex_coordinates[4] + 0.333333333333333*vertex_coordinates[7] + 0.333333333333333*vertex_coordinates[10]; y[2] = 0.333333333333333*vertex_coordinates[5] + 0.333333333333333*vertex_coordinates[8] + 0.333333333333333*vertex_coordinates[11]; f.evaluate(vals, y, c); values[16] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[6] + 0.333333333333333*vertex_coordinates[9]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[7] + 0.333333333333333*vertex_coordinates[10]; y[2] = 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[8] + 0.333333333333333*vertex_coordinates[11]; f.evaluate(vals, y, c); values[17] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[9]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[4] + 0.333333333333333*vertex_coordinates[10]; y[2] = 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[5] + 0.333333333333333*vertex_coordinates[11]; f.evaluate(vals, y, c); values[18] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[6]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[4] + 0.333333333333333*vertex_coordinates[7]; y[2] = 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[5] + 0.333333333333333*vertex_coordinates[8]; f.evaluate(vals, y, c); values[19] = vals[0]; } /// Interpolate vertex values from dof values void poisson3d_3_finite_element_0::interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; vertex_values[3] = dof_values[3]; } /// Map coordinate xhat from reference cell to coordinate x in cell void poisson3d_3_finite_element_0::map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell void poisson3d_3_finite_element_0::map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) std::size_t poisson3d_3_finite_element_0::num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) ufc::finite_element* poisson3d_3_finite_element_0::create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance ufc::finite_element* poisson3d_3_finite_element_0::create() const { return new poisson3d_3_finite_element_0(); } /// Constructor poisson3d_3_dofmap_0::poisson3d_3_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor poisson3d_3_dofmap_0::~poisson3d_3_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap const char* poisson3d_3_dofmap_0::signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 3, None)"; } /// Return true iff mesh entities of topological dimension d are needed bool poisson3d_3_dofmap_0::needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return true; break; } case 2: { return true; break; } case 3: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape std::size_t poisson3d_3_dofmap_0::topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape std::size_t poisson3d_3_dofmap_0::geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space std::size_t poisson3d_3_dofmap_0::global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0] + 2*num_global_entities[1] + num_global_entities[2]; } /// Return the dimension of the local finite element function space for a cell std::size_t poisson3d_3_dofmap_0::local_dimension() const { return 20; } /// Return the number of dofs on each cell facet std::size_t poisson3d_3_dofmap_0::num_facet_dofs() const { return 10; } /// Return the number of dofs associated with each cell entity of dimension d std::size_t poisson3d_3_dofmap_0::num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 2; break; } case 2: { return 1; break; } case 3: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell void poisson3d_3_dofmap_0::tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; dofs[3] = offset + c.entity_indices[0][3]; offset += num_global_entities[0]; dofs[4] = offset + 2*c.entity_indices[1][0]; dofs[5] = offset + 2*c.entity_indices[1][0] + 1; dofs[6] = offset + 2*c.entity_indices[1][1]; dofs[7] = offset + 2*c.entity_indices[1][1] + 1; dofs[8] = offset + 2*c.entity_indices[1][2]; dofs[9] = offset + 2*c.entity_indices[1][2] + 1; dofs[10] = offset + 2*c.entity_indices[1][3]; dofs[11] = offset + 2*c.entity_indices[1][3] + 1; dofs[12] = offset + 2*c.entity_indices[1][4]; dofs[13] = offset + 2*c.entity_indices[1][4] + 1; dofs[14] = offset + 2*c.entity_indices[1][5]; dofs[15] = offset + 2*c.entity_indices[1][5] + 1; offset += 2*num_global_entities[1]; dofs[16] = offset + c.entity_indices[2][0]; dofs[17] = offset + c.entity_indices[2][1]; dofs[18] = offset + c.entity_indices[2][2]; dofs[19] = offset + c.entity_indices[2][3]; offset += num_global_entities[2]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs void poisson3d_3_dofmap_0::tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; dofs[3] = 4; dofs[4] = 5; dofs[5] = 6; dofs[6] = 7; dofs[7] = 8; dofs[8] = 9; dofs[9] = 16; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; dofs[3] = 4; dofs[4] = 5; dofs[5] = 10; dofs[6] = 11; dofs[7] = 12; dofs[8] = 13; dofs[9] = 17; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; dofs[3] = 6; dofs[4] = 7; dofs[5] = 10; dofs[6] = 11; dofs[7] = 14; dofs[8] = 15; dofs[9] = 18; break; } case 3: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 2; dofs[3] = 8; dofs[4] = 9; dofs[5] = 12; dofs[6] = 13; dofs[7] = 14; dofs[8] = 15; dofs[9] = 19; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) void poisson3d_3_dofmap_0::tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } case 3: { dofs[0] = 3; break; } } break; } case 1: { if (i > 5) { throw std::runtime_error("i is larger than number of entities (5)"); } switch (i) { case 0: { dofs[0] = 4; dofs[1] = 5; break; } case 1: { dofs[0] = 6; dofs[1] = 7; break; } case 2: { dofs[0] = 8; dofs[1] = 9; break; } case 3: { dofs[0] = 10; dofs[1] = 11; break; } case 4: { dofs[0] = 12; dofs[1] = 13; break; } case 5: { dofs[0] = 14; dofs[1] = 15; break; } } break; } case 2: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 16; break; } case 1: { dofs[0] = 17; break; } case 2: { dofs[0] = 18; break; } case 3: { dofs[0] = 19; break; } } break; } case 3: { break; } } } /// Tabulate the coordinates of all dofs on a cell void poisson3d_3_dofmap_0::tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[0][2] = vertex_coordinates[2]; dof_coordinates[1][0] = vertex_coordinates[3]; dof_coordinates[1][1] = vertex_coordinates[4]; dof_coordinates[1][2] = vertex_coordinates[5]; dof_coordinates[2][0] = vertex_coordinates[6]; dof_coordinates[2][1] = vertex_coordinates[7]; dof_coordinates[2][2] = vertex_coordinates[8]; dof_coordinates[3][0] = vertex_coordinates[9]; dof_coordinates[3][1] = vertex_coordinates[10]; dof_coordinates[3][2] = vertex_coordinates[11]; dof_coordinates[4][0] = 0.666666666666667*vertex_coordinates[6] + 0.333333333333333*vertex_coordinates[9]; dof_coordinates[4][1] = 0.666666666666667*vertex_coordinates[7] + 0.333333333333333*vertex_coordinates[10]; dof_coordinates[4][2] = 0.666666666666667*vertex_coordinates[8] + 0.333333333333333*vertex_coordinates[11]; dof_coordinates[5][0] = 0.333333333333333*vertex_coordinates[6] + 0.666666666666667*vertex_coordinates[9]; dof_coordinates[5][1] = 0.333333333333333*vertex_coordinates[7] + 0.666666666666667*vertex_coordinates[10]; dof_coordinates[5][2] = 0.333333333333333*vertex_coordinates[8] + 0.666666666666667*vertex_coordinates[11]; dof_coordinates[6][0] = 0.666666666666667*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[9]; dof_coordinates[6][1] = 0.666666666666667*vertex_coordinates[4] + 0.333333333333333*vertex_coordinates[10]; dof_coordinates[6][2] = 0.666666666666667*vertex_coordinates[5] + 0.333333333333333*vertex_coordinates[11]; dof_coordinates[7][0] = 0.333333333333333*vertex_coordinates[3] + 0.666666666666667*vertex_coordinates[9]; dof_coordinates[7][1] = 0.333333333333333*vertex_coordinates[4] + 0.666666666666667*vertex_coordinates[10]; dof_coordinates[7][2] = 0.333333333333333*vertex_coordinates[5] + 0.666666666666667*vertex_coordinates[11]; dof_coordinates[8][0] = 0.666666666666667*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[6]; dof_coordinates[8][1] = 0.666666666666667*vertex_coordinates[4] + 0.333333333333333*vertex_coordinates[7]; dof_coordinates[8][2] = 0.666666666666667*vertex_coordinates[5] + 0.333333333333333*vertex_coordinates[8]; dof_coordinates[9][0] = 0.333333333333333*vertex_coordinates[3] + 0.666666666666667*vertex_coordinates[6]; dof_coordinates[9][1] = 0.333333333333333*vertex_coordinates[4] + 0.666666666666667*vertex_coordinates[7]; dof_coordinates[9][2] = 0.333333333333333*vertex_coordinates[5] + 0.666666666666667*vertex_coordinates[8]; dof_coordinates[10][0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[9]; dof_coordinates[10][1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[10]; dof_coordinates[10][2] = 0.666666666666667*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[11]; dof_coordinates[11][0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[9]; dof_coordinates[11][1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[10]; dof_coordinates[11][2] = 0.333333333333333*vertex_coordinates[2] + 0.666666666666667*vertex_coordinates[11]; dof_coordinates[12][0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[6]; dof_coordinates[12][1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[7]; dof_coordinates[12][2] = 0.666666666666667*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[8]; dof_coordinates[13][0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[6]; dof_coordinates[13][1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[7]; dof_coordinates[13][2] = 0.333333333333333*vertex_coordinates[2] + 0.666666666666667*vertex_coordinates[8]; dof_coordinates[14][0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[3]; dof_coordinates[14][1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[4]; dof_coordinates[14][2] = 0.666666666666667*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[5]; dof_coordinates[15][0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[3]; dof_coordinates[15][1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[4]; dof_coordinates[15][2] = 0.333333333333333*vertex_coordinates[2] + 0.666666666666667*vertex_coordinates[5]; dof_coordinates[16][0] = 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[6] + 0.333333333333333*vertex_coordinates[9]; dof_coordinates[16][1] = 0.333333333333333*vertex_coordinates[4] + 0.333333333333333*vertex_coordinates[7] + 0.333333333333333*vertex_coordinates[10]; dof_coordinates[16][2] = 0.333333333333333*vertex_coordinates[5] + 0.333333333333333*vertex_coordinates[8] + 0.333333333333333*vertex_coordinates[11]; dof_coordinates[17][0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[6] + 0.333333333333333*vertex_coordinates[9]; dof_coordinates[17][1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[7] + 0.333333333333333*vertex_coordinates[10]; dof_coordinates[17][2] = 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[8] + 0.333333333333333*vertex_coordinates[11]; dof_coordinates[18][0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[9]; dof_coordinates[18][1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[4] + 0.333333333333333*vertex_coordinates[10]; dof_coordinates[18][2] = 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[5] + 0.333333333333333*vertex_coordinates[11]; dof_coordinates[19][0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[6]; dof_coordinates[19][1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[4] + 0.333333333333333*vertex_coordinates[7]; dof_coordinates[19][2] = 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[5] + 0.333333333333333*vertex_coordinates[8]; } /// Return the number of sub dofmaps (for a mixed element) std::size_t poisson3d_3_dofmap_0::num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) ufc::dofmap* poisson3d_3_dofmap_0::create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance ufc::dofmap* poisson3d_3_dofmap_0::create() const { return new poisson3d_3_dofmap_0(); } /// Constructor poisson3d_3_cell_integral_0_otherwise::poisson3d_3_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson3d_3_cell_integral_0_otherwise::~poisson3d_3_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson3d_3_cell_integral_0_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 27 // Number of operations (multiply-add pairs) for tensor contraction: 1768 // Total number of operations (multiply-add pairs): 1798 // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0_0 = det*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2]); const double G0_0_1 = det*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5]); const double G0_0_2 = det*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8]); const double G0_1_0 = det*(K[3]*K[0] + K[4]*K[1] + K[5]*K[2]); const double G0_1_1 = det*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5]); const double G0_1_2 = det*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8]); const double G0_2_0 = det*(K[6]*K[0] + K[7]*K[1] + K[8]*K[2]); const double G0_2_1 = det*(K[6]*K[3] + K[7]*K[4] + K[8]*K[5]); const double G0_2_2 = det*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8]); // Compute element tensor A[0] = 0.0595238095238095*G0_0_0 + 0.0595238095238095*G0_0_1 + 0.0595238095238095*G0_0_2 + 0.0595238095238095*G0_1_0 + 0.0595238095238095*G0_1_1 + 0.0595238095238095*G0_1_2 + 0.0595238095238095*G0_2_0 + 0.0595238095238095*G0_2_1 + 0.0595238095238095*G0_2_2; A[1] = -0.0113095238095238*G0_0_0 - 0.0113095238095238*G0_1_0 - 0.0113095238095238*G0_2_0; A[2] = -0.0113095238095238*G0_0_1 - 0.0113095238095238*G0_1_1 - 0.0113095238095238*G0_2_1; A[3] = -0.0113095238095238*G0_0_2 - 0.0113095238095238*G0_1_2 - 0.0113095238095238*G0_2_2; A[4] = -0.0133928571428571*G0_0_1 - 0.0133928571428572*G0_0_2 - 0.0133928571428571*G0_1_1 - 0.0133928571428571*G0_1_2 - 0.0133928571428571*G0_2_1 - 0.0133928571428572*G0_2_2; A[5] = -0.0133928571428572*G0_0_1 - 0.0133928571428572*G0_0_2 - 0.0133928571428572*G0_1_1 - 0.0133928571428572*G0_1_2 - 0.0133928571428572*G0_2_1 - 0.0133928571428572*G0_2_2; A[6] = -0.0133928571428572*G0_0_0 - 0.0133928571428571*G0_0_2 - 0.0133928571428572*G0_1_0 - 0.0133928571428571*G0_1_2 - 0.0133928571428572*G0_2_0 - 0.0133928571428571*G0_2_2; A[7] = -0.0133928571428572*G0_0_0 - 0.0133928571428572*G0_0_2 - 0.0133928571428572*G0_1_0 - 0.0133928571428573*G0_1_2 - 0.0133928571428572*G0_2_0 - 0.0133928571428572*G0_2_2; A[8] = -0.0133928571428571*G0_0_0 - 0.0133928571428571*G0_0_1 - 0.0133928571428571*G0_1_0 - 0.0133928571428571*G0_1_1 - 0.0133928571428571*G0_2_0 - 0.0133928571428571*G0_2_1; A[9] = -0.0133928571428572*G0_0_0 - 0.0133928571428572*G0_0_1 - 0.0133928571428571*G0_1_0 - 0.0133928571428571*G0_1_1 - 0.0133928571428571*G0_2_0 - 0.0133928571428572*G0_2_1; A[10] = -0.0348214285714286*G0_0_0 - 0.0348214285714286*G0_0_1 - 0.0964285714285714*G0_0_2 - 0.0348214285714285*G0_1_0 - 0.0348214285714285*G0_1_1 - 0.0964285714285714*G0_1_2 - 0.0348214285714286*G0_2_0 - 0.0348214285714286*G0_2_1 - 0.0964285714285714*G0_2_2; A[11] = 0.0133928571428572*G0_0_0 + 0.0133928571428572*G0_0_1 + 0.0482142857142857*G0_0_2 + 0.0133928571428572*G0_1_0 + 0.0133928571428572*G0_1_1 + 0.0482142857142857*G0_1_2 + 0.0133928571428572*G0_2_0 + 0.0133928571428572*G0_2_1 + 0.0482142857142857*G0_2_2; A[12] = -0.0348214285714286*G0_0_0 - 0.0964285714285715*G0_0_1 - 0.0348214285714286*G0_0_2 - 0.0348214285714285*G0_1_0 - 0.0964285714285715*G0_1_1 - 0.0348214285714285*G0_1_2 - 0.0348214285714286*G0_2_0 - 0.0964285714285714*G0_2_1 - 0.0348214285714286*G0_2_2; A[13] = 0.0133928571428572*G0_0_0 + 0.0482142857142857*G0_0_1 + 0.0133928571428572*G0_0_2 + 0.0133928571428571*G0_1_0 + 0.0482142857142858*G0_1_1 + 0.0133928571428571*G0_1_2 + 0.0133928571428571*G0_2_0 + 0.0482142857142857*G0_2_1 + 0.0133928571428571*G0_2_2; A[14] = -0.0964285714285714*G0_0_0 - 0.0348214285714285*G0_0_1 - 0.0348214285714286*G0_0_2 - 0.0964285714285714*G0_1_0 - 0.0348214285714285*G0_1_1 - 0.0348214285714285*G0_1_2 - 0.0964285714285714*G0_2_0 - 0.0348214285714286*G0_2_1 - 0.0348214285714286*G0_2_2; A[15] = 0.0482142857142857*G0_0_0 + 0.0133928571428571*G0_0_1 + 0.0133928571428571*G0_0_2 + 0.0482142857142857*G0_1_0 + 0.0133928571428571*G0_1_1 + 0.0133928571428571*G0_1_2 + 0.0482142857142857*G0_2_0 + 0.0133928571428571*G0_2_1 + 0.0133928571428571*G0_2_2; A[16] = -0.0321428571428573*G0_0_0 - 0.0321428571428573*G0_0_1 - 0.0321428571428572*G0_0_2 - 0.0321428571428572*G0_1_0 - 0.0321428571428573*G0_1_1 - 0.0321428571428572*G0_1_2 - 0.0321428571428572*G0_2_0 - 0.0321428571428573*G0_2_1 - 0.0321428571428572*G0_2_2; A[17] = 0.0321428571428573*G0_0_0 + 0.0482142857142857*G0_0_1 + 0.0482142857142857*G0_0_2 + 0.0321428571428572*G0_1_0 + 0.0482142857142856*G0_1_1 + 0.0482142857142857*G0_1_2 + 0.0321428571428572*G0_2_0 + 0.0482142857142857*G0_2_1 + 0.0482142857142857*G0_2_2; A[18] = 0.0482142857142857*G0_0_0 + 0.0321428571428573*G0_0_1 + 0.0482142857142858*G0_0_2 + 0.0482142857142857*G0_1_0 + 0.0321428571428573*G0_1_1 + 0.0482142857142858*G0_1_2 + 0.0482142857142857*G0_2_0 + 0.0321428571428573*G0_2_1 + 0.0482142857142859*G0_2_2; A[19] = 0.0482142857142856*G0_0_0 + 0.0482142857142857*G0_0_1 + 0.0321428571428572*G0_0_2 + 0.0482142857142856*G0_1_0 + 0.0482142857142856*G0_1_1 + 0.0321428571428572*G0_1_2 + 0.0482142857142857*G0_2_0 + 0.0482142857142858*G0_2_1 + 0.0321428571428572*G0_2_2; A[20] = -0.0113095238095238*G0_0_0 - 0.0113095238095238*G0_0_1 - 0.0113095238095238*G0_0_2; A[21] = 0.0595238095238095*G0_0_0; A[22] = 0.0113095238095238*G0_0_1; A[23] = 0.0113095238095238*G0_0_2; A[24] = 0.0133928571428571*G0_0_1 + 0.0133928571428571*G0_0_2; A[25] = 0.0133928571428571*G0_0_1 + 0.0133928571428572*G0_0_2; A[26] = -0.0348214285714285*G0_0_0 + 0.0616071428571429*G0_0_2; A[27] = 0.0133928571428571*G0_0_0 - 0.0348214285714286*G0_0_2; A[28] = -0.0348214285714284*G0_0_0 + 0.0616071428571429*G0_0_1; A[29] = 0.0133928571428571*G0_0_0 - 0.0348214285714286*G0_0_1; A[30] = -0.0133928571428572*G0_0_0 - 0.0133928571428572*G0_0_1; A[31] = -0.0133928571428572*G0_0_0 - 0.0133928571428572*G0_0_1; A[32] = -0.0133928571428571*G0_0_0 - 0.0133928571428572*G0_0_2; A[33] = -0.0133928571428571*G0_0_0 - 0.0133928571428571*G0_0_2; A[34] = 0.0482142857142857*G0_0_0 + 0.0348214285714286*G0_0_1 + 0.0348214285714286*G0_0_2; A[35] = -0.0964285714285714*G0_0_0 - 0.0616071428571429*G0_0_1 - 0.0616071428571429*G0_0_2; A[36] = 0.0321428571428572*G0_0_0 - 0.0160714285714284*G0_0_1 - 0.0160714285714284*G0_0_2; A[37] = -0.0321428571428572*G0_0_0; A[38] = 0.0482142857142857*G0_0_0 + 0.0160714285714284*G0_0_1; A[39] = 0.0482142857142856*G0_0_0 + 0.0160714285714284*G0_0_2; A[40] = -0.0113095238095238*G0_1_0 - 0.0113095238095238*G0_1_1 - 0.0113095238095238*G0_1_2; A[41] = 0.0113095238095238*G0_1_0; A[42] = 0.0595238095238095*G0_1_1; A[43] = 0.0113095238095238*G0_1_2; A[44] = -0.0348214285714285*G0_1_1 + 0.0616071428571429*G0_1_2; A[45] = 0.0133928571428571*G0_1_1 - 0.0348214285714286*G0_1_2; A[46] = 0.0133928571428571*G0_1_0 + 0.0133928571428571*G0_1_2; A[47] = 0.0133928571428571*G0_1_0 + 0.0133928571428571*G0_1_2; A[48] = -0.0348214285714286*G0_1_0 + 0.0133928571428571*G0_1_1; A[49] = 0.0616071428571428*G0_1_0 - 0.0348214285714285*G0_1_1; A[50] = -0.0133928571428571*G0_1_0 - 0.0133928571428571*G0_1_1; A[51] = -0.0133928571428571*G0_1_0 - 0.0133928571428571*G0_1_1; A[52] = 0.0348214285714286*G0_1_0 + 0.0482142857142858*G0_1_1 + 0.0348214285714286*G0_1_2; A[53] = -0.0616071428571428*G0_1_0 - 0.0964285714285714*G0_1_1 - 0.0616071428571428*G0_1_2; A[54] = -0.0133928571428571*G0_1_1 - 0.0133928571428571*G0_1_2; A[55] = -0.0133928571428571*G0_1_1 - 0.0133928571428571*G0_1_2; A[56] = -0.0160714285714287*G0_1_0 + 0.032142857142857*G0_1_1 - 0.0160714285714286*G0_1_2; A[57] = 0.0160714285714287*G0_1_0 + 0.0482142857142857*G0_1_1; A[58] = -0.0321428571428571*G0_1_1; A[59] = 0.0482142857142856*G0_1_1 + 0.0160714285714286*G0_1_2; A[60] = -0.0113095238095238*G0_2_0 - 0.0113095238095238*G0_2_1 - 0.0113095238095238*G0_2_2; A[61] = 0.0113095238095238*G0_2_0; A[62] = 0.0113095238095238*G0_2_1; A[63] = 0.0595238095238096*G0_2_2; A[64] = -0.0348214285714286*G0_2_1 + 0.0133928571428572*G0_2_2; A[65] = 0.0616071428571429*G0_2_1 - 0.0348214285714285*G0_2_2; A[66] = -0.0348214285714286*G0_2_0 + 0.0133928571428571*G0_2_2; A[67] = 0.0616071428571429*G0_2_0 - 0.0348214285714285*G0_2_2; A[68] = 0.0133928571428571*G0_2_0 + 0.0133928571428571*G0_2_1; A[69] = 0.0133928571428572*G0_2_0 + 0.0133928571428571*G0_2_1; A[70] = 0.0348214285714286*G0_2_0 + 0.0348214285714286*G0_2_1 + 0.0482142857142858*G0_2_2; A[71] = -0.0616071428571429*G0_2_0 - 0.0616071428571429*G0_2_1 - 0.0964285714285715*G0_2_2; A[72] = -0.0133928571428571*G0_2_0 - 0.0133928571428572*G0_2_2; A[73] = -0.0133928571428572*G0_2_0 - 0.0133928571428572*G0_2_2; A[74] = -0.0133928571428571*G0_2_1 - 0.0133928571428572*G0_2_2; A[75] = -0.0133928571428571*G0_2_1 - 0.0133928571428571*G0_2_2; A[76] = -0.0160714285714285*G0_2_0 - 0.0160714285714285*G0_2_1 + 0.0321428571428571*G0_2_2; A[77] = 0.0160714285714286*G0_2_0 + 0.0482142857142857*G0_2_2; A[78] = 0.0160714285714285*G0_2_1 + 0.0482142857142857*G0_2_2; A[79] = -0.0321428571428571*G0_2_2; A[80] = -0.0133928571428571*G0_1_0 - 0.0133928571428571*G0_1_1 - 0.0133928571428571*G0_1_2 - 0.0133928571428572*G0_2_0 - 0.0133928571428571*G0_2_1 - 0.0133928571428572*G0_2_2; A[81] = 0.0133928571428571*G0_1_0 + 0.0133928571428571*G0_2_0; A[82] = -0.0348214285714285*G0_1_1 + 0.0616071428571429*G0_2_1; A[83] = -0.0348214285714286*G0_1_2 + 0.0133928571428572*G0_2_2; A[84] = 0.241071428571428*G0_1_1 + 0.0964285714285714*G0_1_2 + 0.0964285714285714*G0_2_1 + 0.192857142857143*G0_2_2; A[85] = -0.0723214285714286*G0_1_1 + 0.0723214285714285*G0_1_2 - 0.0241071428571429*G0_2_1 - 0.0723214285714286*G0_2_2; A[86] = -0.0482142857142856*G0_1_0 - 0.0241071428571427*G0_1_2 - 0.0241071428571428*G0_2_0 - 0.0241071428571428*G0_2_2; A[87] = -0.0723214285714285*G0_1_0 - 0.0482142857142856*G0_1_2 - 0.0241071428571429*G0_2_0 - 0.0241071428571429*G0_2_2; A[88] = -0.0482142857142855*G0_1_0 - 0.0241071428571428*G0_1_1 - 0.0723214285714285*G0_2_0 - 0.0241071428571429*G0_2_1; A[89] = 0.0964285714285715*G0_1_0 + 0.120535714285714*G0_1_1 + 0.192857142857143*G0_2_0 + 0.0964285714285715*G0_2_1; A[90] = 0.0482142857142857*G0_1_0 + 0.0482142857142857*G0_1_1 + 0.0241071428571428*G0_1_2 + 0.0241071428571428*G0_2_0 + 0.0241071428571429*G0_2_1; A[91] = 0.0723214285714286*G0_1_0 + 0.0723214285714286*G0_1_1 + 0.0241071428571429*G0_1_2 + 0.0241071428571429*G0_2_0 + 0.0241071428571429*G0_2_1; A[92] = 0.0482142857142858*G0_1_0 + 0.0241071428571427*G0_1_1 + 0.0482142857142857*G0_1_2 + 0.0723214285714287*G0_2_0 + 0.0482142857142858*G0_2_1 + 0.0723214285714286*G0_2_2; A[93] = -0.0964285714285714*G0_1_0 + 0.024107142857143*G0_1_1 - 0.0964285714285715*G0_1_2 - 0.192857142857143*G0_2_0 - 0.0964285714285714*G0_2_1 - 0.192857142857143*G0_2_2; A[94] = 0.024107142857143*G0_1_1 + 0.024107142857143*G0_1_2 + 0.0241071428571428*G0_2_1 + 0.0241071428571428*G0_2_2; A[95] = 0.0241071428571428*G0_1_1 + 0.0241071428571428*G0_1_2 + 0.0241071428571428*G0_2_1 + 0.0241071428571429*G0_2_2; A[96] = 0.241071428571429*G0_1_0 - 0.0482142857142855*G0_1_1 + 0.120535714285714*G0_1_2 + 0.0964285714285713*G0_2_0 - 0.0241071428571429*G0_2_1 + 0.0964285714285715*G0_2_2; A[97] = -0.241071428571429*G0_1_0 - 0.289285714285714*G0_1_1 - 0.120535714285714*G0_1_2 - 0.0964285714285713*G0_2_0 - 0.120535714285714*G0_2_1; A[98] = 0.0482142857142855*G0_1_1 + 0.0241071428571426*G0_1_2 + 0.0241071428571429*G0_2_1; A[99] = -0.144642857142857*G0_1_1 - 0.120535714285714*G0_1_2 - 0.120535714285714*G0_2_1 - 0.0964285714285715*G0_2_2; A[100] = -0.0133928571428572*G0_1_0 - 0.0133928571428572*G0_1_1 - 0.0133928571428572*G0_1_2 - 0.0133928571428572*G0_2_0 - 0.0133928571428572*G0_2_1 - 0.0133928571428572*G0_2_2; A[101] = 0.0133928571428571*G0_1_0 + 0.0133928571428572*G0_2_0; A[102] = 0.0133928571428571*G0_1_1 - 0.0348214285714286*G0_2_1; A[103] = 0.0616071428571429*G0_1_2 - 0.0348214285714285*G0_2_2; A[104] = -0.0723214285714286*G0_1_1 - 0.0241071428571429*G0_1_2 + 0.0723214285714285*G0_2_1 - 0.0723214285714286*G0_2_2; A[105] = 0.192857142857143*G0_1_1 + 0.0964285714285715*G0_1_2 + 0.0964285714285715*G0_2_1 + 0.241071428571429*G0_2_2; A[106] = -0.0723214285714285*G0_1_0 - 0.0241071428571429*G0_1_2 - 0.0482142857142856*G0_2_0 - 0.0241071428571428*G0_2_2; A[107] = 0.192857142857143*G0_1_0 + 0.0964285714285714*G0_1_2 + 0.0964285714285715*G0_2_0 + 0.120535714285714*G0_2_2; A[108] = -0.0241071428571428*G0_1_0 - 0.0241071428571428*G0_1_1 - 0.0482142857142856*G0_2_0 - 0.0241071428571428*G0_2_1; A[109] = -0.0241071428571429*G0_1_0 - 0.0241071428571429*G0_1_1 - 0.0723214285714286*G0_2_0 - 0.0482142857142857*G0_2_1; A[110] = 0.0723214285714288*G0_1_0 + 0.0723214285714288*G0_1_1 + 0.0482142857142859*G0_1_2 + 0.0482142857142859*G0_2_0 + 0.0482142857142858*G0_2_1 + 0.0241071428571429*G0_2_2; A[111] = -0.192857142857143*G0_1_0 - 0.192857142857143*G0_1_1 - 0.0964285714285715*G0_1_2 - 0.0964285714285716*G0_2_0 - 0.0964285714285715*G0_2_1 + 0.0241071428571428*G0_2_2; A[112] = 0.024107142857143*G0_1_0 + 0.0241071428571429*G0_1_2 + 0.0482142857142857*G0_2_0 + 0.0241071428571428*G0_2_1 + 0.0482142857142857*G0_2_2; A[113] = 0.0241071428571429*G0_1_0 + 0.0241071428571429*G0_1_2 + 0.0723214285714286*G0_2_0 + 0.024107142857143*G0_2_1 + 0.0723214285714286*G0_2_2; A[114] = 0.0241071428571429*G0_1_1 + 0.0241071428571429*G0_1_2 + 0.024107142857143*G0_2_1 + 0.024107142857143*G0_2_2; A[115] = 0.0241071428571428*G0_1_1 + 0.0241071428571428*G0_1_2 + 0.0241071428571428*G0_2_1 + 0.0241071428571428*G0_2_2; A[116] = 0.0964285714285714*G0_1_0 + 0.0964285714285715*G0_1_1 - 0.024107142857143*G0_1_2 + 0.241071428571429*G0_2_0 + 0.120535714285715*G0_2_1 - 0.0482142857142857*G0_2_2; A[117] = -0.0964285714285714*G0_1_0 - 0.120535714285714*G0_1_2 - 0.241071428571429*G0_2_0 - 0.120535714285714*G0_2_1 - 0.289285714285714*G0_2_2; A[118] = -0.0964285714285715*G0_1_1 - 0.120535714285714*G0_1_2 - 0.120535714285715*G0_2_1 - 0.144642857142857*G0_2_2; A[119] = 0.0241071428571429*G0_1_2 + 0.0241071428571427*G0_2_1 + 0.0482142857142856*G0_2_2; A[120] = -0.0133928571428572*G0_0_0 - 0.0133928571428572*G0_0_1 - 0.0133928571428572*G0_0_2 - 0.0133928571428571*G0_2_0 - 0.0133928571428571*G0_2_1 - 0.0133928571428571*G0_2_2; A[121] = -0.0348214285714285*G0_0_0 + 0.0616071428571429*G0_2_0; A[122] = 0.0133928571428571*G0_0_1 + 0.0133928571428571*G0_2_1; A[123] = -0.0348214285714286*G0_0_2 + 0.0133928571428571*G0_2_2; A[124] = -0.0482142857142855*G0_0_1 - 0.0241071428571428*G0_0_2 - 0.0241071428571427*G0_2_1 - 0.0241071428571428*G0_2_2; A[125] = -0.0723214285714285*G0_0_1 - 0.0482142857142856*G0_0_2 - 0.0241071428571428*G0_2_1 - 0.0241071428571428*G0_2_2; A[126] = 0.241071428571428*G0_0_0 + 0.0964285714285713*G0_0_2 + 0.0964285714285713*G0_2_0 + 0.192857142857143*G0_2_2; A[127] = -0.0723214285714285*G0_0_0 + 0.0723214285714286*G0_0_2 - 0.0241071428571429*G0_2_0 - 0.0723214285714285*G0_2_2; A[128] = 0.120535714285714*G0_0_0 + 0.0964285714285713*G0_0_1 + 0.0964285714285712*G0_2_0 + 0.192857142857143*G0_2_1; A[129] = -0.0241071428571428*G0_0_0 - 0.0482142857142857*G0_0_1 - 0.0241071428571428*G0_2_0 - 0.0723214285714285*G0_2_1; A[130] = 0.0482142857142857*G0_0_0 + 0.0482142857142857*G0_0_1 + 0.0241071428571429*G0_0_2 + 0.0241071428571428*G0_2_0 + 0.0241071428571427*G0_2_1; A[131] = 0.0723214285714286*G0_0_0 + 0.0723214285714286*G0_0_1 + 0.0241071428571429*G0_0_2 + 0.0241071428571429*G0_2_0 + 0.0241071428571429*G0_2_1; A[132] = 0.0241071428571429*G0_0_0 + 0.0241071428571429*G0_0_2 + 0.0241071428571427*G0_2_0 + 0.0241071428571428*G0_2_2; A[133] = 0.0241071428571428*G0_0_0 + 0.0241071428571428*G0_0_2 + 0.0241071428571428*G0_2_0 + 0.0241071428571428*G0_2_2; A[134] = 0.0241071428571429*G0_0_0 + 0.0482142857142857*G0_0_1 + 0.0482142857142857*G0_0_2 + 0.0482142857142858*G0_2_0 + 0.0723214285714286*G0_2_1 + 0.0723214285714286*G0_2_2; A[135] = 0.0241071428571428*G0_0_0 - 0.0964285714285712*G0_0_1 - 0.0964285714285712*G0_0_2 - 0.0964285714285716*G0_2_0 - 0.192857142857143*G0_2_1 - 0.192857142857143*G0_2_2; A[136] = -0.0482142857142857*G0_0_0 + 0.241071428571428*G0_0_1 + 0.120535714285714*G0_0_2 - 0.0241071428571427*G0_2_0 + 0.0964285714285714*G0_2_1 + 0.0964285714285714*G0_2_2; A[137] = 0.0482142857142857*G0_0_0 + 0.0241071428571426*G0_0_2 + 0.0241071428571427*G0_2_0; A[138] = -0.289285714285714*G0_0_0 - 0.241071428571428*G0_0_1 - 0.120535714285714*G0_0_2 - 0.120535714285714*G0_2_0 - 0.0964285714285714*G0_2_1; A[139] = -0.144642857142857*G0_0_0 - 0.120535714285714*G0_0_2 - 0.120535714285714*G0_2_0 - 0.0964285714285713*G0_2_2; A[140] = -0.0133928571428572*G0_0_0 - 0.0133928571428572*G0_0_1 - 0.0133928571428572*G0_0_2 - 0.0133928571428572*G0_2_0 - 0.0133928571428573*G0_2_1 - 0.0133928571428572*G0_2_2; A[141] = 0.0133928571428571*G0_0_0 - 0.0348214285714286*G0_2_0; A[142] = 0.0133928571428571*G0_0_1 + 0.0133928571428571*G0_2_1; A[143] = 0.0616071428571429*G0_0_2 - 0.0348214285714285*G0_2_2; A[144] = -0.0723214285714285*G0_0_1 - 0.0241071428571429*G0_0_2 - 0.0482142857142856*G0_2_1 - 0.0241071428571429*G0_2_2; A[145] = 0.192857142857143*G0_0_1 + 0.0964285714285715*G0_0_2 + 0.0964285714285714*G0_2_1 + 0.120535714285714*G0_2_2; A[146] = -0.0723214285714285*G0_0_0 - 0.0241071428571429*G0_0_2 + 0.0723214285714286*G0_2_0 - 0.0723214285714285*G0_2_2; A[147] = 0.192857142857143*G0_0_0 + 0.0964285714285714*G0_0_2 + 0.0964285714285714*G0_2_0 + 0.241071428571429*G0_2_2; A[148] = -0.0241071428571429*G0_0_0 - 0.0241071428571429*G0_0_1 - 0.0482142857142856*G0_2_0 - 0.0723214285714285*G0_2_1; A[149] = -0.0241071428571429*G0_0_0 - 0.0241071428571429*G0_0_1 - 0.024107142857143*G0_2_0 - 0.0482142857142857*G0_2_1; A[150] = 0.0723214285714289*G0_0_0 + 0.0723214285714288*G0_0_1 + 0.0482142857142859*G0_0_2 + 0.048214285714286*G0_2_0 + 0.048214285714286*G0_2_1 + 0.0241071428571431*G0_2_2; A[151] = -0.192857142857143*G0_0_0 - 0.192857142857143*G0_0_1 - 0.0964285714285716*G0_0_2 - 0.0964285714285715*G0_2_0 - 0.0964285714285714*G0_2_1 + 0.0241071428571427*G0_2_2; A[152] = 0.024107142857143*G0_0_0 + 0.024107142857143*G0_0_2 + 0.024107142857143*G0_2_0 + 0.0241071428571431*G0_2_2; A[153] = 0.0241071428571428*G0_0_0 + 0.0241071428571428*G0_0_2 + 0.0241071428571429*G0_2_0 + 0.0241071428571429*G0_2_2; A[154] = 0.0241071428571429*G0_0_1 + 0.0241071428571429*G0_0_2 + 0.0241071428571428*G0_2_0 + 0.0482142857142857*G0_2_1 + 0.0482142857142857*G0_2_2; A[155] = 0.0241071428571429*G0_0_1 + 0.0241071428571429*G0_0_2 + 0.024107142857143*G0_2_0 + 0.0723214285714286*G0_2_1 + 0.0723214285714286*G0_2_2; A[156] = 0.0964285714285714*G0_0_0 + 0.0964285714285714*G0_0_1 - 0.024107142857143*G0_0_2 + 0.120535714285714*G0_2_0 + 0.241071428571428*G0_2_1 - 0.0482142857142858*G0_2_2; A[157] = -0.0964285714285714*G0_0_0 - 0.120535714285714*G0_0_2 - 0.120535714285714*G0_2_0 - 0.144642857142857*G0_2_2; A[158] = -0.0964285714285714*G0_0_1 - 0.120535714285714*G0_0_2 - 0.120535714285714*G0_2_0 - 0.241071428571429*G0_2_1 - 0.289285714285714*G0_2_2; A[159] = 0.024107142857143*G0_0_2 + 0.0241071428571425*G0_2_0 + 0.0482142857142857*G0_2_2; A[160] = -0.0133928571428571*G0_0_0 - 0.0133928571428571*G0_0_1 - 0.0133928571428571*G0_0_2 - 0.0133928571428571*G0_1_0 - 0.0133928571428571*G0_1_1 - 0.0133928571428571*G0_1_2; A[161] = -0.0348214285714284*G0_0_0 + 0.0616071428571429*G0_1_0; A[162] = -0.0348214285714285*G0_0_1 + 0.0133928571428571*G0_1_1; A[163] = 0.0133928571428571*G0_0_2 + 0.0133928571428571*G0_1_2; A[164] = -0.0482142857142855*G0_0_1 - 0.0723214285714285*G0_0_2 - 0.0241071428571428*G0_1_1 - 0.0241071428571429*G0_1_2; A[165] = -0.0241071428571428*G0_0_1 - 0.0482142857142856*G0_0_2 - 0.0241071428571428*G0_1_1 - 0.0241071428571428*G0_1_2; A[166] = 0.120535714285714*G0_0_0 + 0.0964285714285712*G0_0_2 + 0.0964285714285713*G0_1_0 + 0.192857142857143*G0_1_2; A[167] = -0.0241071428571429*G0_0_0 - 0.0482142857142856*G0_0_2 - 0.0241071428571429*G0_1_0 - 0.0723214285714285*G0_1_2; A[168] = 0.241071428571428*G0_0_0 + 0.0964285714285713*G0_0_1 + 0.0964285714285713*G0_1_0 + 0.192857142857143*G0_1_1; A[169] = -0.0723214285714285*G0_0_0 + 0.0723214285714283*G0_0_1 - 0.0241071428571429*G0_1_0 - 0.0723214285714287*G0_1_1; A[170] = 0.0241071428571429*G0_0_0 + 0.0241071428571429*G0_0_1 + 0.0241071428571428*G0_1_0 + 0.0241071428571428*G0_1_1; A[171] = 0.0241071428571429*G0_0_0 + 0.0241071428571429*G0_0_1 + 0.0241071428571429*G0_1_0 + 0.0241071428571429*G0_1_1; A[172] = 0.0482142857142855*G0_0_0 + 0.0241071428571428*G0_0_1 + 0.0482142857142856*G0_0_2 + 0.0241071428571428*G0_1_0 + 0.0241071428571428*G0_1_2; A[173] = 0.0723214285714285*G0_0_0 + 0.024107142857143*G0_0_1 + 0.0723214285714285*G0_0_2 + 0.0241071428571429*G0_1_0 + 0.0241071428571429*G0_1_2; A[174] = 0.0241071428571428*G0_0_0 + 0.0482142857142856*G0_0_1 + 0.0482142857142856*G0_0_2 + 0.0482142857142858*G0_1_0 + 0.0723214285714286*G0_1_1 + 0.0723214285714286*G0_1_2; A[175] = 0.0241071428571427*G0_0_0 - 0.0964285714285712*G0_0_1 - 0.0964285714285712*G0_0_2 - 0.0964285714285716*G0_1_0 - 0.192857142857143*G0_1_1 - 0.192857142857143*G0_1_2; A[176] = -0.0482142857142857*G0_0_0 + 0.120535714285714*G0_0_1 + 0.241071428571428*G0_0_2 - 0.0241071428571428*G0_1_0 + 0.0964285714285714*G0_1_1 + 0.0964285714285713*G0_1_2; A[177] = 0.0482142857142857*G0_0_0 + 0.0241071428571427*G0_0_1 + 0.0241071428571428*G0_1_0; A[178] = -0.144642857142857*G0_0_0 - 0.120535714285714*G0_0_1 - 0.120535714285714*G0_1_0 - 0.0964285714285715*G0_1_1; A[179] = -0.289285714285713*G0_0_0 - 0.120535714285714*G0_0_1 - 0.241071428571428*G0_0_2 - 0.120535714285714*G0_1_0 - 0.0964285714285713*G0_1_2; A[180] = -0.0133928571428572*G0_0_0 - 0.0133928571428571*G0_0_1 - 0.0133928571428571*G0_0_2 - 0.0133928571428572*G0_1_0 - 0.0133928571428571*G0_1_1 - 0.0133928571428572*G0_1_2; A[181] = 0.0133928571428571*G0_0_0 - 0.0348214285714286*G0_1_0; A[182] = 0.0616071428571428*G0_0_1 - 0.0348214285714285*G0_1_1; A[183] = 0.0133928571428572*G0_0_2 + 0.0133928571428571*G0_1_2; A[184] = 0.0964285714285715*G0_0_1 + 0.192857142857143*G0_0_2 + 0.120535714285714*G0_1_1 + 0.0964285714285715*G0_1_2; A[185] = -0.0241071428571429*G0_0_1 - 0.0723214285714286*G0_0_2 - 0.0241071428571429*G0_1_1 - 0.0482142857142857*G0_1_2; A[186] = -0.0241071428571428*G0_0_0 - 0.0241071428571428*G0_0_2 - 0.0482142857142857*G0_1_0 - 0.0723214285714285*G0_1_2; A[187] = -0.0241071428571429*G0_0_0 - 0.024107142857143*G0_0_2 - 0.0241071428571429*G0_1_0 - 0.0482142857142857*G0_1_2; A[188] = -0.0723214285714285*G0_0_0 - 0.0241071428571429*G0_0_1 + 0.0723214285714283*G0_1_0 - 0.0723214285714287*G0_1_1; A[189] = 0.192857142857143*G0_0_0 + 0.0964285714285715*G0_0_1 + 0.0964285714285715*G0_1_0 + 0.241071428571428*G0_1_1; A[190] = 0.0241071428571429*G0_0_0 + 0.0241071428571429*G0_0_1 + 0.024107142857143*G0_1_0 + 0.024107142857143*G0_1_1; A[191] = 0.0241071428571429*G0_0_0 + 0.0241071428571429*G0_0_1 + 0.0241071428571429*G0_1_0 + 0.0241071428571429*G0_1_1; A[192] = 0.0723214285714288*G0_0_0 + 0.0482142857142858*G0_0_1 + 0.0723214285714287*G0_0_2 + 0.0482142857142859*G0_1_0 + 0.0241071428571428*G0_1_1 + 0.0482142857142858*G0_1_2; A[193] = -0.192857142857143*G0_0_0 - 0.0964285714285714*G0_0_1 - 0.192857142857143*G0_0_2 - 0.0964285714285715*G0_1_0 + 0.0241071428571429*G0_1_1 - 0.0964285714285715*G0_1_2; A[194] = 0.0241071428571429*G0_0_1 + 0.0241071428571429*G0_0_2 + 0.0241071428571428*G0_1_0 + 0.0482142857142857*G0_1_1 + 0.0482142857142856*G0_1_2; A[195] = 0.0241071428571428*G0_0_1 + 0.0241071428571429*G0_0_2 + 0.0241071428571429*G0_1_0 + 0.0723214285714286*G0_1_1 + 0.0723214285714287*G0_1_2; A[196] = 0.0964285714285713*G0_0_0 - 0.0241071428571429*G0_0_1 + 0.0964285714285715*G0_0_2 + 0.120535714285714*G0_1_0 - 0.0482142857142859*G0_1_1 + 0.241071428571428*G0_1_2; A[197] = -0.0964285714285713*G0_0_0 - 0.120535714285714*G0_0_1 - 0.120535714285714*G0_1_0 - 0.144642857142857*G0_1_1; A[198] = 0.0241071428571429*G0_0_1 + 0.0241071428571427*G0_1_0 + 0.0482142857142859*G0_1_1; A[199] = -0.120535714285714*G0_0_1 - 0.0964285714285715*G0_0_2 - 0.120535714285714*G0_1_0 - 0.289285714285714*G0_1_1 - 0.241071428571428*G0_1_2; A[200] = -0.0348214285714286*G0_0_0 - 0.0348214285714285*G0_0_1 - 0.0348214285714286*G0_0_2 - 0.0348214285714286*G0_1_0 - 0.0348214285714285*G0_1_1 - 0.0348214285714286*G0_1_2 - 0.0964285714285714*G0_2_0 - 0.0964285714285714*G0_2_1 - 0.0964285714285714*G0_2_2; A[201] = -0.0133928571428572*G0_0_0 - 0.0133928571428572*G0_1_0; A[202] = -0.0133928571428571*G0_0_1 - 0.0133928571428571*G0_1_1; A[203] = 0.0348214285714286*G0_0_2 + 0.0348214285714286*G0_1_2 + 0.0482142857142858*G0_2_2; A[204] = 0.0482142857142857*G0_0_1 + 0.0241071428571428*G0_0_2 + 0.0482142857142857*G0_1_1 + 0.0241071428571429*G0_1_2 + 0.0241071428571428*G0_2_1; A[205] = 0.0723214285714289*G0_0_1 + 0.0482142857142859*G0_0_2 + 0.0723214285714288*G0_1_1 + 0.0482142857142858*G0_1_2 + 0.0482142857142859*G0_2_1 + 0.0241071428571429*G0_2_2; A[206] = 0.0482142857142856*G0_0_0 + 0.0241071428571428*G0_0_2 + 0.0482142857142857*G0_1_0 + 0.0241071428571427*G0_1_2 + 0.0241071428571429*G0_2_0; A[207] = 0.0723214285714289*G0_0_0 + 0.048214285714286*G0_0_2 + 0.0723214285714288*G0_1_0 + 0.0482142857142859*G0_1_2 + 0.0482142857142859*G0_2_0 + 0.0241071428571431*G0_2_2; A[208] = 0.0241071428571429*G0_0_0 + 0.0241071428571428*G0_0_1 + 0.0241071428571429*G0_1_0 + 0.0241071428571428*G0_1_1; A[209] = 0.0241071428571429*G0_0_0 + 0.024107142857143*G0_0_1 + 0.0241071428571429*G0_1_0 + 0.024107142857143*G0_1_1; A[210] = 0.241071428571429*G0_0_0 + 0.241071428571429*G0_0_1 + 0.144642857142857*G0_0_2 + 0.241071428571429*G0_1_0 + 0.241071428571428*G0_1_1 + 0.144642857142857*G0_1_2 + 0.144642857142857*G0_2_0 + 0.144642857142857*G0_2_1 + 0.241071428571429*G0_2_2; A[211] = -0.0723214285714288*G0_0_0 - 0.0723214285714288*G0_0_1 - 0.144642857142857*G0_0_2 - 0.0723214285714288*G0_1_0 - 0.0723214285714288*G0_1_1 - 0.144642857142857*G0_1_2 - 0.0482142857142859*G0_2_0 - 0.0482142857142859*G0_2_1 - 0.192857142857143*G0_2_2; A[212] = 0.120535714285714*G0_0_0 + 0.0241071428571429*G0_0_1 + 0.120535714285714*G0_0_2 + 0.120535714285714*G0_1_0 + 0.0241071428571428*G0_1_1 + 0.120535714285714*G0_1_2 + 0.0241071428571429*G0_2_0 + 0.120535714285714*G0_2_1 + 0.0241071428571429*G0_2_2; A[213] = -0.0241071428571429*G0_0_0 + 0.0241071428571429*G0_0_1 - 0.0241071428571429*G0_0_2 - 0.0241071428571429*G0_1_0 + 0.0241071428571429*G0_1_1 - 0.0241071428571429*G0_1_2 - 0.0241071428571429*G0_2_1; A[214] = 0.0241071428571429*G0_0_0 + 0.120535714285714*G0_0_1 + 0.120535714285714*G0_0_2 + 0.0241071428571429*G0_1_0 + 0.120535714285714*G0_1_1 + 0.120535714285714*G0_1_2 + 0.120535714285714*G0_2_0 + 0.0241071428571429*G0_2_1 + 0.0241071428571429*G0_2_2; A[215] = 0.0241071428571429*G0_0_0 - 0.0241071428571428*G0_0_1 - 0.0241071428571428*G0_0_2 + 0.0241071428571429*G0_1_0 - 0.0241071428571427*G0_1_1 - 0.0241071428571427*G0_1_2 - 0.0241071428571428*G0_2_0; A[216] = 0.0482142857142861*G0_0_0 + 0.048214285714286*G0_0_1 + 0.024107142857143*G0_0_2 + 0.048214285714286*G0_1_0 + 0.0482142857142859*G0_1_1 + 0.024107142857143*G0_1_2 + 0.0241071428571431*G0_2_0 + 0.0241071428571432*G0_2_1; A[217] = -0.0482142857142861*G0_0_0 - 0.289285714285714*G0_0_1 - 0.16875*G0_0_2 - 0.0482142857142861*G0_1_0 - 0.289285714285714*G0_1_1 - 0.16875*G0_1_2 - 0.0241071428571432*G0_2_0 - 0.16875*G0_2_1 - 0.0482142857142858*G0_2_2; A[218] = -0.289285714285714*G0_0_0 - 0.0482142857142861*G0_0_1 - 0.16875*G0_0_2 - 0.289285714285714*G0_1_0 - 0.048214285714286*G0_1_1 - 0.16875*G0_1_2 - 0.16875*G0_2_0 - 0.0241071428571433*G0_2_1 - 0.048214285714286*G0_2_2; A[219] = -0.144642857142857*G0_0_0 - 0.144642857142857*G0_0_1 - 0.024107142857143*G0_0_2 - 0.144642857142857*G0_1_0 - 0.144642857142857*G0_1_1 - 0.024107142857143*G0_1_2 - 0.024107142857143*G0_2_0 - 0.024107142857143*G0_2_1; A[220] = 0.0133928571428572*G0_0_0 + 0.0133928571428572*G0_0_1 + 0.0133928571428572*G0_0_2 + 0.0133928571428572*G0_1_0 + 0.0133928571428572*G0_1_1 + 0.0133928571428572*G0_1_2 + 0.0482142857142857*G0_2_0 + 0.0482142857142857*G0_2_1 + 0.0482142857142857*G0_2_2; A[221] = -0.0133928571428572*G0_0_0 - 0.0133928571428572*G0_1_0; A[222] = -0.0133928571428571*G0_0_1 - 0.0133928571428571*G0_1_1; A[223] = -0.0616071428571429*G0_0_2 - 0.0616071428571429*G0_1_2 - 0.0964285714285715*G0_2_2; A[224] = 0.0723214285714286*G0_0_1 + 0.0241071428571429*G0_0_2 + 0.0723214285714286*G0_1_1 + 0.0241071428571429*G0_1_2 + 0.0241071428571429*G0_2_1; A[225] = -0.192857142857143*G0_0_1 - 0.0964285714285716*G0_0_2 - 0.192857142857143*G0_1_1 - 0.0964285714285715*G0_1_2 - 0.0964285714285715*G0_2_1 + 0.0241071428571428*G0_2_2; A[226] = 0.0723214285714286*G0_0_0 + 0.0241071428571429*G0_0_2 + 0.0723214285714286*G0_1_0 + 0.0241071428571429*G0_1_2 + 0.0241071428571429*G0_2_0; A[227] = -0.192857142857143*G0_0_0 - 0.0964285714285715*G0_0_2 - 0.192857142857143*G0_1_0 - 0.0964285714285714*G0_1_2 - 0.0964285714285716*G0_2_0 + 0.0241071428571427*G0_2_2; A[228] = 0.0241071428571429*G0_0_0 + 0.0241071428571429*G0_0_1 + 0.0241071428571429*G0_1_0 + 0.0241071428571429*G0_1_1; A[229] = 0.0241071428571429*G0_0_0 + 0.0241071428571429*G0_0_1 + 0.0241071428571429*G0_1_0 + 0.0241071428571429*G0_1_1; A[230] = -0.0723214285714288*G0_0_0 - 0.0723214285714288*G0_0_1 - 0.0482142857142859*G0_0_2 - 0.0723214285714288*G0_1_0 - 0.0723214285714288*G0_1_1 - 0.0482142857142859*G0_1_2 - 0.144642857142857*G0_2_0 - 0.144642857142857*G0_2_1 - 0.192857142857143*G0_2_2; A[231] = 0.192857142857143*G0_0_0 + 0.192857142857143*G0_0_1 + 0.0964285714285716*G0_0_2 + 0.192857142857143*G0_1_0 + 0.192857142857143*G0_1_1 + 0.0964285714285716*G0_1_2 + 0.0964285714285716*G0_2_0 + 0.0964285714285716*G0_2_1 + 0.241071428571429*G0_2_2; A[232] = -0.024107142857143*G0_0_0 - 0.0241071428571429*G0_0_2 - 0.0241071428571429*G0_1_0 - 0.0241071428571429*G0_1_2 + 0.0241071428571428*G0_2_0 - 0.0241071428571429*G0_2_1 + 0.0241071428571429*G0_2_2; A[233] = -0.0241071428571428*G0_0_0 - 0.0241071428571429*G0_0_2 - 0.0241071428571429*G0_1_0 - 0.0241071428571429*G0_1_2 - 0.0241071428571427*G0_2_1; A[234] = -0.0241071428571429*G0_0_1 - 0.0241071428571429*G0_0_2 - 0.0241071428571429*G0_1_1 - 0.0241071428571429*G0_1_2 - 0.0241071428571429*G0_2_0 + 0.0241071428571429*G0_2_1 + 0.0241071428571429*G0_2_2; A[235] = -0.0241071428571429*G0_0_1 - 0.0241071428571429*G0_0_2 - 0.0241071428571429*G0_1_1 - 0.0241071428571429*G0_1_2 - 0.0241071428571429*G0_2_0; A[236] = -0.0964285714285715*G0_0_0 - 0.0964285714285714*G0_0_1 + 0.024107142857143*G0_0_2 - 0.0964285714285714*G0_1_0 - 0.0964285714285715*G0_1_1 + 0.024107142857143*G0_1_2 + 0.0241071428571428*G0_2_0 + 0.0241071428571428*G0_2_1; A[237] = 0.0964285714285715*G0_0_0 + 0.120535714285714*G0_0_2 + 0.0964285714285714*G0_1_0 + 0.120535714285714*G0_1_2 - 0.0241071428571427*G0_2_0 + 0.120535714285714*G0_2_1 - 0.0482142857142857*G0_2_2; A[238] = 0.0964285714285715*G0_0_1 + 0.120535714285714*G0_0_2 + 0.0964285714285715*G0_1_1 + 0.120535714285714*G0_1_2 + 0.120535714285714*G0_2_0 - 0.0241071428571428*G0_2_1 - 0.0482142857142856*G0_2_2; A[239] = -0.024107142857143*G0_0_2 - 0.0241071428571429*G0_1_2 - 0.0241071428571429*G0_2_0 - 0.0241071428571428*G0_2_1; A[240] = -0.0348214285714286*G0_0_0 - 0.0348214285714285*G0_0_1 - 0.0348214285714286*G0_0_2 - 0.0964285714285714*G0_1_0 - 0.0964285714285715*G0_1_1 - 0.0964285714285714*G0_1_2 - 0.0348214285714286*G0_2_0 - 0.0348214285714285*G0_2_1 - 0.0348214285714286*G0_2_2; A[241] = -0.0133928571428571*G0_0_0 - 0.0133928571428572*G0_2_0; A[242] = 0.0348214285714286*G0_0_1 + 0.0482142857142858*G0_1_1 + 0.0348214285714286*G0_2_1; A[243] = -0.0133928571428571*G0_0_2 - 0.0133928571428572*G0_2_2; A[244] = 0.0482142857142858*G0_0_1 + 0.0723214285714287*G0_0_2 + 0.0241071428571427*G0_1_1 + 0.0482142857142858*G0_1_2 + 0.0482142857142857*G0_2_1 + 0.0723214285714286*G0_2_2; A[245] = 0.024107142857143*G0_0_1 + 0.0482142857142857*G0_0_2 + 0.0241071428571428*G0_1_2 + 0.0241071428571429*G0_2_1 + 0.0482142857142857*G0_2_2; A[246] = 0.0241071428571429*G0_0_0 + 0.0241071428571427*G0_0_2 + 0.0241071428571429*G0_2_0 + 0.0241071428571428*G0_2_2; A[247] = 0.024107142857143*G0_0_0 + 0.024107142857143*G0_0_2 + 0.024107142857143*G0_2_0 + 0.0241071428571431*G0_2_2; A[248] = 0.0482142857142855*G0_0_0 + 0.0241071428571428*G0_0_1 + 0.0241071428571428*G0_1_0 + 0.0482142857142856*G0_2_0 + 0.0241071428571428*G0_2_1; A[249] = 0.0723214285714288*G0_0_0 + 0.0482142857142859*G0_0_1 + 0.0482142857142858*G0_1_0 + 0.0241071428571428*G0_1_1 + 0.0723214285714287*G0_2_0 + 0.0482142857142858*G0_2_1; A[250] = 0.120535714285714*G0_0_0 + 0.120535714285714*G0_0_1 + 0.0241071428571429*G0_0_2 + 0.0241071428571429*G0_1_0 + 0.0241071428571428*G0_1_1 + 0.120535714285714*G0_1_2 + 0.120535714285714*G0_2_0 + 0.120535714285714*G0_2_1 + 0.0241071428571429*G0_2_2; A[251] = -0.0241071428571429*G0_0_0 - 0.0241071428571429*G0_0_1 + 0.0241071428571428*G0_0_2 - 0.024107142857143*G0_1_2 - 0.0241071428571429*G0_2_0 - 0.0241071428571429*G0_2_1 + 0.0241071428571429*G0_2_2; A[252] = 0.241071428571429*G0_0_0 + 0.144642857142857*G0_0_1 + 0.241071428571429*G0_0_2 + 0.144642857142857*G0_1_0 + 0.241071428571429*G0_1_1 + 0.144642857142857*G0_1_2 + 0.241071428571429*G0_2_0 + 0.144642857142857*G0_2_1 + 0.241071428571429*G0_2_2; A[253] = -0.0723214285714287*G0_0_0 - 0.144642857142857*G0_0_1 - 0.0723214285714288*G0_0_2 - 0.0482142857142858*G0_1_0 - 0.192857142857143*G0_1_1 - 0.0482142857142858*G0_1_2 - 0.0723214285714286*G0_2_0 - 0.144642857142857*G0_2_1 - 0.0723214285714287*G0_2_2; A[254] = 0.0241071428571429*G0_0_0 + 0.120535714285714*G0_0_1 + 0.120535714285714*G0_0_2 + 0.120535714285714*G0_1_0 + 0.0241071428571428*G0_1_1 + 0.0241071428571428*G0_1_2 + 0.0241071428571429*G0_2_0 + 0.120535714285714*G0_2_1 + 0.120535714285714*G0_2_2; A[255] = 0.0241071428571428*G0_0_0 - 0.0241071428571428*G0_0_1 - 0.0241071428571427*G0_0_2 - 0.0241071428571429*G0_1_0 + 0.0241071428571428*G0_2_0 - 0.0241071428571428*G0_2_1 - 0.0241071428571427*G0_2_2; A[256] = 0.048214285714286*G0_0_0 + 0.024107142857143*G0_0_1 + 0.0482142857142857*G0_0_2 + 0.0241071428571429*G0_1_0 + 0.0241071428571429*G0_1_2 + 0.0482142857142859*G0_2_0 + 0.0241071428571431*G0_2_1 + 0.0482142857142857*G0_2_2; A[257] = -0.048214285714286*G0_0_0 - 0.16875*G0_0_1 - 0.289285714285714*G0_0_2 - 0.0241071428571429*G0_1_0 - 0.0482142857142856*G0_1_1 - 0.16875*G0_1_2 - 0.0482142857142859*G0_2_0 - 0.16875*G0_2_1 - 0.289285714285714*G0_2_2; A[258] = -0.144642857142857*G0_0_0 - 0.024107142857143*G0_0_1 - 0.144642857142858*G0_0_2 - 0.024107142857143*G0_1_0 - 0.0241071428571431*G0_1_2 - 0.144642857142857*G0_2_0 - 0.0241071428571431*G0_2_1 - 0.144642857142858*G0_2_2; A[259] = -0.289285714285714*G0_0_0 - 0.16875*G0_0_1 - 0.0482142857142858*G0_0_2 - 0.16875*G0_1_0 - 0.0482142857142856*G0_1_1 - 0.0241071428571429*G0_1_2 - 0.289285714285714*G0_2_0 - 0.16875*G0_2_1 - 0.0482142857142858*G0_2_2; A[260] = 0.0133928571428572*G0_0_0 + 0.0133928571428571*G0_0_1 + 0.0133928571428571*G0_0_2 + 0.0482142857142857*G0_1_0 + 0.0482142857142858*G0_1_1 + 0.0482142857142857*G0_1_2 + 0.0133928571428572*G0_2_0 + 0.0133928571428571*G0_2_1 + 0.0133928571428571*G0_2_2; A[261] = -0.0133928571428571*G0_0_0 - 0.0133928571428571*G0_2_0; A[262] = -0.0616071428571428*G0_0_1 - 0.0964285714285714*G0_1_1 - 0.0616071428571428*G0_2_1; A[263] = -0.0133928571428572*G0_0_2 - 0.0133928571428572*G0_2_2; A[264] = -0.0964285714285714*G0_0_1 - 0.192857142857143*G0_0_2 + 0.024107142857143*G0_1_1 - 0.0964285714285714*G0_1_2 - 0.0964285714285714*G0_2_1 - 0.192857142857143*G0_2_2; A[265] = 0.0241071428571429*G0_0_1 + 0.0723214285714286*G0_0_2 + 0.024107142857143*G0_1_2 + 0.0241071428571429*G0_2_1 + 0.0723214285714286*G0_2_2; A[266] = 0.0241071428571428*G0_0_0 + 0.0241071428571428*G0_0_2 + 0.0241071428571428*G0_2_0 + 0.0241071428571428*G0_2_2; A[267] = 0.0241071428571428*G0_0_0 + 0.0241071428571429*G0_0_2 + 0.0241071428571428*G0_2_0 + 0.0241071428571429*G0_2_2; A[268] = 0.0723214285714285*G0_0_0 + 0.0241071428571429*G0_0_1 + 0.024107142857143*G0_1_0 + 0.0723214285714285*G0_2_0 + 0.0241071428571429*G0_2_1; A[269] = -0.192857142857143*G0_0_0 - 0.0964285714285715*G0_0_1 - 0.0964285714285714*G0_1_0 + 0.0241071428571429*G0_1_1 - 0.192857142857143*G0_2_0 - 0.0964285714285715*G0_2_1; A[270] = -0.0241071428571429*G0_0_0 - 0.0241071428571429*G0_0_1 + 0.0241071428571429*G0_1_0 + 0.0241071428571429*G0_1_1 - 0.0241071428571429*G0_1_2 - 0.0241071428571429*G0_2_0 - 0.0241071428571429*G0_2_1; A[271] = -0.0241071428571428*G0_0_0 - 0.0241071428571429*G0_0_1 - 0.0241071428571427*G0_1_2 - 0.0241071428571429*G0_2_0 - 0.0241071428571429*G0_2_1; A[272] = -0.0723214285714287*G0_0_0 - 0.0482142857142858*G0_0_1 - 0.0723214285714286*G0_0_2 - 0.144642857142857*G0_1_0 - 0.192857142857143*G0_1_1 - 0.144642857142857*G0_1_2 - 0.0723214285714288*G0_2_0 - 0.0482142857142858*G0_2_1 - 0.0723214285714287*G0_2_2; A[273] = 0.192857142857143*G0_0_0 + 0.0964285714285714*G0_0_1 + 0.192857142857143*G0_0_2 + 0.0964285714285714*G0_1_0 + 0.241071428571428*G0_1_1 + 0.0964285714285714*G0_1_2 + 0.192857142857143*G0_2_0 + 0.0964285714285714*G0_2_1 + 0.192857142857143*G0_2_2; A[274] = -0.0241071428571429*G0_0_1 - 0.0241071428571429*G0_0_2 - 0.0241071428571429*G0_1_0 + 0.0241071428571429*G0_1_1 + 0.0241071428571429*G0_1_2 - 0.0241071428571429*G0_2_1 - 0.0241071428571429*G0_2_2; A[275] = -0.0241071428571428*G0_0_1 - 0.0241071428571429*G0_0_2 - 0.0241071428571428*G0_1_0 - 0.0241071428571428*G0_2_1 - 0.0241071428571429*G0_2_2; A[276] = -0.0964285714285713*G0_0_0 + 0.0241071428571429*G0_0_1 - 0.0964285714285715*G0_0_2 + 0.024107142857143*G0_1_0 + 0.0241071428571429*G0_1_2 - 0.0964285714285713*G0_2_0 + 0.024107142857143*G0_2_1 - 0.0964285714285714*G0_2_2; A[277] = 0.0964285714285713*G0_0_0 + 0.120535714285714*G0_0_1 - 0.024107142857143*G0_1_0 - 0.0482142857142859*G0_1_1 + 0.120535714285714*G0_1_2 + 0.0964285714285713*G0_2_0 + 0.120535714285714*G0_2_1; A[278] = -0.0241071428571429*G0_0_1 - 0.0241071428571428*G0_1_0 - 0.0241071428571428*G0_1_2 - 0.0241071428571429*G0_2_1; A[279] = 0.120535714285714*G0_0_1 + 0.0964285714285715*G0_0_2 + 0.120535714285714*G0_1_0 - 0.0482142857142858*G0_1_1 - 0.0241071428571429*G0_1_2 + 0.120535714285714*G0_2_1 + 0.0964285714285714*G0_2_2; A[280] = -0.0964285714285714*G0_0_0 - 0.0964285714285714*G0_0_1 - 0.0964285714285714*G0_0_2 - 0.0348214285714285*G0_1_0 - 0.0348214285714285*G0_1_1 - 0.0348214285714286*G0_1_2 - 0.0348214285714286*G0_2_0 - 0.0348214285714285*G0_2_1 - 0.0348214285714286*G0_2_2; A[281] = 0.0482142857142857*G0_0_0 + 0.0348214285714286*G0_1_0 + 0.0348214285714286*G0_2_0; A[282] = -0.0133928571428571*G0_1_1 - 0.0133928571428571*G0_2_1; A[283] = -0.0133928571428571*G0_1_2 - 0.0133928571428572*G0_2_2; A[284] = 0.024107142857143*G0_1_1 + 0.0241071428571428*G0_1_2 + 0.024107142857143*G0_2_1 + 0.0241071428571428*G0_2_2; A[285] = 0.0241071428571429*G0_1_1 + 0.024107142857143*G0_1_2 + 0.0241071428571429*G0_2_1 + 0.024107142857143*G0_2_2; A[286] = 0.0241071428571429*G0_0_0 + 0.0482142857142858*G0_0_2 + 0.0482142857142857*G0_1_0 + 0.0723214285714286*G0_1_2 + 0.0482142857142857*G0_2_0 + 0.0723214285714286*G0_2_2; A[287] = 0.0241071428571428*G0_0_2 + 0.0241071428571429*G0_1_0 + 0.0482142857142857*G0_1_2 + 0.0241071428571429*G0_2_0 + 0.0482142857142857*G0_2_2; A[288] = 0.0241071428571428*G0_0_0 + 0.0482142857142858*G0_0_1 + 0.0482142857142856*G0_1_0 + 0.0723214285714286*G0_1_1 + 0.0482142857142856*G0_2_0 + 0.0723214285714286*G0_2_1; A[289] = 0.0241071428571428*G0_0_1 + 0.0241071428571429*G0_1_0 + 0.0482142857142857*G0_1_1 + 0.0241071428571429*G0_2_0 + 0.0482142857142856*G0_2_1; A[290] = 0.0241071428571429*G0_0_0 + 0.0241071428571429*G0_0_1 + 0.120535714285714*G0_0_2 + 0.120535714285714*G0_1_0 + 0.120535714285714*G0_1_1 + 0.0241071428571429*G0_1_2 + 0.120535714285714*G0_2_0 + 0.120535714285714*G0_2_1 + 0.0241071428571429*G0_2_2; A[291] = -0.0241071428571429*G0_0_2 - 0.0241071428571429*G0_1_0 - 0.0241071428571429*G0_1_1 + 0.0241071428571429*G0_1_2 - 0.0241071428571429*G0_2_0 - 0.0241071428571429*G0_2_1 + 0.0241071428571429*G0_2_2; A[292] = 0.0241071428571429*G0_0_0 + 0.120535714285714*G0_0_1 + 0.0241071428571429*G0_0_2 + 0.120535714285714*G0_1_0 + 0.0241071428571428*G0_1_1 + 0.120535714285714*G0_1_2 + 0.120535714285714*G0_2_0 + 0.0241071428571428*G0_2_1 + 0.120535714285714*G0_2_2; A[293] = -0.0241071428571429*G0_0_1 - 0.0241071428571429*G0_1_0 + 0.0241071428571429*G0_1_1 - 0.0241071428571429*G0_1_2 - 0.0241071428571429*G0_2_0 + 0.0241071428571429*G0_2_1 - 0.0241071428571429*G0_2_2; A[294] = 0.241071428571428*G0_0_0 + 0.144642857142857*G0_0_1 + 0.144642857142857*G0_0_2 + 0.144642857142857*G0_1_0 + 0.241071428571428*G0_1_1 + 0.241071428571428*G0_1_2 + 0.144642857142857*G0_2_0 + 0.241071428571428*G0_2_1 + 0.241071428571428*G0_2_2; A[295] = -0.192857142857143*G0_0_0 - 0.0482142857142858*G0_0_1 - 0.0482142857142858*G0_0_2 - 0.144642857142857*G0_1_0 - 0.0723214285714285*G0_1_1 - 0.0723214285714285*G0_1_2 - 0.144642857142857*G0_2_0 - 0.0723214285714286*G0_2_1 - 0.0723214285714285*G0_2_2; A[296] = 0.024107142857143*G0_0_1 + 0.0241071428571429*G0_0_2 + 0.0241071428571431*G0_1_0 + 0.0482142857142858*G0_1_1 + 0.0482142857142856*G0_1_2 + 0.0241071428571431*G0_2_0 + 0.0482142857142858*G0_2_1 + 0.0482142857142856*G0_2_2; A[297] = -0.0241071428571429*G0_0_1 - 0.0241071428571429*G0_0_2 - 0.0241071428571431*G0_1_0 - 0.144642857142857*G0_1_1 - 0.144642857142857*G0_1_2 - 0.0241071428571431*G0_2_0 - 0.144642857142857*G0_2_1 - 0.144642857142857*G0_2_2; A[298] = -0.0482142857142858*G0_0_0 - 0.024107142857143*G0_0_1 - 0.16875*G0_0_2 - 0.16875*G0_1_0 - 0.0482142857142858*G0_1_1 - 0.289285714285714*G0_1_2 - 0.16875*G0_2_0 - 0.0482142857142858*G0_2_1 - 0.289285714285714*G0_2_2; A[299] = -0.0482142857142857*G0_0_0 - 0.16875*G0_0_1 - 0.0241071428571429*G0_0_2 - 0.16875*G0_1_0 - 0.289285714285714*G0_1_1 - 0.0482142857142858*G0_1_2 - 0.16875*G0_2_0 - 0.289285714285714*G0_2_1 - 0.0482142857142857*G0_2_2; A[300] = 0.0482142857142857*G0_0_0 + 0.0482142857142857*G0_0_1 + 0.0482142857142857*G0_0_2 + 0.0133928571428571*G0_1_0 + 0.0133928571428571*G0_1_1 + 0.0133928571428571*G0_1_2 + 0.0133928571428571*G0_2_0 + 0.0133928571428571*G0_2_1 + 0.0133928571428571*G0_2_2; A[301] = -0.0964285714285714*G0_0_0 - 0.0616071428571429*G0_1_0 - 0.0616071428571429*G0_2_0; A[302] = -0.0133928571428571*G0_1_1 - 0.0133928571428571*G0_2_1; A[303] = -0.0133928571428571*G0_1_2 - 0.0133928571428571*G0_2_2; A[304] = 0.0241071428571428*G0_1_1 + 0.0241071428571428*G0_1_2 + 0.0241071428571428*G0_2_1 + 0.0241071428571429*G0_2_2; A[305] = 0.0241071428571428*G0_1_1 + 0.0241071428571428*G0_1_2 + 0.0241071428571428*G0_2_1 + 0.0241071428571428*G0_2_2; A[306] = 0.0241071428571428*G0_0_0 - 0.0964285714285716*G0_0_2 - 0.0964285714285712*G0_1_0 - 0.192857142857143*G0_1_2 - 0.0964285714285712*G0_2_0 - 0.192857142857143*G0_2_2; A[307] = 0.024107142857143*G0_0_2 + 0.0241071428571429*G0_1_0 + 0.0723214285714286*G0_1_2 + 0.0241071428571429*G0_2_0 + 0.0723214285714286*G0_2_2; A[308] = 0.0241071428571427*G0_0_0 - 0.0964285714285716*G0_0_1 - 0.0964285714285712*G0_1_0 - 0.192857142857143*G0_1_1 - 0.0964285714285712*G0_2_0 - 0.192857142857143*G0_2_1; A[309] = 0.0241071428571429*G0_0_1 + 0.0241071428571428*G0_1_0 + 0.0723214285714286*G0_1_1 + 0.0241071428571429*G0_2_0 + 0.0723214285714287*G0_2_1; A[310] = 0.0241071428571429*G0_0_0 + 0.0241071428571429*G0_0_1 - 0.0241071428571428*G0_0_2 - 0.0241071428571428*G0_1_0 - 0.0241071428571427*G0_1_1 - 0.0241071428571428*G0_2_0 - 0.0241071428571427*G0_2_1; A[311] = -0.0241071428571429*G0_0_2 - 0.0241071428571429*G0_1_0 - 0.0241071428571429*G0_1_1 - 0.0241071428571429*G0_2_0 - 0.0241071428571429*G0_2_1; A[312] = 0.0241071428571428*G0_0_0 - 0.0241071428571429*G0_0_1 + 0.0241071428571428*G0_0_2 - 0.0241071428571428*G0_1_0 - 0.0241071428571428*G0_1_2 - 0.0241071428571427*G0_2_0 - 0.0241071428571427*G0_2_2; A[313] = -0.0241071428571428*G0_0_1 - 0.0241071428571428*G0_1_0 - 0.0241071428571428*G0_1_2 - 0.0241071428571429*G0_2_0 - 0.0241071428571428*G0_2_2; A[314] = -0.192857142857143*G0_0_0 - 0.144642857142857*G0_0_1 - 0.144642857142857*G0_0_2 - 0.0482142857142858*G0_1_0 - 0.0723214285714285*G0_1_1 - 0.0723214285714286*G0_1_2 - 0.0482142857142858*G0_2_0 - 0.0723214285714285*G0_2_1 - 0.0723214285714285*G0_2_2; A[315] = 0.241071428571429*G0_0_0 + 0.0964285714285716*G0_0_1 + 0.0964285714285715*G0_0_2 + 0.0964285714285716*G0_1_0 + 0.192857142857143*G0_1_1 + 0.192857142857143*G0_1_2 + 0.0964285714285715*G0_2_0 + 0.192857142857143*G0_2_1 + 0.192857142857143*G0_2_2; A[316] = 0.0241071428571427*G0_0_1 + 0.0241071428571426*G0_0_2 + 0.0241071428571428*G0_1_0 - 0.0964285714285713*G0_1_1 - 0.0964285714285713*G0_1_2 + 0.0241071428571428*G0_2_0 - 0.0964285714285713*G0_2_1 - 0.0964285714285712*G0_2_2; A[317] = -0.0241071428571428*G0_0_1 - 0.0241071428571428*G0_0_2 - 0.0241071428571428*G0_1_0 - 0.0241071428571428*G0_2_0; A[318] = -0.0482142857142857*G0_0_0 - 0.0241071428571427*G0_0_1 + 0.120535714285714*G0_0_2 + 0.120535714285714*G0_1_0 + 0.0964285714285713*G0_1_1 + 0.120535714285714*G0_2_0 + 0.0964285714285713*G0_2_1; A[319] = -0.0482142857142855*G0_0_0 + 0.120535714285714*G0_0_1 - 0.0241071428571426*G0_0_2 + 0.120535714285714*G0_1_0 + 0.0964285714285712*G0_1_2 + 0.120535714285714*G0_2_0 + 0.0964285714285712*G0_2_2; A[320] = -0.0321428571428573*G0_0_0 - 0.0321428571428572*G0_0_1 - 0.0321428571428572*G0_0_2 - 0.0321428571428573*G0_1_0 - 0.0321428571428573*G0_1_1 - 0.0321428571428573*G0_1_2 - 0.0321428571428572*G0_2_0 - 0.0321428571428572*G0_2_1 - 0.0321428571428572*G0_2_2; A[321] = 0.0321428571428572*G0_0_0 - 0.0160714285714284*G0_1_0 - 0.0160714285714284*G0_2_0; A[322] = -0.0160714285714287*G0_0_1 + 0.032142857142857*G0_1_1 - 0.0160714285714286*G0_2_1; A[323] = -0.0160714285714286*G0_0_2 - 0.0160714285714285*G0_1_2 + 0.0321428571428571*G0_2_2; A[324] = 0.241071428571429*G0_0_1 + 0.0964285714285713*G0_0_2 - 0.0482142857142855*G0_1_1 - 0.0241071428571429*G0_1_2 + 0.120535714285714*G0_2_1 + 0.0964285714285715*G0_2_2; A[325] = 0.0964285714285714*G0_0_1 + 0.241071428571429*G0_0_2 + 0.0964285714285715*G0_1_1 + 0.120535714285715*G0_1_2 - 0.024107142857143*G0_2_1 - 0.0482142857142857*G0_2_2; A[326] = -0.0482142857142857*G0_0_0 - 0.0241071428571427*G0_0_2 + 0.241071428571428*G0_1_0 + 0.0964285714285714*G0_1_2 + 0.120535714285714*G0_2_0 + 0.0964285714285714*G0_2_2; A[327] = 0.0964285714285714*G0_0_0 + 0.120535714285714*G0_0_2 + 0.0964285714285714*G0_1_0 + 0.241071428571428*G0_1_2 - 0.024107142857143*G0_2_0 - 0.0482142857142858*G0_2_2; A[328] = -0.0482142857142857*G0_0_0 - 0.0241071428571428*G0_0_1 + 0.120535714285714*G0_1_0 + 0.0964285714285714*G0_1_1 + 0.241071428571428*G0_2_0 + 0.0964285714285713*G0_2_1; A[329] = 0.0964285714285713*G0_0_0 + 0.120535714285714*G0_0_1 - 0.0241071428571429*G0_1_0 - 0.0482142857142858*G0_1_1 + 0.0964285714285715*G0_2_0 + 0.241071428571428*G0_2_1; A[330] = 0.0482142857142861*G0_0_0 + 0.048214285714286*G0_0_1 + 0.0241071428571431*G0_0_2 + 0.048214285714286*G0_1_0 + 0.0482142857142859*G0_1_1 + 0.0241071428571432*G0_1_2 + 0.024107142857143*G0_2_0 + 0.024107142857143*G0_2_1; A[331] = -0.0964285714285715*G0_0_0 - 0.0964285714285714*G0_0_1 + 0.0241071428571428*G0_0_2 - 0.0964285714285714*G0_1_0 - 0.0964285714285715*G0_1_1 + 0.0241071428571428*G0_1_2 + 0.024107142857143*G0_2_0 + 0.024107142857143*G0_2_1; A[332] = 0.048214285714286*G0_0_0 + 0.0241071428571429*G0_0_1 + 0.0482142857142859*G0_0_2 + 0.024107142857143*G0_1_0 + 0.0241071428571431*G0_1_2 + 0.0482142857142857*G0_2_0 + 0.0241071428571429*G0_2_1 + 0.0482142857142857*G0_2_2; A[333] = -0.0964285714285713*G0_0_0 + 0.024107142857143*G0_0_1 - 0.0964285714285713*G0_0_2 + 0.0241071428571429*G0_1_0 + 0.024107142857143*G0_1_2 - 0.0964285714285715*G0_2_0 + 0.0241071428571429*G0_2_1 - 0.0964285714285714*G0_2_2; A[334] = 0.0241071428571431*G0_0_1 + 0.0241071428571431*G0_0_2 + 0.024107142857143*G0_1_0 + 0.0482142857142858*G0_1_1 + 0.0482142857142858*G0_1_2 + 0.0241071428571429*G0_2_0 + 0.0482142857142856*G0_2_1 + 0.0482142857142856*G0_2_2; A[335] = 0.0241071428571428*G0_0_1 + 0.0241071428571428*G0_0_2 + 0.0241071428571427*G0_1_0 - 0.0964285714285713*G0_1_1 - 0.0964285714285713*G0_1_2 + 0.0241071428571426*G0_2_0 - 0.0964285714285713*G0_2_1 - 0.0964285714285712*G0_2_2; A[336] = 0.578571428571429*G0_0_0 + 0.289285714285714*G0_0_1 + 0.289285714285714*G0_0_2 + 0.289285714285714*G0_1_0 + 0.578571428571428*G0_1_1 + 0.289285714285713*G0_1_2 + 0.289285714285714*G0_2_0 + 0.289285714285713*G0_2_1 + 0.578571428571427*G0_2_2; A[337] = -0.578571428571429*G0_0_0 - 0.289285714285714*G0_0_1 - 0.289285714285714*G0_0_2 - 0.289285714285714*G0_1_0 - 0.144642857142858*G0_1_2 - 0.289285714285714*G0_2_0 - 0.144642857142857*G0_2_1; A[338] = -0.289285714285714*G0_0_1 - 0.144642857142857*G0_0_2 - 0.289285714285714*G0_1_0 - 0.578571428571428*G0_1_1 - 0.289285714285714*G0_1_2 - 0.144642857142857*G0_2_0 - 0.289285714285714*G0_2_1; A[339] = -0.144642857142857*G0_0_1 - 0.289285714285714*G0_0_2 - 0.144642857142857*G0_1_0 - 0.289285714285714*G0_1_2 - 0.289285714285713*G0_2_0 - 0.289285714285714*G0_2_1 - 0.578571428571427*G0_2_2; A[340] = 0.0321428571428573*G0_0_0 + 0.0321428571428572*G0_0_1 + 0.0321428571428572*G0_0_2 + 0.0482142857142857*G0_1_0 + 0.0482142857142856*G0_1_1 + 0.0482142857142857*G0_1_2 + 0.0482142857142857*G0_2_0 + 0.0482142857142857*G0_2_1 + 0.0482142857142857*G0_2_2; A[341] = -0.0321428571428572*G0_0_0; A[342] = 0.0160714285714287*G0_0_1 + 0.0482142857142857*G0_1_1; A[343] = 0.0160714285714286*G0_0_2 + 0.0482142857142857*G0_2_2; A[344] = -0.241071428571429*G0_0_1 - 0.0964285714285713*G0_0_2 - 0.289285714285714*G0_1_1 - 0.120535714285714*G0_1_2 - 0.120535714285714*G0_2_1; A[345] = -0.0964285714285714*G0_0_1 - 0.241071428571429*G0_0_2 - 0.120535714285714*G0_1_2 - 0.120535714285714*G0_2_1 - 0.289285714285714*G0_2_2; A[346] = 0.0482142857142857*G0_0_0 + 0.0241071428571427*G0_0_2 + 0.0241071428571426*G0_2_0; A[347] = -0.0964285714285714*G0_0_0 - 0.120535714285714*G0_0_2 - 0.120535714285714*G0_2_0 - 0.144642857142857*G0_2_2; A[348] = 0.0482142857142857*G0_0_0 + 0.0241071428571428*G0_0_1 + 0.0241071428571427*G0_1_0; A[349] = -0.0964285714285713*G0_0_0 - 0.120535714285714*G0_0_1 - 0.120535714285714*G0_1_0 - 0.144642857142857*G0_1_1; A[350] = -0.0482142857142861*G0_0_0 - 0.0482142857142861*G0_0_1 - 0.0241071428571432*G0_0_2 - 0.289285714285714*G0_1_0 - 0.289285714285714*G0_1_1 - 0.16875*G0_1_2 - 0.16875*G0_2_0 - 0.16875*G0_2_1 - 0.0482142857142858*G0_2_2; A[351] = 0.0964285714285715*G0_0_0 + 0.0964285714285714*G0_0_1 - 0.0241071428571427*G0_0_2 + 0.120535714285714*G0_1_2 + 0.120535714285714*G0_2_0 + 0.120535714285714*G0_2_1 - 0.0482142857142857*G0_2_2; A[352] = -0.048214285714286*G0_0_0 - 0.0241071428571429*G0_0_1 - 0.0482142857142859*G0_0_2 - 0.16875*G0_1_0 - 0.0482142857142856*G0_1_1 - 0.16875*G0_1_2 - 0.289285714285714*G0_2_0 - 0.16875*G0_2_1 - 0.289285714285714*G0_2_2; A[353] = 0.0964285714285713*G0_0_0 - 0.024107142857143*G0_0_1 + 0.0964285714285713*G0_0_2 + 0.120535714285714*G0_1_0 - 0.0482142857142859*G0_1_1 + 0.120535714285714*G0_1_2 + 0.120535714285714*G0_2_1; A[354] = -0.0241071428571431*G0_0_1 - 0.0241071428571431*G0_0_2 - 0.024107142857143*G0_1_0 - 0.144642857142857*G0_1_1 - 0.144642857142857*G0_1_2 - 0.0241071428571429*G0_2_0 - 0.144642857142857*G0_2_1 - 0.144642857142857*G0_2_2; A[355] = -0.0241071428571428*G0_0_1 - 0.0241071428571428*G0_0_2 - 0.0241071428571428*G0_1_0 - 0.0241071428571428*G0_2_0; A[356] = -0.578571428571429*G0_0_0 - 0.289285714285714*G0_0_1 - 0.289285714285714*G0_0_2 - 0.289285714285714*G0_1_0 - 0.144642857142857*G0_1_2 - 0.289285714285714*G0_2_0 - 0.144642857142858*G0_2_1; A[357] = 0.578571428571429*G0_0_0 + 0.289285714285715*G0_0_1 + 0.289285714285715*G0_0_2 + 0.289285714285715*G0_1_0 + 0.578571428571428*G0_1_1 + 0.289285714285714*G0_1_2 + 0.289285714285715*G0_2_0 + 0.289285714285714*G0_2_1 + 0.578571428571429*G0_2_2; A[358] = 0.289285714285714*G0_0_1 + 0.144642857142857*G0_0_2 + 0.289285714285714*G0_1_0 + 0.144642857142858*G0_1_2 + 0.144642857142858*G0_2_0 + 0.144642857142858*G0_2_1 + 0.289285714285715*G0_2_2; A[359] = 0.144642857142857*G0_0_1 + 0.289285714285714*G0_0_2 + 0.144642857142857*G0_1_0 + 0.289285714285715*G0_1_1 + 0.144642857142857*G0_1_2 + 0.289285714285714*G0_2_0 + 0.144642857142857*G0_2_1; A[360] = 0.0482142857142857*G0_0_0 + 0.0482142857142857*G0_0_1 + 0.0482142857142857*G0_0_2 + 0.0321428571428573*G0_1_0 + 0.0321428571428573*G0_1_1 + 0.0321428571428573*G0_1_2 + 0.0482142857142858*G0_2_0 + 0.0482142857142858*G0_2_1 + 0.0482142857142859*G0_2_2; A[361] = 0.0482142857142857*G0_0_0 + 0.0160714285714284*G0_1_0; A[362] = -0.0321428571428571*G0_1_1; A[363] = 0.0160714285714285*G0_1_2 + 0.0482142857142857*G0_2_2; A[364] = 0.0482142857142855*G0_1_1 + 0.0241071428571429*G0_1_2 + 0.0241071428571426*G0_2_1; A[365] = -0.0964285714285715*G0_1_1 - 0.120535714285715*G0_1_2 - 0.120535714285714*G0_2_1 - 0.144642857142857*G0_2_2; A[366] = -0.289285714285714*G0_0_0 - 0.120535714285714*G0_0_2 - 0.241071428571428*G0_1_0 - 0.0964285714285714*G0_1_2 - 0.120535714285714*G0_2_0; A[367] = -0.120535714285714*G0_0_2 - 0.0964285714285715*G0_1_0 - 0.241071428571429*G0_1_2 - 0.120535714285714*G0_2_0 - 0.289285714285714*G0_2_2; A[368] = -0.144642857142857*G0_0_0 - 0.120535714285714*G0_0_1 - 0.120535714285714*G0_1_0 - 0.0964285714285715*G0_1_1; A[369] = 0.0241071428571427*G0_0_1 + 0.0241071428571429*G0_1_0 + 0.0482142857142859*G0_1_1; A[370] = -0.289285714285714*G0_0_0 - 0.289285714285714*G0_0_1 - 0.16875*G0_0_2 - 0.0482142857142861*G0_1_0 - 0.048214285714286*G0_1_1 - 0.0241071428571433*G0_1_2 - 0.16875*G0_2_0 - 0.16875*G0_2_1 - 0.048214285714286*G0_2_2; A[371] = 0.120535714285714*G0_0_2 + 0.0964285714285715*G0_1_0 + 0.0964285714285715*G0_1_1 - 0.0241071428571428*G0_1_2 + 0.120535714285714*G0_2_0 + 0.120535714285714*G0_2_1 - 0.0482142857142856*G0_2_2; A[372] = -0.144642857142857*G0_0_0 - 0.024107142857143*G0_0_1 - 0.144642857142857*G0_0_2 - 0.024107142857143*G0_1_0 - 0.0241071428571431*G0_1_2 - 0.144642857142858*G0_2_0 - 0.0241071428571431*G0_2_1 - 0.144642857142858*G0_2_2; A[373] = -0.0241071428571428*G0_0_1 - 0.0241071428571429*G0_1_0 - 0.0241071428571429*G0_1_2 - 0.0241071428571428*G0_2_1; A[374] = -0.0482142857142858*G0_0_0 - 0.16875*G0_0_1 - 0.16875*G0_0_2 - 0.024107142857143*G0_1_0 - 0.0482142857142858*G0_1_1 - 0.0482142857142858*G0_1_2 - 0.16875*G0_2_0 - 0.289285714285714*G0_2_1 - 0.289285714285714*G0_2_2; A[375] = -0.0482142857142857*G0_0_0 + 0.120535714285714*G0_0_1 + 0.120535714285714*G0_0_2 - 0.0241071428571427*G0_1_0 + 0.0964285714285714*G0_1_1 + 0.0964285714285713*G0_1_2 + 0.120535714285714*G0_2_0; A[376] = -0.289285714285714*G0_0_1 - 0.144642857142857*G0_0_2 - 0.289285714285714*G0_1_0 - 0.578571428571428*G0_1_1 - 0.289285714285714*G0_1_2 - 0.144642857142857*G0_2_0 - 0.289285714285714*G0_2_1; A[377] = 0.289285714285714*G0_0_1 + 0.144642857142858*G0_0_2 + 0.289285714285714*G0_1_0 + 0.144642857142858*G0_1_2 + 0.144642857142857*G0_2_0 + 0.144642857142858*G0_2_1 + 0.289285714285715*G0_2_2; A[378] = 0.578571428571428*G0_0_0 + 0.289285714285714*G0_0_1 + 0.289285714285715*G0_0_2 + 0.289285714285714*G0_1_0 + 0.578571428571428*G0_1_1 + 0.289285714285714*G0_1_2 + 0.289285714285715*G0_2_0 + 0.289285714285714*G0_2_1 + 0.578571428571428*G0_2_2; A[379] = 0.289285714285714*G0_0_0 + 0.144642857142857*G0_0_1 + 0.144642857142857*G0_0_2 + 0.144642857142857*G0_1_0 + 0.289285714285714*G0_1_2 + 0.144642857142858*G0_2_0 + 0.289285714285714*G0_2_1; A[380] = 0.0482142857142856*G0_0_0 + 0.0482142857142856*G0_0_1 + 0.0482142857142857*G0_0_2 + 0.0482142857142857*G0_1_0 + 0.0482142857142856*G0_1_1 + 0.0482142857142857*G0_1_2 + 0.0321428571428572*G0_2_0 + 0.0321428571428572*G0_2_1 + 0.0321428571428572*G0_2_2; A[381] = 0.0482142857142856*G0_0_0 + 0.0160714285714284*G0_2_0; A[382] = 0.0482142857142856*G0_1_1 + 0.0160714285714286*G0_2_1; A[383] = -0.0321428571428571*G0_2_2; A[384] = -0.144642857142857*G0_1_1 - 0.120535714285714*G0_1_2 - 0.120535714285714*G0_2_1 - 0.0964285714285715*G0_2_2; A[385] = 0.0241071428571427*G0_1_2 + 0.0241071428571429*G0_2_1 + 0.0482142857142856*G0_2_2; A[386] = -0.144642857142857*G0_0_0 - 0.120535714285714*G0_0_2 - 0.120535714285714*G0_2_0 - 0.0964285714285714*G0_2_2; A[387] = 0.0241071428571425*G0_0_2 + 0.024107142857143*G0_2_0 + 0.0482142857142857*G0_2_2; A[388] = -0.289285714285713*G0_0_0 - 0.120535714285714*G0_0_1 - 0.120535714285714*G0_1_0 - 0.241071428571428*G0_2_0 - 0.0964285714285713*G0_2_1; A[389] = -0.120535714285714*G0_0_1 - 0.120535714285714*G0_1_0 - 0.289285714285714*G0_1_1 - 0.0964285714285715*G0_2_0 - 0.241071428571428*G0_2_1; A[390] = -0.144642857142857*G0_0_0 - 0.144642857142857*G0_0_1 - 0.024107142857143*G0_0_2 - 0.144642857142857*G0_1_0 - 0.144642857142857*G0_1_1 - 0.024107142857143*G0_1_2 - 0.024107142857143*G0_2_0 - 0.024107142857143*G0_2_1; A[391] = -0.0241071428571429*G0_0_2 - 0.0241071428571428*G0_1_2 - 0.024107142857143*G0_2_0 - 0.024107142857143*G0_2_1; A[392] = -0.289285714285714*G0_0_0 - 0.16875*G0_0_1 - 0.289285714285714*G0_0_2 - 0.16875*G0_1_0 - 0.0482142857142856*G0_1_1 - 0.16875*G0_1_2 - 0.0482142857142858*G0_2_0 - 0.0241071428571429*G0_2_1 - 0.0482142857142858*G0_2_2; A[393] = 0.120535714285714*G0_0_1 + 0.120535714285714*G0_1_0 - 0.0482142857142858*G0_1_1 + 0.120535714285714*G0_1_2 + 0.0964285714285715*G0_2_0 - 0.0241071428571429*G0_2_1 + 0.0964285714285714*G0_2_2; A[394] = -0.0482142857142857*G0_0_0 - 0.16875*G0_0_1 - 0.16875*G0_0_2 - 0.16875*G0_1_0 - 0.289285714285714*G0_1_1 - 0.289285714285714*G0_1_2 - 0.0241071428571429*G0_2_0 - 0.0482142857142858*G0_2_1 - 0.0482142857142857*G0_2_2; A[395] = -0.0482142857142855*G0_0_0 + 0.120535714285714*G0_0_1 + 0.120535714285714*G0_0_2 + 0.120535714285714*G0_1_0 - 0.0241071428571426*G0_2_0 + 0.0964285714285713*G0_2_1 + 0.0964285714285712*G0_2_2; A[396] = -0.144642857142857*G0_0_1 - 0.289285714285713*G0_0_2 - 0.144642857142857*G0_1_0 - 0.289285714285714*G0_1_2 - 0.289285714285714*G0_2_0 - 0.289285714285714*G0_2_1 - 0.578571428571427*G0_2_2; A[397] = 0.144642857142857*G0_0_1 + 0.289285714285714*G0_0_2 + 0.144642857142857*G0_1_0 + 0.289285714285715*G0_1_1 + 0.144642857142857*G0_1_2 + 0.289285714285714*G0_2_0 + 0.144642857142857*G0_2_1; A[398] = 0.289285714285714*G0_0_0 + 0.144642857142857*G0_0_1 + 0.144642857142858*G0_0_2 + 0.144642857142857*G0_1_0 + 0.289285714285714*G0_1_2 + 0.144642857142857*G0_2_0 + 0.289285714285714*G0_2_1; A[399] = 0.578571428571427*G0_0_0 + 0.289285714285714*G0_0_1 + 0.289285714285713*G0_0_2 + 0.289285714285714*G0_1_0 + 0.578571428571428*G0_1_1 + 0.289285714285714*G0_1_2 + 0.289285714285713*G0_2_0 + 0.289285714285714*G0_2_1 + 0.578571428571427*G0_2_2; } /// Constructor poisson3d_3_cell_integral_1_otherwise::poisson3d_3_cell_integral_1_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson3d_3_cell_integral_1_otherwise::~poisson3d_3_cell_integral_1_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson3d_3_cell_integral_1_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 20 // Number of operations (multiply-add pairs) for tensor contraction: 270 // Total number of operations (multiply-add pairs): 293 // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0 = det*w[0][0]*(1.0); const double G0_1 = det*w[0][1]*(1.0); const double G0_2 = det*w[0][2]*(1.0); const double G0_3 = det*w[0][3]*(1.0); const double G0_4 = det*w[0][4]*(1.0); const double G0_5 = det*w[0][5]*(1.0); const double G0_6 = det*w[0][6]*(1.0); const double G0_7 = det*w[0][7]*(1.0); const double G0_8 = det*w[0][8]*(1.0); const double G0_9 = det*w[0][9]*(1.0); const double G0_10 = det*w[0][10]*(1.0); const double G0_11 = det*w[0][11]*(1.0); const double G0_12 = det*w[0][12]*(1.0); const double G0_13 = det*w[0][13]*(1.0); const double G0_14 = det*w[0][14]*(1.0); const double G0_15 = det*w[0][15]*(1.0); const double G0_16 = det*w[0][16]*(1.0); const double G0_17 = det*w[0][17]*(1.0); const double G0_18 = det*w[0][18]*(1.0); const double G0_19 = det*w[0][19]*(1.0); // Compute element tensor A[0] = 0.000595238095238099*G0_0 + 7.4404761904762e-05*G0_1 + 7.4404761904762e-05*G0_2 + 7.44047619047623e-05*G0_3 + 0.000111607142857144*G0_4 + 0.000111607142857143*G0_5 + 0.000111607142857143*G0_6 + 0.000111607142857142*G0_7 + 0.000111607142857143*G0_8 + 0.000111607142857143*G0_9 - 0.000446428571428571*G0_10 + 0.000223214285714285*G0_11 - 0.000446428571428571*G0_12 + 0.000223214285714286*G0_13 - 0.000446428571428572*G0_14 + 0.000223214285714285*G0_15 + 0.00133928571428571*G0_16 + 0.000669642857142859*G0_17 + 0.00066964285714286*G0_18 + 0.000669642857142859*G0_19; A[1] = 7.44047619047621e-05*G0_0 + 0.000595238095238098*G0_1 + 7.44047619047615e-05*G0_2 + 7.44047619047618e-05*G0_3 + 0.000111607142857143*G0_4 + 0.000111607142857143*G0_5 - 0.000446428571428571*G0_6 + 0.000223214285714286*G0_7 - 0.000446428571428572*G0_8 + 0.000223214285714285*G0_9 + 0.000111607142857142*G0_10 + 0.000111607142857143*G0_11 + 0.000111607142857144*G0_12 + 0.000111607142857143*G0_13 + 0.000223214285714285*G0_14 - 0.000446428571428571*G0_15 + 0.000669642857142856*G0_16 + 0.00133928571428571*G0_17 + 0.000669642857142856*G0_18 + 0.000669642857142855*G0_19; A[2] = 7.44047619047619e-05*G0_0 + 7.44047619047615e-05*G0_1 + 0.000595238095238097*G0_2 + 7.44047619047617e-05*G0_3 - 0.000446428571428572*G0_4 + 0.000223214285714287*G0_5 + 0.000111607142857143*G0_6 + 0.000111607142857143*G0_7 + 0.000223214285714286*G0_8 - 0.000446428571428572*G0_9 + 0.000111607142857142*G0_10 + 0.000111607142857143*G0_11 + 0.000223214285714286*G0_12 - 0.000446428571428571*G0_13 + 0.000111607142857143*G0_14 + 0.000111607142857143*G0_15 + 0.000669642857142853*G0_16 + 0.000669642857142853*G0_17 + 0.00133928571428571*G0_18 + 0.000669642857142854*G0_19; A[3] = 7.44047619047623e-05*G0_0 + 7.44047619047618e-05*G0_1 + 7.44047619047617e-05*G0_2 + 0.000595238095238098*G0_3 + 0.000223214285714286*G0_4 - 0.000446428571428571*G0_5 + 0.000223214285714286*G0_6 - 0.000446428571428571*G0_7 + 0.000111607142857142*G0_8 + 0.000111607142857143*G0_9 + 0.000223214285714285*G0_10 - 0.000446428571428572*G0_11 + 0.000111607142857143*G0_12 + 0.000111607142857143*G0_13 + 0.000111607142857143*G0_14 + 0.000111607142857143*G0_15 + 0.000669642857142858*G0_16 + 0.000669642857142858*G0_17 + 0.000669642857142858*G0_18 + 0.00133928571428571*G0_19; A[4] = 0.000111607142857143*G0_0 + 0.000111607142857143*G0_1 - 0.000446428571428572*G0_2 + 0.000223214285714286*G0_3 + 0.00401785714285714*G0_4 - 0.00200892857142857*G0_5 - 0.00100446428571429*G0_7 - 0.00100446428571429*G0_8 + 0.00200892857142857*G0_9 - 0.00100446428571429*G0_11 - 0.00100446428571429*G0_12 + 0.00200892857142857*G0_13 - 0.00200892857142857*G0_18; A[5] = 0.000111607142857143*G0_0 + 0.000111607142857143*G0_1 + 0.000223214285714287*G0_2 - 0.000446428571428571*G0_3 - 0.00200892857142857*G0_4 + 0.00401785714285715*G0_5 - 0.00100446428571429*G0_6 + 0.00200892857142857*G0_7 - 0.00100446428571429*G0_9 - 0.00100446428571429*G0_10 + 0.00200892857142857*G0_11 - 0.00100446428571429*G0_13 - 0.00200892857142857*G0_19; A[6] = 0.000111607142857143*G0_0 - 0.000446428571428571*G0_1 + 0.000111607142857143*G0_2 + 0.000223214285714286*G0_3 - 0.00100446428571429*G0_5 + 0.00401785714285714*G0_6 - 0.00200892857142857*G0_7 + 0.00200892857142857*G0_8 - 0.00100446428571429*G0_9 - 0.00100446428571429*G0_11 - 0.00100446428571429*G0_14 + 0.00200892857142857*G0_15 - 0.00200892857142857*G0_17; A[7] = 0.000111607142857142*G0_0 + 0.000223214285714286*G0_1 + 0.000111607142857143*G0_2 - 0.000446428571428571*G0_3 - 0.00100446428571429*G0_4 + 0.00200892857142857*G0_5 - 0.00200892857142857*G0_6 + 0.00401785714285715*G0_7 - 0.00100446428571429*G0_8 - 0.00100446428571429*G0_10 + 0.00200892857142857*G0_11 - 0.00100446428571429*G0_15 - 0.00200892857142858*G0_19; A[8] = 0.000111607142857143*G0_0 - 0.000446428571428572*G0_1 + 0.000223214285714286*G0_2 + 0.000111607142857142*G0_3 - 0.00100446428571429*G0_4 + 0.00200892857142857*G0_6 - 0.00100446428571429*G0_7 + 0.00401785714285714*G0_8 - 0.00200892857142857*G0_9 - 0.00100446428571429*G0_13 - 0.00100446428571429*G0_14 + 0.00200892857142857*G0_15 - 0.00200892857142857*G0_17; A[9] = 0.000111607142857143*G0_0 + 0.000223214285714285*G0_1 - 0.000446428571428572*G0_2 + 0.000111607142857143*G0_3 + 0.00200892857142857*G0_4 - 0.00100446428571429*G0_5 - 0.00100446428571429*G0_6 - 0.00200892857142857*G0_8 + 0.00401785714285714*G0_9 - 0.00100446428571429*G0_12 + 0.00200892857142857*G0_13 - 0.00100446428571429*G0_15 - 0.00200892857142857*G0_18; A[10] = -0.000446428571428571*G0_0 + 0.000111607142857142*G0_1 + 0.000111607142857142*G0_2 + 0.000223214285714285*G0_3 - 0.00100446428571429*G0_5 - 0.00100446428571429*G0_7 + 0.00401785714285714*G0_10 - 0.00200892857142857*G0_11 + 0.00200892857142857*G0_12 - 0.00100446428571429*G0_13 + 0.00200892857142857*G0_14 - 0.00100446428571429*G0_15 - 0.00200892857142858*G0_16; A[11] = 0.000223214285714285*G0_0 + 0.000111607142857143*G0_1 + 0.000111607142857143*G0_2 - 0.000446428571428572*G0_3 - 0.00100446428571429*G0_4 + 0.00200892857142857*G0_5 - 0.00100446428571429*G0_6 + 0.00200892857142857*G0_7 - 0.00200892857142857*G0_10 + 0.00401785714285715*G0_11 - 0.00100446428571429*G0_12 - 0.00100446428571429*G0_14 - 0.00200892857142858*G0_19; A[12] = -0.000446428571428571*G0_0 + 0.000111607142857144*G0_1 + 0.000223214285714286*G0_2 + 0.000111607142857143*G0_3 - 0.00100446428571429*G0_4 - 0.00100446428571429*G0_9 + 0.00200892857142857*G0_10 - 0.00100446428571429*G0_11 + 0.00401785714285715*G0_12 - 0.00200892857142857*G0_13 + 0.00200892857142857*G0_14 - 0.00100446428571429*G0_15 - 0.00200892857142857*G0_16; A[13] = 0.000223214285714286*G0_0 + 0.000111607142857143*G0_1 - 0.000446428571428571*G0_2 + 0.000111607142857143*G0_3 + 0.00200892857142857*G0_4 - 0.00100446428571429*G0_5 - 0.00100446428571429*G0_8 + 0.00200892857142857*G0_9 - 0.00100446428571429*G0_10 - 0.00200892857142857*G0_12 + 0.00401785714285715*G0_13 - 0.00100446428571429*G0_14 - 0.00200892857142857*G0_18; A[14] = -0.000446428571428572*G0_0 + 0.000223214285714285*G0_1 + 0.000111607142857143*G0_2 + 0.000111607142857143*G0_3 - 0.00100446428571429*G0_6 - 0.00100446428571429*G0_8 + 0.00200892857142857*G0_10 - 0.00100446428571429*G0_11 + 0.00200892857142857*G0_12 - 0.00100446428571429*G0_13 + 0.00401785714285715*G0_14 - 0.00200892857142857*G0_15 - 0.00200892857142858*G0_16; A[15] = 0.000223214285714285*G0_0 - 0.000446428571428571*G0_1 + 0.000111607142857143*G0_2 + 0.000111607142857143*G0_3 + 0.00200892857142857*G0_6 - 0.00100446428571429*G0_7 + 0.00200892857142857*G0_8 - 0.00100446428571429*G0_9 - 0.00100446428571429*G0_10 - 0.00100446428571429*G0_12 - 0.00200892857142857*G0_14 + 0.00401785714285715*G0_15 - 0.00200892857142857*G0_17; A[16] = 0.00133928571428571*G0_0 + 0.000669642857142856*G0_1 + 0.000669642857142854*G0_2 + 0.000669642857142858*G0_3 - 0.00200892857142858*G0_10 - 0.00200892857142857*G0_12 - 0.00200892857142858*G0_14 + 0.0160714285714286*G0_16 + 0.00803571428571428*G0_17 + 0.0080357142857143*G0_18 + 0.00803571428571429*G0_19; A[17] = 0.000669642857142859*G0_0 + 0.00133928571428571*G0_1 + 0.000669642857142853*G0_2 + 0.000669642857142858*G0_3 - 0.00200892857142857*G0_6 - 0.00200892857142857*G0_8 - 0.00200892857142857*G0_15 + 0.00803571428571428*G0_16 + 0.0160714285714286*G0_17 + 0.00803571428571429*G0_18 + 0.00803571428571428*G0_19; A[18] = 0.00066964285714286*G0_0 + 0.000669642857142856*G0_1 + 0.00133928571428571*G0_2 + 0.000669642857142858*G0_3 - 0.00200892857142857*G0_4 - 0.00200892857142857*G0_9 - 0.00200892857142857*G0_13 + 0.0080357142857143*G0_16 + 0.00803571428571429*G0_17 + 0.0160714285714286*G0_18 + 0.00803571428571429*G0_19; A[19] = 0.000669642857142859*G0_0 + 0.000669642857142855*G0_1 + 0.000669642857142854*G0_2 + 0.00133928571428571*G0_3 - 0.00200892857142857*G0_5 - 0.00200892857142857*G0_7 - 0.00200892857142858*G0_11 + 0.00803571428571429*G0_16 + 0.00803571428571428*G0_17 + 0.00803571428571429*G0_18 + 0.0160714285714286*G0_19; } /// Constructor poisson3d_3_form_0::poisson3d_3_form_0() : ufc::form() { // Do nothing } /// Destructor poisson3d_3_form_0::~poisson3d_3_form_0() { // Do nothing } /// Return a string identifying the form const char* poisson3d_3_form_0::signature() const { return "190c518f95a0021b25d0590f58e052d90049eb7c8e737bd7e808ad916c70ec889caf06610308eecc54b542e3d8fd6cf3de212917c0a2124d4101f9bcd5fc9a57"; } /// Return the rank of the global tensor (r) std::size_t poisson3d_3_form_0::rank() const { return 2; } /// Return the number of coefficients (n) std::size_t poisson3d_3_form_0::num_coefficients() const { return 0; } /// Return the number of cell domains std::size_t poisson3d_3_form_0::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson3d_3_form_0::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson3d_3_form_0::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson3d_3_form_0::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson3d_3_form_0::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson3d_3_form_0::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson3d_3_form_0::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson3d_3_form_0::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson3d_3_form_0::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson3d_3_finite_element_0(); break; } case 1: { return new poisson3d_3_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson3d_3_form_0::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson3d_3_dofmap_0(); break; } case 1: { return new poisson3d_3_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson3d_3_form_0::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson3d_3_form_0::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson3d_3_form_0::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson3d_3_form_0::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson3d_3_form_0::create_default_cell_integral() const { return new poisson3d_3_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson3d_3_form_0::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson3d_3_form_0::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson3d_3_form_0::create_default_point_integral() const { return 0; } /// Constructor poisson3d_3_form_1::poisson3d_3_form_1() : ufc::form() { // Do nothing } /// Destructor poisson3d_3_form_1::~poisson3d_3_form_1() { // Do nothing } /// Return a string identifying the form const char* poisson3d_3_form_1::signature() const { return "883a1cbb987d87d2e2ca57ec54f73863953681ed17c1bef50f4c9497a4b28732e6d4741ea19d3d9d6f2c41f82f594b0f12969c7e3d9853f7c57ca460a775570a"; } /// Return the rank of the global tensor (r) std::size_t poisson3d_3_form_1::rank() const { return 1; } /// Return the number of coefficients (n) std::size_t poisson3d_3_form_1::num_coefficients() const { return 1; } /// Return the number of cell domains std::size_t poisson3d_3_form_1::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson3d_3_form_1::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson3d_3_form_1::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson3d_3_form_1::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson3d_3_form_1::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson3d_3_form_1::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson3d_3_form_1::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson3d_3_form_1::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson3d_3_form_1::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson3d_3_finite_element_0(); break; } case 1: { return new poisson3d_3_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson3d_3_form_1::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson3d_3_dofmap_0(); break; } case 1: { return new poisson3d_3_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson3d_3_form_1::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson3d_3_form_1::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson3d_3_form_1::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson3d_3_form_1::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson3d_3_form_1::create_default_cell_integral() const { return new poisson3d_3_cell_integral_1_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson3d_3_form_1::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson3d_3_form_1::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson3d_3_form_1::create_default_point_integral() const { return 0; } dolfin-1.3.0/bench/fem/convergence/cpp/Poisson3D_2.cpp0000644000175000017500000046721112263015061022331 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #include "Poisson3D_2.h" /// Constructor poisson3d_2_finite_element_0::poisson3d_2_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor poisson3d_2_finite_element_0::~poisson3d_2_finite_element_0() { // Do nothing } /// Return a string identifying the finite element const char* poisson3d_2_finite_element_0::signature() const { return "FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 2, None)"; } /// Return the cell shape ufc::shape poisson3d_2_finite_element_0::cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape std::size_t poisson3d_2_finite_element_0::topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape std::size_t poisson3d_2_finite_element_0::geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space std::size_t poisson3d_2_finite_element_0::space_dimension() const { return 10; } /// Return the rank of the value space std::size_t poisson3d_2_finite_element_0::value_rank() const { return 0; } /// Return the dimension of the value space for axis i std::size_t poisson3d_2_finite_element_0::value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell void poisson3d_2_finite_element_0::evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {-0.0577350269189626, -0.0608580619450185, -0.0351364184463153, -0.0248451997499977, 0.0650600048632355, 0.050395263067897, 0.0411475599898912, 0.0290957186981323, 0.0237565548366599, 0.0167984210226323}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {-0.0577350269189625, 0.0608580619450185, -0.0351364184463153, -0.0248451997499977, 0.0650600048632355, -0.050395263067897, -0.0411475599898912, 0.0290957186981323, 0.0237565548366599, 0.0167984210226323}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {-0.0577350269189626, 0.0, 0.0702728368926306, -0.0248451997499977, 0.0, 0.0, 0.0, 0.0872871560943969, -0.0475131096733199, 0.0167984210226323}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {-0.0577350269189626, 0.0, 0.0, 0.074535599249993, 0.0, 0.0, 0.0, 0.0, 0.0, 0.100790526135794}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {0.23094010767585, 0.0, 0.140545673785261, 0.0993807989999906, 0.0, 0.0, 0.0, 0.0, 0.1187827741833, -0.0671936840905293}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {0.23094010767585, 0.121716123890037, -0.0702728368926307, 0.0993807989999907, 0.0, 0.0, 0.102868899974728, 0.0, -0.0593913870916499, -0.0671936840905293}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {0.23094010767585, 0.121716123890037, 0.0702728368926307, -0.0993807989999906, 0.0, 0.100790526135794, -0.0205737799949456, -0.087287156094397, -0.01187827741833, 0.0167984210226323}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {0.23094010767585, -0.121716123890037, -0.0702728368926306, 0.0993807989999906, 0.0, 0.0, -0.102868899974728, 0.0, -0.0593913870916499, -0.0671936840905293}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {0.23094010767585, -0.121716123890037, 0.0702728368926306, -0.0993807989999906, 0.0, -0.100790526135794, 0.0205737799949456, -0.0872871560943969, -0.01187827741833, 0.0167984210226323}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {0.23094010767585, 0.0, -0.140545673785261, -0.0993807989999906, -0.130120009726471, 0.0, 0.0, 0.0290957186981323, 0.02375655483666, 0.0167984210226323}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell void poisson3d_2_finite_element_0::evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 10; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell void poisson3d_2_finite_element_0::evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 2) { return ; } // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[9][2]; for (unsigned int row = 0; row < 9; row++) { for (unsigned int col = 0; col < 2; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 2) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[3][3] = {{K[0], K[1], K[2]}, {K[3], K[4], K[5]}, {K[6], K[7], K[8]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[9][9]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {-0.0577350269189626, -0.0608580619450185, -0.0351364184463153, -0.0248451997499977, 0.0650600048632355, 0.050395263067897, 0.0411475599898912, 0.0290957186981323, 0.0237565548366599, 0.0167984210226323}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771366, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531987, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, 0.0, 8.87411967464942, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[9]; for (unsigned int r = 0; r < 9; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {-0.0577350269189625, 0.0608580619450185, -0.0351364184463153, -0.0248451997499977, 0.0650600048632355, -0.050395263067897, -0.0411475599898912, 0.0290957186981323, 0.0237565548366599, 0.0167984210226323}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771366, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531987, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, 0.0, 8.87411967464942, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[9]; for (unsigned int r = 0; r < 9; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {-0.0577350269189626, 0.0, 0.0702728368926306, -0.0248451997499977, 0.0, 0.0, 0.0, 0.0872871560943969, -0.0475131096733199, 0.0167984210226323}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771366, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531987, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, 0.0, 8.87411967464942, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[9]; for (unsigned int r = 0; r < 9; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {-0.0577350269189626, 0.0, 0.0, 0.074535599249993, 0.0, 0.0, 0.0, 0.0, 0.0, 0.100790526135794}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771366, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531987, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, 0.0, 8.87411967464942, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[9]; for (unsigned int r = 0; r < 9; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {0.23094010767585, 0.0, 0.140545673785261, 0.0993807989999906, 0.0, 0.0, 0.0, 0.0, 0.1187827741833, -0.0671936840905293}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771366, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531987, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, 0.0, 8.87411967464942, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[9]; for (unsigned int r = 0; r < 9; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {0.23094010767585, 0.121716123890037, -0.0702728368926307, 0.0993807989999907, 0.0, 0.0, 0.102868899974728, 0.0, -0.0593913870916499, -0.0671936840905293}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771366, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531987, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, 0.0, 8.87411967464942, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[9]; for (unsigned int r = 0; r < 9; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {0.23094010767585, 0.121716123890037, 0.0702728368926307, -0.0993807989999906, 0.0, 0.100790526135794, -0.0205737799949456, -0.087287156094397, -0.01187827741833, 0.0167984210226323}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771366, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531987, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, 0.0, 8.87411967464942, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[9]; for (unsigned int r = 0; r < 9; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {0.23094010767585, -0.121716123890037, -0.0702728368926306, 0.0993807989999906, 0.0, 0.0, -0.102868899974728, 0.0, -0.0593913870916499, -0.0671936840905293}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771366, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531987, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, 0.0, 8.87411967464942, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[9]; for (unsigned int r = 0; r < 9; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {0.23094010767585, -0.121716123890037, 0.0702728368926306, -0.0993807989999906, 0.0, -0.100790526135794, 0.0205737799949456, -0.0872871560943969, -0.01187827741833, 0.0167984210226323}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771366, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531987, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, 0.0, 8.87411967464942, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[9]; for (unsigned int r = 0; r < 9; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[4] *= std::sqrt(26.25); // Table(s) of coefficients static const double coefficients0[10] = \ {0.23094010767585, 0.0, -0.140545673785261, -0.0993807989999906, -0.130120009726471, 0.0, 0.0, 0.0290957186981323, 0.02375655483666, 0.0167984210226323}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 11.2249721603218, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495584, 0.0, 8.36660026534075, -1.18321595661992, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677394, 0.0, 0.0, 8.69482604771366, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 7.24568837309472, 4.18330013267038, -0.591607978309961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 0.0, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.64575131106459, 0.0, 9.66091783079296, 0.683130051063973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920393, 0.0, 0.0, 7.52994023880668, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154981, 5.61248608016091, -1.08012344973464, -0.763762615825973, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267038, -0.591607978309962, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338697, 7.09929573971954, 0.0, 4.34741302385683, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231718, -0.341565025531987, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973464, 0.0, 7.09929573971954, 2.50998007960223, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912987, 0.0, 0.0, 8.87411967464942, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[9]; for (unsigned int r = 0; r < 9; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell void poisson3d_2_finite_element_0::evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 10; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 2) { return ; } // Helper variable to hold values of a single dof. double dof_values[9]; for (unsigned int r = 0; r < 9; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 10; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f double poisson3d_2_finite_element_0::evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = 0.5*vertex_coordinates[6] + 0.5*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[7] + 0.5*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[8] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 5: { y[0] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[4] + 0.5*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[5] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 6: { y[0] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[6]; y[1] = 0.5*vertex_coordinates[4] + 0.5*vertex_coordinates[7]; y[2] = 0.5*vertex_coordinates[5] + 0.5*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 7: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 8: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[6]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[7]; y[2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 9: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[3]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[4]; y[2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f void poisson3d_2_finite_element_0::evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = 0.5*vertex_coordinates[6] + 0.5*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[7] + 0.5*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[8] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); values[4] = vals[0]; y[0] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[4] + 0.5*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[5] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); values[5] = vals[0]; y[0] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[6]; y[1] = 0.5*vertex_coordinates[4] + 0.5*vertex_coordinates[7]; y[2] = 0.5*vertex_coordinates[5] + 0.5*vertex_coordinates[8]; f.evaluate(vals, y, c); values[6] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[9]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[10]; y[2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[11]; f.evaluate(vals, y, c); values[7] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[6]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[7]; y[2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[8]; f.evaluate(vals, y, c); values[8] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[3]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[4]; y[2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[9] = vals[0]; } /// Interpolate vertex values from dof values void poisson3d_2_finite_element_0::interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; vertex_values[3] = dof_values[3]; } /// Map coordinate xhat from reference cell to coordinate x in cell void poisson3d_2_finite_element_0::map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell void poisson3d_2_finite_element_0::map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) std::size_t poisson3d_2_finite_element_0::num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) ufc::finite_element* poisson3d_2_finite_element_0::create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance ufc::finite_element* poisson3d_2_finite_element_0::create() const { return new poisson3d_2_finite_element_0(); } /// Constructor poisson3d_2_dofmap_0::poisson3d_2_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor poisson3d_2_dofmap_0::~poisson3d_2_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap const char* poisson3d_2_dofmap_0::signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 2, None)"; } /// Return true iff mesh entities of topological dimension d are needed bool poisson3d_2_dofmap_0::needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return true; break; } case 2: { return false; break; } case 3: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape std::size_t poisson3d_2_dofmap_0::topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape std::size_t poisson3d_2_dofmap_0::geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space std::size_t poisson3d_2_dofmap_0::global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0] + num_global_entities[1]; } /// Return the dimension of the local finite element function space for a cell std::size_t poisson3d_2_dofmap_0::local_dimension() const { return 10; } /// Return the number of dofs on each cell facet std::size_t poisson3d_2_dofmap_0::num_facet_dofs() const { return 6; } /// Return the number of dofs associated with each cell entity of dimension d std::size_t poisson3d_2_dofmap_0::num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 1; break; } case 2: { return 0; break; } case 3: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell void poisson3d_2_dofmap_0::tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; dofs[3] = offset + c.entity_indices[0][3]; offset += num_global_entities[0]; dofs[4] = offset + c.entity_indices[1][0]; dofs[5] = offset + c.entity_indices[1][1]; dofs[6] = offset + c.entity_indices[1][2]; dofs[7] = offset + c.entity_indices[1][3]; dofs[8] = offset + c.entity_indices[1][4]; dofs[9] = offset + c.entity_indices[1][5]; offset += num_global_entities[1]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs void poisson3d_2_dofmap_0::tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; dofs[3] = 4; dofs[4] = 5; dofs[5] = 6; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; dofs[3] = 4; dofs[4] = 7; dofs[5] = 8; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; dofs[3] = 5; dofs[4] = 7; dofs[5] = 9; break; } case 3: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 2; dofs[3] = 6; dofs[4] = 8; dofs[5] = 9; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) void poisson3d_2_dofmap_0::tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } case 3: { dofs[0] = 3; break; } } break; } case 1: { if (i > 5) { throw std::runtime_error("i is larger than number of entities (5)"); } switch (i) { case 0: { dofs[0] = 4; break; } case 1: { dofs[0] = 5; break; } case 2: { dofs[0] = 6; break; } case 3: { dofs[0] = 7; break; } case 4: { dofs[0] = 8; break; } case 5: { dofs[0] = 9; break; } } break; } case 2: { break; } case 3: { break; } } } /// Tabulate the coordinates of all dofs on a cell void poisson3d_2_dofmap_0::tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[0][2] = vertex_coordinates[2]; dof_coordinates[1][0] = vertex_coordinates[3]; dof_coordinates[1][1] = vertex_coordinates[4]; dof_coordinates[1][2] = vertex_coordinates[5]; dof_coordinates[2][0] = vertex_coordinates[6]; dof_coordinates[2][1] = vertex_coordinates[7]; dof_coordinates[2][2] = vertex_coordinates[8]; dof_coordinates[3][0] = vertex_coordinates[9]; dof_coordinates[3][1] = vertex_coordinates[10]; dof_coordinates[3][2] = vertex_coordinates[11]; dof_coordinates[4][0] = 0.5*vertex_coordinates[6] + 0.5*vertex_coordinates[9]; dof_coordinates[4][1] = 0.5*vertex_coordinates[7] + 0.5*vertex_coordinates[10]; dof_coordinates[4][2] = 0.5*vertex_coordinates[8] + 0.5*vertex_coordinates[11]; dof_coordinates[5][0] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[9]; dof_coordinates[5][1] = 0.5*vertex_coordinates[4] + 0.5*vertex_coordinates[10]; dof_coordinates[5][2] = 0.5*vertex_coordinates[5] + 0.5*vertex_coordinates[11]; dof_coordinates[6][0] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[6]; dof_coordinates[6][1] = 0.5*vertex_coordinates[4] + 0.5*vertex_coordinates[7]; dof_coordinates[6][2] = 0.5*vertex_coordinates[5] + 0.5*vertex_coordinates[8]; dof_coordinates[7][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[9]; dof_coordinates[7][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[10]; dof_coordinates[7][2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[11]; dof_coordinates[8][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[6]; dof_coordinates[8][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[7]; dof_coordinates[8][2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[8]; dof_coordinates[9][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[3]; dof_coordinates[9][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[4]; dof_coordinates[9][2] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[5]; } /// Return the number of sub dofmaps (for a mixed element) std::size_t poisson3d_2_dofmap_0::num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) ufc::dofmap* poisson3d_2_dofmap_0::create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance ufc::dofmap* poisson3d_2_dofmap_0::create() const { return new poisson3d_2_dofmap_0(); } /// Constructor poisson3d_2_cell_integral_0_otherwise::poisson3d_2_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson3d_2_cell_integral_0_otherwise::~poisson3d_2_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson3d_2_cell_integral_0_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 27 // Number of operations (multiply-add pairs) for tensor contraction: 331 // Total number of operations (multiply-add pairs): 361 // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0_0 = det*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2]); const double G0_0_1 = det*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5]); const double G0_0_2 = det*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8]); const double G0_1_0 = det*(K[3]*K[0] + K[4]*K[1] + K[5]*K[2]); const double G0_1_1 = det*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5]); const double G0_1_2 = det*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8]); const double G0_2_0 = det*(K[6]*K[0] + K[7]*K[1] + K[8]*K[2]); const double G0_2_1 = det*(K[6]*K[3] + K[7]*K[4] + K[8]*K[5]); const double G0_2_2 = det*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8]); // Compute element tensor A[0] = 0.1*G0_0_0 + 0.1*G0_0_1 + 0.1*G0_0_2 + 0.1*G0_1_0 + 0.1*G0_1_1 + 0.1*G0_1_2 + 0.1*G0_2_0 + 0.1*G0_2_1 + 0.1*G0_2_2; A[1] = 0.0333333333333333*G0_0_0 + 0.0333333333333333*G0_1_0 + 0.0333333333333333*G0_2_0; A[2] = 0.0333333333333333*G0_0_1 + 0.0333333333333333*G0_1_1 + 0.0333333333333333*G0_2_1; A[3] = 0.0333333333333333*G0_0_2 + 0.0333333333333333*G0_1_2 + 0.0333333333333333*G0_2_2; A[4] = 0.0333333333333342*G0_0_1 + 0.0333333333333342*G0_0_2 + 0.0333333333333342*G0_1_1 + 0.0333333333333342*G0_1_2 + 0.0333333333333342*G0_2_1 + 0.0333333333333342*G0_2_2; A[5] = 0.0333333333333342*G0_0_0 + 0.0333333333333343*G0_0_2 + 0.0333333333333342*G0_1_0 + 0.0333333333333343*G0_1_2 + 0.0333333333333342*G0_2_0 + 0.0333333333333343*G0_2_2; A[6] = 0.0333333333333342*G0_0_0 + 0.0333333333333342*G0_0_1 + 0.0333333333333342*G0_1_0 + 0.0333333333333343*G0_1_1 + 0.0333333333333342*G0_2_0 + 0.0333333333333342*G0_2_1; A[7] = -0.0333333333333342*G0_0_0 - 0.0333333333333342*G0_0_1 - 0.133333333333333*G0_0_2 - 0.0333333333333342*G0_1_0 - 0.0333333333333342*G0_1_1 - 0.133333333333333*G0_1_2 - 0.0333333333333342*G0_2_0 - 0.0333333333333343*G0_2_1 - 0.133333333333333*G0_2_2; A[8] = -0.0333333333333342*G0_0_0 - 0.133333333333333*G0_0_1 - 0.0333333333333342*G0_0_2 - 0.0333333333333342*G0_1_0 - 0.133333333333333*G0_1_1 - 0.0333333333333342*G0_1_2 - 0.0333333333333342*G0_2_0 - 0.133333333333333*G0_2_1 - 0.0333333333333342*G0_2_2; A[9] = -0.133333333333333*G0_0_0 - 0.0333333333333343*G0_0_1 - 0.0333333333333343*G0_0_2 - 0.133333333333333*G0_1_0 - 0.0333333333333343*G0_1_1 - 0.0333333333333343*G0_1_2 - 0.133333333333333*G0_2_0 - 0.0333333333333343*G0_2_1 - 0.0333333333333343*G0_2_2; A[10] = 0.0333333333333333*G0_0_0 + 0.0333333333333333*G0_0_1 + 0.0333333333333333*G0_0_2; A[11] = 0.1*G0_0_0; A[12] = -0.0333333333333333*G0_0_1; A[13] = -0.0333333333333333*G0_0_2; A[14] = -0.033333333333333*G0_0_1 - 0.033333333333333*G0_0_2; A[15] = -0.033333333333333*G0_0_0 + 0.1*G0_0_2; A[16] = -0.033333333333333*G0_0_0 + 0.1*G0_0_1; A[17] = 0.033333333333333*G0_0_0 + 0.033333333333333*G0_0_1; A[18] = 0.033333333333333*G0_0_0 + 0.033333333333333*G0_0_2; A[19] = -0.133333333333333*G0_0_0 - 0.1*G0_0_1 - 0.1*G0_0_2; A[20] = 0.0333333333333333*G0_1_0 + 0.0333333333333333*G0_1_1 + 0.0333333333333333*G0_1_2; A[21] = -0.0333333333333333*G0_1_0; A[22] = 0.1*G0_1_1; A[23] = -0.0333333333333334*G0_1_2; A[24] = -0.033333333333333*G0_1_1 + 0.1*G0_1_2; A[25] = -0.033333333333333*G0_1_0 - 0.033333333333333*G0_1_2; A[26] = 0.1*G0_1_0 - 0.033333333333333*G0_1_1; A[27] = 0.033333333333333*G0_1_0 + 0.033333333333333*G0_1_1; A[28] = -0.1*G0_1_0 - 0.133333333333333*G0_1_1 - 0.1*G0_1_2; A[29] = 0.033333333333333*G0_1_1 + 0.033333333333333*G0_1_2; A[30] = 0.0333333333333333*G0_2_0 + 0.0333333333333333*G0_2_1 + 0.0333333333333333*G0_2_2; A[31] = -0.0333333333333333*G0_2_0; A[32] = -0.0333333333333334*G0_2_1; A[33] = 0.1*G0_2_2; A[34] = 0.1*G0_2_1 - 0.0333333333333331*G0_2_2; A[35] = 0.1*G0_2_0 - 0.0333333333333331*G0_2_2; A[36] = -0.0333333333333331*G0_2_0 - 0.0333333333333331*G0_2_1; A[37] = -0.1*G0_2_0 - 0.1*G0_2_1 - 0.133333333333333*G0_2_2; A[38] = 0.0333333333333331*G0_2_0 + 0.0333333333333331*G0_2_2; A[39] = 0.0333333333333331*G0_2_1 + 0.0333333333333331*G0_2_2; A[40] = 0.0333333333333342*G0_1_0 + 0.0333333333333342*G0_1_1 + 0.0333333333333343*G0_1_2 + 0.0333333333333342*G0_2_0 + 0.0333333333333342*G0_2_1 + 0.0333333333333342*G0_2_2; A[41] = -0.033333333333333*G0_1_0 - 0.033333333333333*G0_2_0; A[42] = -0.033333333333333*G0_1_1 + 0.1*G0_2_1; A[43] = 0.1*G0_1_2 - 0.0333333333333331*G0_2_2; A[44] = 0.266666666666667*G0_1_1 + 0.133333333333334*G0_1_2 + 0.133333333333334*G0_2_1 + 0.266666666666667*G0_2_2; A[45] = 0.266666666666667*G0_1_0 + 0.133333333333334*G0_1_2 + 0.133333333333334*G0_2_0 + 0.133333333333334*G0_2_2; A[46] = 0.133333333333334*G0_1_0 + 0.133333333333334*G0_1_1 + 0.266666666666667*G0_2_0 + 0.133333333333334*G0_2_1; A[47] = -0.266666666666667*G0_1_0 - 0.266666666666667*G0_1_1 - 0.133333333333335*G0_1_2 - 0.133333333333334*G0_2_0 - 0.133333333333334*G0_2_1; A[48] = -0.133333333333334*G0_1_0 - 0.133333333333334*G0_1_2 - 0.266666666666667*G0_2_0 - 0.133333333333335*G0_2_1 - 0.266666666666667*G0_2_2; A[49] = -0.133333333333334*G0_1_1 - 0.133333333333334*G0_1_2 - 0.133333333333334*G0_2_1 - 0.133333333333334*G0_2_2; A[50] = 0.0333333333333342*G0_0_0 + 0.0333333333333342*G0_0_1 + 0.0333333333333342*G0_0_2 + 0.0333333333333343*G0_2_0 + 0.0333333333333343*G0_2_1 + 0.0333333333333343*G0_2_2; A[51] = -0.033333333333333*G0_0_0 + 0.1*G0_2_0; A[52] = -0.033333333333333*G0_0_1 - 0.033333333333333*G0_2_1; A[53] = 0.1*G0_0_2 - 0.0333333333333331*G0_2_2; A[54] = 0.266666666666667*G0_0_1 + 0.133333333333334*G0_0_2 + 0.133333333333334*G0_2_1 + 0.133333333333334*G0_2_2; A[55] = 0.266666666666667*G0_0_0 + 0.133333333333334*G0_0_2 + 0.133333333333334*G0_2_0 + 0.266666666666667*G0_2_2; A[56] = 0.133333333333334*G0_0_0 + 0.133333333333334*G0_0_1 + 0.133333333333334*G0_2_0 + 0.266666666666667*G0_2_1; A[57] = -0.266666666666667*G0_0_0 - 0.266666666666667*G0_0_1 - 0.133333333333335*G0_0_2 - 0.133333333333334*G0_2_0 - 0.133333333333334*G0_2_1; A[58] = -0.133333333333334*G0_0_0 - 0.133333333333334*G0_0_2 - 0.133333333333334*G0_2_0 - 0.133333333333334*G0_2_2; A[59] = -0.133333333333334*G0_0_1 - 0.133333333333334*G0_0_2 - 0.133333333333335*G0_2_0 - 0.266666666666667*G0_2_1 - 0.266666666666667*G0_2_2; A[60] = 0.0333333333333342*G0_0_0 + 0.0333333333333342*G0_0_1 + 0.0333333333333342*G0_0_2 + 0.0333333333333342*G0_1_0 + 0.0333333333333343*G0_1_1 + 0.0333333333333342*G0_1_2; A[61] = -0.033333333333333*G0_0_0 + 0.1*G0_1_0; A[62] = 0.1*G0_0_1 - 0.033333333333333*G0_1_1; A[63] = -0.0333333333333331*G0_0_2 - 0.0333333333333331*G0_1_2; A[64] = 0.133333333333334*G0_0_1 + 0.266666666666667*G0_0_2 + 0.133333333333334*G0_1_1 + 0.133333333333334*G0_1_2; A[65] = 0.133333333333334*G0_0_0 + 0.133333333333334*G0_0_2 + 0.133333333333334*G0_1_0 + 0.266666666666667*G0_1_2; A[66] = 0.266666666666667*G0_0_0 + 0.133333333333334*G0_0_1 + 0.133333333333334*G0_1_0 + 0.266666666666667*G0_1_1; A[67] = -0.133333333333334*G0_0_0 - 0.133333333333334*G0_0_1 - 0.133333333333334*G0_1_0 - 0.133333333333334*G0_1_1; A[68] = -0.266666666666667*G0_0_0 - 0.133333333333335*G0_0_1 - 0.266666666666667*G0_0_2 - 0.133333333333334*G0_1_0 - 0.133333333333334*G0_1_2; A[69] = -0.133333333333334*G0_0_1 - 0.133333333333334*G0_0_2 - 0.133333333333335*G0_1_0 - 0.266666666666667*G0_1_1 - 0.266666666666667*G0_1_2; A[70] = -0.0333333333333342*G0_0_0 - 0.0333333333333342*G0_0_1 - 0.0333333333333342*G0_0_2 - 0.0333333333333342*G0_1_0 - 0.0333333333333342*G0_1_1 - 0.0333333333333343*G0_1_2 - 0.133333333333333*G0_2_0 - 0.133333333333333*G0_2_1 - 0.133333333333333*G0_2_2; A[71] = 0.033333333333333*G0_0_0 + 0.033333333333333*G0_1_0; A[72] = 0.033333333333333*G0_0_1 + 0.033333333333333*G0_1_1; A[73] = -0.1*G0_0_2 - 0.1*G0_1_2 - 0.133333333333333*G0_2_2; A[74] = -0.266666666666667*G0_0_1 - 0.133333333333334*G0_0_2 - 0.266666666666667*G0_1_1 - 0.133333333333334*G0_1_2 - 0.133333333333335*G0_2_1; A[75] = -0.266666666666667*G0_0_0 - 0.133333333333334*G0_0_2 - 0.266666666666667*G0_1_0 - 0.133333333333334*G0_1_2 - 0.133333333333335*G0_2_0; A[76] = -0.133333333333334*G0_0_0 - 0.133333333333334*G0_0_1 - 0.133333333333334*G0_1_0 - 0.133333333333334*G0_1_1; A[77] = 0.266666666666667*G0_0_0 + 0.266666666666667*G0_0_1 + 0.133333333333335*G0_0_2 + 0.266666666666667*G0_1_0 + 0.266666666666667*G0_1_1 + 0.133333333333335*G0_1_2 + 0.133333333333335*G0_2_0 + 0.133333333333335*G0_2_1 + 0.266666666666666*G0_2_2; A[78] = 0.133333333333334*G0_0_0 + 0.133333333333334*G0_0_2 + 0.133333333333334*G0_1_0 + 0.133333333333334*G0_1_2 + 0.133333333333333*G0_2_1; A[79] = 0.133333333333334*G0_0_1 + 0.133333333333334*G0_0_2 + 0.133333333333334*G0_1_1 + 0.133333333333334*G0_1_2 + 0.133333333333333*G0_2_0; A[80] = -0.0333333333333342*G0_0_0 - 0.0333333333333342*G0_0_1 - 0.0333333333333342*G0_0_2 - 0.133333333333333*G0_1_0 - 0.133333333333333*G0_1_1 - 0.133333333333333*G0_1_2 - 0.0333333333333342*G0_2_0 - 0.0333333333333342*G0_2_1 - 0.0333333333333342*G0_2_2; A[81] = 0.033333333333333*G0_0_0 + 0.033333333333333*G0_2_0; A[82] = -0.1*G0_0_1 - 0.133333333333333*G0_1_1 - 0.1*G0_2_1; A[83] = 0.0333333333333331*G0_0_2 + 0.0333333333333331*G0_2_2; A[84] = -0.133333333333334*G0_0_1 - 0.266666666666667*G0_0_2 - 0.133333333333335*G0_1_2 - 0.133333333333334*G0_2_1 - 0.266666666666667*G0_2_2; A[85] = -0.133333333333334*G0_0_0 - 0.133333333333334*G0_0_2 - 0.133333333333334*G0_2_0 - 0.133333333333334*G0_2_2; A[86] = -0.266666666666667*G0_0_0 - 0.133333333333334*G0_0_1 - 0.133333333333335*G0_1_0 - 0.266666666666667*G0_2_0 - 0.133333333333334*G0_2_1; A[87] = 0.133333333333334*G0_0_0 + 0.133333333333334*G0_0_1 + 0.133333333333333*G0_1_2 + 0.133333333333334*G0_2_0 + 0.133333333333334*G0_2_1; A[88] = 0.266666666666667*G0_0_0 + 0.133333333333335*G0_0_1 + 0.266666666666667*G0_0_2 + 0.133333333333335*G0_1_0 + 0.266666666666667*G0_1_1 + 0.133333333333334*G0_1_2 + 0.266666666666667*G0_2_0 + 0.133333333333334*G0_2_1 + 0.266666666666667*G0_2_2; A[89] = 0.133333333333334*G0_0_1 + 0.133333333333334*G0_0_2 + 0.133333333333333*G0_1_0 + 0.133333333333334*G0_2_1 + 0.133333333333334*G0_2_2; A[90] = -0.133333333333333*G0_0_0 - 0.133333333333333*G0_0_1 - 0.133333333333333*G0_0_2 - 0.0333333333333342*G0_1_0 - 0.0333333333333343*G0_1_1 - 0.0333333333333343*G0_1_2 - 0.0333333333333343*G0_2_0 - 0.0333333333333343*G0_2_1 - 0.0333333333333343*G0_2_2; A[91] = -0.133333333333333*G0_0_0 - 0.1*G0_1_0 - 0.1*G0_2_0; A[92] = 0.033333333333333*G0_1_1 + 0.033333333333333*G0_2_1; A[93] = 0.0333333333333331*G0_1_2 + 0.0333333333333331*G0_2_2; A[94] = -0.133333333333334*G0_1_1 - 0.133333333333334*G0_1_2 - 0.133333333333334*G0_2_1 - 0.133333333333334*G0_2_2; A[95] = -0.133333333333335*G0_0_2 - 0.133333333333334*G0_1_0 - 0.266666666666667*G0_1_2 - 0.133333333333334*G0_2_0 - 0.266666666666667*G0_2_2; A[96] = -0.133333333333334*G0_0_1 - 0.133333333333334*G0_1_0 - 0.266666666666667*G0_1_1 - 0.133333333333334*G0_2_0 - 0.266666666666667*G0_2_1; A[97] = 0.133333333333333*G0_0_2 + 0.133333333333334*G0_1_0 + 0.133333333333334*G0_1_1 + 0.133333333333334*G0_2_0 + 0.133333333333334*G0_2_1; A[98] = 0.133333333333333*G0_0_1 + 0.133333333333334*G0_1_0 + 0.133333333333334*G0_1_2 + 0.133333333333334*G0_2_0 + 0.133333333333334*G0_2_2; A[99] = 0.266666666666667*G0_0_0 + 0.133333333333335*G0_0_1 + 0.133333333333335*G0_0_2 + 0.133333333333335*G0_1_0 + 0.266666666666667*G0_1_1 + 0.266666666666667*G0_1_2 + 0.133333333333335*G0_2_0 + 0.266666666666667*G0_2_1 + 0.266666666666667*G0_2_2; } /// Constructor poisson3d_2_cell_integral_1_otherwise::poisson3d_2_cell_integral_1_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson3d_2_cell_integral_1_otherwise::~poisson3d_2_cell_integral_1_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson3d_2_cell_integral_1_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 10 // Number of operations (multiply-add pairs) for tensor contraction: 95 // Total number of operations (multiply-add pairs): 108 // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0 = det*w[0][0]*(1.0); const double G0_1 = det*w[0][1]*(1.0); const double G0_2 = det*w[0][2]*(1.0); const double G0_3 = det*w[0][3]*(1.0); const double G0_4 = det*w[0][4]*(1.0); const double G0_5 = det*w[0][5]*(1.0); const double G0_6 = det*w[0][6]*(1.0); const double G0_7 = det*w[0][7]*(1.0); const double G0_8 = det*w[0][8]*(1.0); const double G0_9 = det*w[0][9]*(1.0); // Compute element tensor A[0] = 0.00238095238095238*G0_0 + 0.000396825396825396*G0_1 + 0.000396825396825396*G0_2 + 0.000396825396825396*G0_3 - 0.00238095238095238*G0_4 - 0.00238095238095238*G0_5 - 0.00238095238095238*G0_6 - 0.00158730158730159*G0_7 - 0.00158730158730158*G0_8 - 0.00158730158730159*G0_9; A[1] = 0.000396825396825396*G0_0 + 0.00238095238095238*G0_1 + 0.000396825396825395*G0_2 + 0.000396825396825396*G0_3 - 0.00238095238095238*G0_4 - 0.00158730158730158*G0_5 - 0.00158730158730158*G0_6 - 0.00238095238095238*G0_7 - 0.00238095238095238*G0_8 - 0.00158730158730158*G0_9; A[2] = 0.000396825396825396*G0_0 + 0.000396825396825395*G0_1 + 0.00238095238095238*G0_2 + 0.000396825396825396*G0_3 - 0.00158730158730159*G0_4 - 0.00238095238095238*G0_5 - 0.00158730158730158*G0_6 - 0.00238095238095238*G0_7 - 0.00158730158730159*G0_8 - 0.00238095238095238*G0_9; A[3] = 0.000396825396825396*G0_0 + 0.000396825396825396*G0_1 + 0.000396825396825396*G0_2 + 0.00238095238095238*G0_3 - 0.00158730158730159*G0_4 - 0.00158730158730159*G0_5 - 0.00238095238095238*G0_6 - 0.00158730158730159*G0_7 - 0.00238095238095238*G0_8 - 0.00238095238095238*G0_9; A[4] = -0.00238095238095238*G0_0 - 0.00238095238095238*G0_1 - 0.00158730158730159*G0_2 - 0.00158730158730159*G0_3 + 0.0126984126984127*G0_4 + 0.00634920634920635*G0_5 + 0.00634920634920635*G0_6 + 0.00634920634920635*G0_7 + 0.00634920634920634*G0_8 + 0.00317460317460317*G0_9; A[5] = -0.00238095238095238*G0_0 - 0.00158730158730158*G0_1 - 0.00238095238095238*G0_2 - 0.00158730158730159*G0_3 + 0.00634920634920635*G0_4 + 0.0126984126984127*G0_5 + 0.00634920634920635*G0_6 + 0.00634920634920635*G0_7 + 0.00317460317460317*G0_8 + 0.00634920634920635*G0_9; A[6] = -0.00238095238095238*G0_0 - 0.00158730158730158*G0_1 - 0.00158730158730158*G0_2 - 0.00238095238095238*G0_3 + 0.00634920634920635*G0_4 + 0.00634920634920635*G0_5 + 0.0126984126984127*G0_6 + 0.00317460317460317*G0_7 + 0.00634920634920634*G0_8 + 0.00634920634920635*G0_9; A[7] = -0.00158730158730159*G0_0 - 0.00238095238095238*G0_1 - 0.00238095238095238*G0_2 - 0.00158730158730159*G0_3 + 0.00634920634920635*G0_4 + 0.00634920634920635*G0_5 + 0.00317460317460317*G0_6 + 0.0126984126984127*G0_7 + 0.00634920634920635*G0_8 + 0.00634920634920635*G0_9; A[8] = -0.00158730158730158*G0_0 - 0.00238095238095238*G0_1 - 0.00158730158730159*G0_2 - 0.00238095238095238*G0_3 + 0.00634920634920634*G0_4 + 0.00317460317460317*G0_5 + 0.00634920634920634*G0_6 + 0.00634920634920635*G0_7 + 0.0126984126984127*G0_8 + 0.00634920634920634*G0_9; A[9] = -0.00158730158730159*G0_0 - 0.00158730158730158*G0_1 - 0.00238095238095238*G0_2 - 0.00238095238095238*G0_3 + 0.00317460317460317*G0_4 + 0.00634920634920635*G0_5 + 0.00634920634920635*G0_6 + 0.00634920634920635*G0_7 + 0.00634920634920634*G0_8 + 0.0126984126984127*G0_9; } /// Constructor poisson3d_2_form_0::poisson3d_2_form_0() : ufc::form() { // Do nothing } /// Destructor poisson3d_2_form_0::~poisson3d_2_form_0() { // Do nothing } /// Return a string identifying the form const char* poisson3d_2_form_0::signature() const { return "0cf52153c17f28169968b16c7768775f160aecf2bf6d7f4a2c4cf870ad86b9caaf4994094415b47bca0d76b24c4b51b54172e608e5d4d340cee867f77d8c24ae"; } /// Return the rank of the global tensor (r) std::size_t poisson3d_2_form_0::rank() const { return 2; } /// Return the number of coefficients (n) std::size_t poisson3d_2_form_0::num_coefficients() const { return 0; } /// Return the number of cell domains std::size_t poisson3d_2_form_0::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson3d_2_form_0::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson3d_2_form_0::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson3d_2_form_0::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson3d_2_form_0::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson3d_2_form_0::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson3d_2_form_0::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson3d_2_form_0::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson3d_2_form_0::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson3d_2_finite_element_0(); break; } case 1: { return new poisson3d_2_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson3d_2_form_0::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson3d_2_dofmap_0(); break; } case 1: { return new poisson3d_2_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson3d_2_form_0::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson3d_2_form_0::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson3d_2_form_0::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson3d_2_form_0::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson3d_2_form_0::create_default_cell_integral() const { return new poisson3d_2_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson3d_2_form_0::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson3d_2_form_0::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson3d_2_form_0::create_default_point_integral() const { return 0; } /// Constructor poisson3d_2_form_1::poisson3d_2_form_1() : ufc::form() { // Do nothing } /// Destructor poisson3d_2_form_1::~poisson3d_2_form_1() { // Do nothing } /// Return a string identifying the form const char* poisson3d_2_form_1::signature() const { return "4419ba05a1a8e32a1a5f347a5120066496f9ecbe890db93e131607ad0314414acfb5903bc27c108b0bcf58b03f7bed7119e166a555c17ef05c78c94084e7ae29"; } /// Return the rank of the global tensor (r) std::size_t poisson3d_2_form_1::rank() const { return 1; } /// Return the number of coefficients (n) std::size_t poisson3d_2_form_1::num_coefficients() const { return 1; } /// Return the number of cell domains std::size_t poisson3d_2_form_1::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson3d_2_form_1::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson3d_2_form_1::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson3d_2_form_1::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson3d_2_form_1::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson3d_2_form_1::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson3d_2_form_1::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson3d_2_form_1::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson3d_2_form_1::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson3d_2_finite_element_0(); break; } case 1: { return new poisson3d_2_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson3d_2_form_1::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson3d_2_dofmap_0(); break; } case 1: { return new poisson3d_2_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson3d_2_form_1::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson3d_2_form_1::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson3d_2_form_1::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson3d_2_form_1::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson3d_2_form_1::create_default_cell_integral() const { return new poisson3d_2_cell_integral_1_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson3d_2_form_1::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson3d_2_form_1::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson3d_2_form_1::create_default_point_integral() const { return 0; } dolfin-1.3.0/bench/fem/convergence/cpp/Poisson2D_2.ufl0000644000175000017500000000170112263014601022317 0ustar johannrjohannr# Copyright (C) 2005-2006 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2005 # Last changed: 2006-03-28 # # Poisson's equation in 2D for q = 2 element = FiniteElement("Lagrange", triangle, 2) v = TestFunction(element) U = TrialFunction(element) f = Coefficient(element) a = v.dx(i)*U.dx(i)*dx L = v*f*dx dolfin-1.3.0/bench/fem/convergence/cpp/Poisson2D_5.ufl0000644000175000017500000000170112263014601022322 0ustar johannrjohannr# Copyright (C) 2005-2006 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2005 # Last changed: 2006-03-28 # # Poisson's equation in 2D for q = 5 element = FiniteElement("Lagrange", triangle, 5) v = TestFunction(element) U = TrialFunction(element) f = Coefficient(element) a = v.dx(i)*U.dx(i)*dx L = v*f*dx dolfin-1.3.0/bench/fem/convergence/cpp/Poisson3D_3.h0000644000175000017500000010754012263015054021775 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #ifndef __POISSON3D_3_H #define __POISSON3D_3_H #include #include #include #include /// This class defines the interface for a finite element. class poisson3d_3_finite_element_0: public ufc::finite_element { public: /// Constructor poisson3d_3_finite_element_0(); /// Destructor virtual ~poisson3d_3_finite_element_0(); /// Return a string identifying the finite element virtual const char* signature() const; /// Return the cell shape virtual ufc::shape cell_shape() const; /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const; /// Return the rank of the value space virtual std::size_t value_rank() const; /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const; /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const; /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const; /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const; /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const; /// Create a new class instance virtual ufc::finite_element* create() const; }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class poisson3d_3_dofmap_0: public ufc::dofmap { public: /// Constructor poisson3d_3_dofmap_0(); /// Destructor virtual ~poisson3d_3_dofmap_0(); /// Return a string identifying the dofmap virtual const char* signature() const; /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const; /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const; /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const; /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const; /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const; /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const; /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const; /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const; /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** coordinates, const double* vertex_coordinates) const; /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const; /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const; /// Create a new class instance virtual ufc::dofmap* create() const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson3d_3_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor poisson3d_3_cell_integral_0_otherwise(); /// Destructor virtual ~poisson3d_3_cell_integral_0_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson3d_3_cell_integral_1_otherwise: public ufc::cell_integral { public: /// Constructor poisson3d_3_cell_integral_1_otherwise(); /// Destructor virtual ~poisson3d_3_cell_integral_1_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson3d_3_form_0: public ufc::form { public: /// Constructor poisson3d_3_form_0(); /// Destructor virtual ~poisson3d_3_form_0(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson3d_3_form_1: public ufc::form { public: /// Constructor poisson3d_3_form_1(); /// Destructor virtual ~poisson3d_3_form_1(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Poisson3D_3 { class CoefficientSpace_f: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_f(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_f() { } }; class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new poisson3d_3_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new poisson3d_3_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; class Form_L_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_L_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_3_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_L_FunctionSpace_0() { } }; typedef CoefficientSpace_f Form_L_FunctionSpace_1; class Form_L: public dolfin::Form { public: // Constructor Form_L(const dolfin::FunctionSpace& V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _ufc_form = boost::shared_ptr(new poisson3d_3_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = f; _ufc_form = boost::shared_ptr(new poisson3d_3_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = *f; _ufc_form = boost::shared_ptr(new poisson3d_3_form_1()); } // Constructor Form_L(boost::shared_ptr V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; _ufc_form = boost::shared_ptr(new poisson3d_3_form_1()); } // Constructor Form_L(boost::shared_ptr V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = f; _ufc_form = boost::shared_ptr(new poisson3d_3_form_1()); } // Constructor Form_L(boost::shared_ptr V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = *f; _ufc_form = boost::shared_ptr(new poisson3d_3_form_1()); } // Destructor ~Form_L() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { if (name == "f") return 0; dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { switch (i) { case 0: return "f"; } dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return "unnamed"; } // Typedefs typedef Form_L_FunctionSpace_0 TestSpace; typedef Form_L_FunctionSpace_1 CoefficientSpace_f; // Coefficients dolfin::CoefficientAssigner f; }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_L LinearForm; typedef Form_L ResidualForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/convergence/cpp/CMakeLists.txt0000644000175000017500000000226512263015065022321 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_fem_convergence_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(${PROJECT_NAME} Poisson3D_4.cpp Poisson3D_3.cpp Poisson3D_2.cpp Poisson3D_5.cpp Poisson2D_4.cpp Poisson2D_2.cpp Poisson3D_1.cpp Poisson2D_1.cpp Poisson2D_3.cpp main.cpp Poisson2D_5.cpp) # Target libraries target_link_libraries(${PROJECT_NAME} ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/fem/convergence/cpp/Poisson3D_1.h0000644000175000017500000010754012263015056021775 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #ifndef __POISSON3D_1_H #define __POISSON3D_1_H #include #include #include #include /// This class defines the interface for a finite element. class poisson3d_1_finite_element_0: public ufc::finite_element { public: /// Constructor poisson3d_1_finite_element_0(); /// Destructor virtual ~poisson3d_1_finite_element_0(); /// Return a string identifying the finite element virtual const char* signature() const; /// Return the cell shape virtual ufc::shape cell_shape() const; /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const; /// Return the rank of the value space virtual std::size_t value_rank() const; /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const; /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const; /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const; /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const; /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const; /// Create a new class instance virtual ufc::finite_element* create() const; }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class poisson3d_1_dofmap_0: public ufc::dofmap { public: /// Constructor poisson3d_1_dofmap_0(); /// Destructor virtual ~poisson3d_1_dofmap_0(); /// Return a string identifying the dofmap virtual const char* signature() const; /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const; /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const; /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const; /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const; /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const; /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const; /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const; /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const; /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** coordinates, const double* vertex_coordinates) const; /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const; /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const; /// Create a new class instance virtual ufc::dofmap* create() const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson3d_1_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor poisson3d_1_cell_integral_0_otherwise(); /// Destructor virtual ~poisson3d_1_cell_integral_0_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson3d_1_cell_integral_1_otherwise: public ufc::cell_integral { public: /// Constructor poisson3d_1_cell_integral_1_otherwise(); /// Destructor virtual ~poisson3d_1_cell_integral_1_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson3d_1_form_0: public ufc::form { public: /// Constructor poisson3d_1_form_0(); /// Destructor virtual ~poisson3d_1_form_0(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson3d_1_form_1: public ufc::form { public: /// Constructor poisson3d_1_form_1(); /// Destructor virtual ~poisson3d_1_form_1(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Poisson3D_1 { class CoefficientSpace_f: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_f(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_f() { } }; class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new poisson3d_1_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new poisson3d_1_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; class Form_L_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_L_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson3d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson3d_1_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_L_FunctionSpace_0() { } }; typedef CoefficientSpace_f Form_L_FunctionSpace_1; class Form_L: public dolfin::Form { public: // Constructor Form_L(const dolfin::FunctionSpace& V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _ufc_form = boost::shared_ptr(new poisson3d_1_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = f; _ufc_form = boost::shared_ptr(new poisson3d_1_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = *f; _ufc_form = boost::shared_ptr(new poisson3d_1_form_1()); } // Constructor Form_L(boost::shared_ptr V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; _ufc_form = boost::shared_ptr(new poisson3d_1_form_1()); } // Constructor Form_L(boost::shared_ptr V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = f; _ufc_form = boost::shared_ptr(new poisson3d_1_form_1()); } // Constructor Form_L(boost::shared_ptr V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = *f; _ufc_form = boost::shared_ptr(new poisson3d_1_form_1()); } // Destructor ~Form_L() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { if (name == "f") return 0; dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { switch (i) { case 0: return "f"; } dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return "unnamed"; } // Typedefs typedef Form_L_FunctionSpace_0 TestSpace; typedef Form_L_FunctionSpace_1 CoefficientSpace_f; // Coefficients dolfin::CoefficientAssigner f; }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_L LinearForm; typedef Form_L ResidualForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/convergence/cpp/Poisson2D_1.h0000644000175000017500000010754012263015061021770 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #ifndef __POISSON2D_1_H #define __POISSON2D_1_H #include #include #include #include /// This class defines the interface for a finite element. class poisson2d_1_finite_element_0: public ufc::finite_element { public: /// Constructor poisson2d_1_finite_element_0(); /// Destructor virtual ~poisson2d_1_finite_element_0(); /// Return a string identifying the finite element virtual const char* signature() const; /// Return the cell shape virtual ufc::shape cell_shape() const; /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const; /// Return the rank of the value space virtual std::size_t value_rank() const; /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const; /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const; /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const; /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const; /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const; /// Create a new class instance virtual ufc::finite_element* create() const; }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class poisson2d_1_dofmap_0: public ufc::dofmap { public: /// Constructor poisson2d_1_dofmap_0(); /// Destructor virtual ~poisson2d_1_dofmap_0(); /// Return a string identifying the dofmap virtual const char* signature() const; /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const; /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const; /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const; /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const; /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const; /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const; /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const; /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const; /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** coordinates, const double* vertex_coordinates) const; /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const; /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const; /// Create a new class instance virtual ufc::dofmap* create() const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson2d_1_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor poisson2d_1_cell_integral_0_otherwise(); /// Destructor virtual ~poisson2d_1_cell_integral_0_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson2d_1_cell_integral_1_otherwise: public ufc::cell_integral { public: /// Constructor poisson2d_1_cell_integral_1_otherwise(); /// Destructor virtual ~poisson2d_1_cell_integral_1_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson2d_1_form_0: public ufc::form { public: /// Constructor poisson2d_1_form_0(); /// Destructor virtual ~poisson2d_1_form_0(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson2d_1_form_1: public ufc::form { public: /// Constructor poisson2d_1_form_1(); /// Destructor virtual ~poisson2d_1_form_1(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Poisson2D_1 { class CoefficientSpace_f: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_f(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_f() { } }; class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new poisson2d_1_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new poisson2d_1_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; class Form_L_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_L_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_1_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_L_FunctionSpace_0() { } }; typedef CoefficientSpace_f Form_L_FunctionSpace_1; class Form_L: public dolfin::Form { public: // Constructor Form_L(const dolfin::FunctionSpace& V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _ufc_form = boost::shared_ptr(new poisson2d_1_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = f; _ufc_form = boost::shared_ptr(new poisson2d_1_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = *f; _ufc_form = boost::shared_ptr(new poisson2d_1_form_1()); } // Constructor Form_L(boost::shared_ptr V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; _ufc_form = boost::shared_ptr(new poisson2d_1_form_1()); } // Constructor Form_L(boost::shared_ptr V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = f; _ufc_form = boost::shared_ptr(new poisson2d_1_form_1()); } // Constructor Form_L(boost::shared_ptr V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = *f; _ufc_form = boost::shared_ptr(new poisson2d_1_form_1()); } // Destructor ~Form_L() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { if (name == "f") return 0; dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { switch (i) { case 0: return "f"; } dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return "unnamed"; } // Typedefs typedef Form_L_FunctionSpace_0 TestSpace; typedef Form_L_FunctionSpace_1 CoefficientSpace_f; // Coefficients dolfin::CoefficientAssigner f; }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_L LinearForm; typedef Form_L ResidualForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/convergence/cpp/Poisson3D_1.ufl0000644000175000017500000000170412263014601022322 0ustar johannrjohannr# Copyright (C) 2005-2006 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2005 # Last changed: 2006-03-28 # # Poisson's equation in 3D for q = 1 element = FiniteElement("Lagrange", tetrahedron, 1) v = TestFunction(element) U = TrialFunction(element) f = Coefficient(element) a = v.dx(i)*U.dx(i)*dx L = v*f*dx dolfin-1.3.0/bench/fem/convergence/cpp/Poisson3D_5.cpp0000644000175000017500004070253312263015053022340 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #include "Poisson3D_5.h" /// Constructor poisson3d_5_finite_element_0::poisson3d_5_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor poisson3d_5_finite_element_0::~poisson3d_5_finite_element_0() { // Do nothing } /// Return a string identifying the finite element const char* poisson3d_5_finite_element_0::signature() const { return "FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 5, None)"; } /// Return the cell shape ufc::shape poisson3d_5_finite_element_0::cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape std::size_t poisson3d_5_finite_element_0::topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape std::size_t poisson3d_5_finite_element_0::geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space std::size_t poisson3d_5_finite_element_0::space_dimension() const { return 56; } /// Return the rank of the value space std::size_t poisson3d_5_finite_element_0::value_rank() const { return 0; } /// Return the dimension of the value space for axis i std::size_t poisson3d_5_finite_element_0::value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell void poisson3d_5_finite_element_0::evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.00945067404923496, 0.0060978812067925, 0.00352061335622802, 0.00248944957812477, 0.00705946233325036, 0.00546823600997146, 0.00446479600584758, 0.00315708753234941, 0.00257775117585288, 0.00182274533665716, -0.00298267418725715, -0.00252081977982931, -0.00218309396769448, -0.00195261860521384, -0.00169101731601733, -0.00138070985681771, -0.0011273448773449, -0.00097630930260694, -0.000797153207506486, -0.000563672438672443, 0.00278687112460006, 0.00245778931055955, 0.00219831358911339, 0.00207721109304567, 0.00185791408306669, 0.00160900079398463, 0.00160900079398464, 0.00143913406048031, 0.00124632665582739, 0.00101762145320215, 0.00092895704153337, 0.000830884437218253, 0.000719567030240159, 0.000587524019939406, 0.000415442218609134, -0.00705593524717797, -0.00638233357089079, -0.00582624677716565, -0.00562868913761196, -0.00513826668309062, -0.00459580543596521, -0.00475711057319694, -0.00434262794914382, -0.00388416451811044, -0.00336378514516178, -0.00368484200521178, -0.00336378514516176, -0.00300866089851429, -0.00260557676948629, -0.00212744452363027, -0.00212744452363026, -0.00194208225905519, -0.00173705117965752, -0.00150433044925714, -0.00122828066840393, -0.000868525589828762}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.00945067404923489, -0.00609788120679248, 0.00352061335622803, 0.00248944957812477, 0.0070594623332504, -0.00546823600997143, -0.00446479600584756, 0.00315708753234942, 0.00257775117585286, 0.00182274533665715, 0.00298267418725715, -0.0025208197798293, -0.00218309396769447, 0.00195261860521383, 0.00169101731601732, 0.00138070985681771, -0.00112734487734489, -0.000976309302606922, -0.000797153207506473, -0.000563672438672435, 0.00278687112460003, -0.00245778931055953, -0.0021983135891134, 0.00207721109304565, 0.00185791408306669, 0.00160900079398462, -0.00160900079398462, -0.0014391340604803, -0.00124632665582741, -0.00101762145320216, 0.000928957041533351, 0.000830884437218258, 0.000719567030240153, 0.000587524019939406, 0.000415442218609128, 0.00705593524717798, -0.00638233357089081, -0.00582624677716566, 0.00562868913761197, 0.00513826668309062, 0.0045958054359652, -0.00475711057319694, -0.00434262794914383, -0.00388416451811044, -0.00336378514516178, 0.00368484200521179, 0.00336378514516178, 0.0030086608985143, 0.00260557676948629, 0.00212744452363027, -0.00212744452363027, -0.00194208225905521, -0.00173705117965753, -0.00150433044925715, -0.00122828066840393, -0.000868525589828762}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.00945067404923493, 0.0, -0.00704122671245613, 0.00248944957812475, 0.0, 0.0, 0.0, 0.0094712625970483, -0.00515550235170573, 0.00182274533665714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00450937950937951, -0.00292892790782074, 0.00159430641501297, -0.000563672438672429, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00464478520766671, -0.00332353774887303, 0.00215870109072045, -0.00117504803987881, 0.000415442218609134, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0127646671417816, -0.0097104112952761, 0.00694820471863011, -0.00451299134777143, 0.00245656133680785, -0.000868525589828767}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.00945067404923494, 0.0, 0.0, -0.00746834873437434, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0109364720199429, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00563672438672437, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00623163327913695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0182390373864041}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734309, 0.0, 0.03747187483114, -0.0289614183593723, 0.0, 0.0, 0.0, 0.0284137877911448, 0.0051555023517057, -0.00619733414463431, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0315656565656566, -0.0113902751970807, 0.00265717735835489, -0.0001878908128908, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0232239260383337, -0.00166176887443655, -0.00647610327216137, 0.00646276421933345, -0.00290809553026392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0213629048496074, -0.0277928188745204, 0.0243701532779658, -0.0157219925555703, 0.00607967912880134}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734309, 0.0, -0.028757485335526, 0.05360943398437, 0.0, 0.0, 0.0, -0.0189425251940965, 0.0154665070551171, 0.0153110608279201, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.00450937950937952, 0.0370997534990628, -0.0281660799985623, 0.0108976671476671, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0299118397398575, -0.00431740218144093, -0.0123380044187275, 0.00872428659079177, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0312669212338356, -0.0487403065559316, 0.041270230458372, -0.0182390373864041}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734308, 0.0, 0.0409576306293854, -0.0449826285156208, 0.0, 0.0, 0.0, 0.0189425251940965, -0.00515550235170572, -0.0211438459052229, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00455611007883225, 0.0356061766019561, -0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0302218152700864, 0.00411266813957585, -0.0145404776513196, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0379091273212801, -0.0550269739444961, 0.0303983956440068}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734311, 0.0, -0.0148144621425437, 0.0449826285156208, 0.0, 0.0, 0.0, 0.0, 0.0206220094068229, 0.0211438459052229, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0106287094334197, 0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.020563340697879, 0.0145404776513197, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0343918587153101, -0.0303983956440068}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734311, 0.0324515955311977, -0.0187359374155699, -0.0289614183593722, 0.0211783869997511, -0.0164047080299144, 0.00446479600584756, 0.00947126259704828, -0.00257775117585288, -0.00619733414463432, 0.0208787193108001, -0.0176457384588052, -0.00848980987436739, 0.0136683302364968, 0.00657617845117846, 0.0023011830946962, -0.00789141414141414, -0.0037967583990269, -0.00132858867917748, -0.000187890812890802, 0.0139343556230002, -0.0122889465527977, -0.00109915679455668, 0.0103860554652283, 0.000928957041533349, -0.00482700238195388, -0.00804500396992314, -0.000719567030240151, 0.00373897996748219, 0.00559691799261186, 0.00464478520766674, 0.000415442218609144, -0.00215870109072048, -0.0032313821096667, -0.00290809553026392, 0.0, 0.0, 0.0128177429097644, 0.0, -0.0113041867027994, -0.0183832217438608, 0.0, 0.0095537814881164, 0.0155366580724417, 0.0181644397838736, 0.0, -0.00740032731935591, -0.0120346435940572, -0.014070114555226, -0.0136156449512337, 0.0, 0.00427258096992147, 0.00694820471863013, 0.00812338442598859, 0.00786099627778514, 0.00607967912880134}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734309, -0.024904712849524, 0.014378742667763, 0.0536094339843699, -0.0141189246665007, 0.0109364720199429, 0.0133943880175427, -0.00631417506469883, -0.00773325352755858, 0.01531106082792, -0.00298267418725717, 0.00252081977982932, 0.0276525235907967, -0.00195261860521384, -0.0214195526695527, -0.0243925408037796, 0.00112734487734487, 0.0123665844996876, 0.0140830399992811, 0.0108976671476671, 0.0, 0.0, 0.0197848223020205, 0.0, -0.0167212267476003, -0.00321800158796925, 0.0, 0.0129522065443228, 0.00249265331165478, -0.0106850252586227, 0.0, -0.00747795993496439, -0.0014391340604803, 0.00616900220936372, 0.00872428659079176, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0206811244618434, 0.0, 0.0, -0.017478740331497, -0.0363288795677472, 0.0, 0.0, 0.0135389740433143, 0.0281402291104519, 0.0357410679969885, 0.0, 0.0, -0.00781673030845889, -0.0162467688519772, -0.020635115229186, -0.018239037386404}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734309, 0.0354703486038674, -0.0204788153146928, -0.0449826285156207, 0.0141189246665008, -0.0109364720199429, -0.00446479600584758, 0.00631417506469885, 0.00257775117585283, -0.0211438459052229, 0.0, 0.0, 0.00339592394974695, 0.0, -0.00263047138047139, 0.0308358534689291, 0.0, 0.00151870335961075, -0.017803088300978, -0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0225260111157848, 0.0, 0.0, -0.0174485731815835, 0.00356167508620758, 0.0, 0.0, 0.0100739384233621, -0.0020563340697879, -0.0145404776513196, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0282557952193589, 0.0, 0.0, 0.0, -0.0218868448636848, -0.047654757329318, 0.0, 0.0, 0.0, 0.01263637577376, 0.027513486972248, 0.0303983956440067}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.010023442173431, -0.0128297005588457, 0.00740723107127188, 0.0449826285156207, 0.0, 0.0, 0.0178591840233903, 0.0, -0.0103110047034114, 0.0211438459052229, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00920473237878479, 0.0, 0.0, -0.00531435471670986, 0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0178083754310377, 0.0, 0.0, 0.0, -0.0102816703489396, 0.0145404776513196, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0297842233308238, 0.0, 0.0, 0.0, 0.0, -0.017195929357655, -0.0303983956440068}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 12: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734311, 0.0324515955311978, -0.0335503995581136, -0.00801060507812424, 0.0211783869997511, 0.00109364720199428, -0.0169662248222208, -0.00568275755822896, 0.00567105258687628, 0.0083846285486229, 0.0208787193108001, -0.0109235523792603, -0.0162519217595033, 0.00499002532443536, 0.00958243145743147, 0.0108922666482286, -0.00187890812890812, -0.00466458889023306, -0.00558007245254536, -0.00469727032227032, 0.0139343556230002, -0.00245778931055954, -0.0120907247401236, -0.00415442218609132, 0.00464478520766674, 0.00965400476390777, 0.00643600317593851, -0.000719567030240138, -0.00498530662330958, -0.006614539445814, -0.00464478520766673, -0.000415442218609131, 0.00215870109072044, 0.00323138210966672, 0.00290809553026393, 0.0, 0.0127646671417816, -0.00116524935543313, -0.0202632808954031, -0.00719357335632687, 0.00183832217438609, 0.0228341307513453, 0.0112908326677739, 0.00310733161448834, -0.00201827108709707, -0.020635115229186, -0.01143686949355, -0.00481385743762287, -0.000521115353897262, 0.00170195561890421, 0.0127646671417816, 0.00737991258440982, 0.00347410235931507, 0.000902598269554291, -0.000491312267361578, -0.000868525589828769}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 13: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734311, -0.0249047128495238, 0.0553363732971483, -0.00431340273437459, -0.0141189246665008, 0.0153110608279201, 0.00803663281052562, 0.00883984509057834, -0.0159820572902877, 0.000729098134662825, -0.00298267418725716, 0.0277290175781224, -0.00145539597846297, -0.0301571095694136, -0.0116492303992304, 0.00352848074520083, 0.0191648629148629, 0.00976309302606915, 0.00132858867917747, -0.00263047138047138, 0.0, 0.0196623144844763, -0.00219831358911338, -0.00727023882565979, -0.0148633126645336, 0.00402250198496157, -0.00724050357293082, 0.0129522065443227, 0.00685479660705068, -0.00457929653940971, 0.00928957041533347, -0.00664707549774609, -0.0057565362419212, -0.000293762009969709, 0.00290809553026394, 0.0, 0.0, 0.0, 0.0202632808954031, -0.00411061334647249, 0.000459580543596518, -0.0399597288148543, -0.00303983956440068, 0.00427258096992149, -0.00100913554354853, 0.0464290092656685, 0.00908221989193679, -0.00270779480866285, -0.00234501909253766, 0.00127646671417817, -0.031911667854454, -0.00776832903622087, 0.000868525589828756, 0.00180519653910858, 0.000245656133680792, -0.000868525589828773}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 14: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734312, 0.0354703486038674, -0.0492363006502185, -0.00431340273437457, 0.0141189246665008, -0.00656188321196578, -0.00982255121286467, -0.0164168551682169, 0.0149509568199466, 0.000729098134662869, 0.0, 0.0033610930397724, -0.00048513199282101, 0.0282044909641998, -0.0124007936507936, 0.0029148319199485, -0.0353234728234728, 0.00889526253486301, 0.00239145962251945, -0.00263047138047138, 0.0, 0.0, 0.0, 0.0218107164769794, -0.00557374224920009, 0.000804500396992312, -0.00402250198496154, -0.014391340604803, 0.00934744991870547, -0.00254405363300537, -0.0092895704153335, 0.0141250354327105, -0.00287826812096064, -0.00381890612960613, 0.00290809553026391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0266398192099028, -0.00911951869320202, 0.00233049871086626, -0.000336378514516179, -0.0515877880729651, 0.00840946286290446, 0.00300866089851429, -0.00286613444643492, 0.000850977809452106, 0.0425488904726053, -0.00388416451811045, -0.00347410235931507, 0.00120346435940572, 0.000982624534723146, -0.000868525589828758}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 15: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734311, -0.0128297005588457, 0.0448791059024117, -0.00801060507812425, 0.0, 0.0174983552319086, -0.003571836804678, 0.0132597676358676, -0.0175287079957994, 0.00838462854862288, 0.0, 0.0, 0.0, 0.00867830491206146, -0.00300625300625303, 0.000613648825252319, 0.0225468975468975, -0.019200749617936, 0.0122230158484327, -0.00469727032227032, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0160900079398463, -0.00719567030240155, 0.00249265331165479, -0.000508810726601085, 0.00464478520766675, -0.0108014976838375, 0.0107935054536023, -0.00734405024924252, 0.00290809553026394, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0257938940364826, -0.0134551405806471, 0.00601732179702858, -0.00208446141558904, 0.000425488904726059, -0.031911667854454, 0.0135945758133865, -0.00347410235931504, -0.000902598269554292, 0.0017195929357655, -0.000868525589828772}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 16: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734314, -0.0324515955311979, -0.0187359374155699, -0.0289614183593722, 0.0211783869997512, 0.0164047080299144, -0.00446479600584757, 0.00947126259704827, -0.00257775117585285, -0.0061973341446343, -0.0208787193108001, -0.0176457384588052, -0.0084898098743674, -0.0136683302364968, -0.00657617845117844, -0.00230118309469616, -0.00789141414141415, -0.00379675839902689, -0.00132858867917748, -0.0001878908128908, 0.0139343556230002, 0.0122889465527977, 0.00109915679455668, 0.0103860554652283, 0.000928957041533344, -0.00482700238195391, 0.00804500396992313, 0.000719567030240159, -0.0037389799674822, -0.00559691799261188, 0.00464478520766673, 0.000415442218609133, -0.00215870109072046, -0.00323138210966672, -0.00290809553026394, 0.0, 0.0, 0.0128177429097644, 0.0, 0.0113041867027994, 0.0183832217438608, 0.0, 0.0095537814881164, 0.0155366580724417, 0.0181644397838736, 0.0, 0.00740032731935589, 0.0120346435940572, 0.014070114555226, 0.0136156449512337, 0.0, 0.00427258096992147, 0.00694820471863012, 0.00812338442598859, 0.00786099627778515, 0.00607967912880135}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 17: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.010023442173431, 0.024904712849524, 0.014378742667763, 0.05360943398437, -0.0141189246665007, -0.0109364720199429, -0.0133943880175426, -0.00631417506469886, -0.0077332535275586, 0.01531106082792, 0.00298267418725715, 0.00252081977982932, 0.0276525235907967, 0.00195261860521382, 0.0214195526695527, 0.0243925408037797, 0.00112734487734487, 0.0123665844996876, 0.0140830399992811, 0.0108976671476671, 0.0, 0.0, -0.0197848223020205, 0.0, -0.0167212267476003, -0.00321800158796924, 0.0, -0.0129522065443228, -0.00249265331165475, 0.0106850252586226, 0.0, -0.00747795993496438, -0.0014391340604803, 0.00616900220936374, 0.00872428659079182, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0206811244618434, 0.0, 0.0, -0.017478740331497, -0.0363288795677472, 0.0, 0.0, -0.0135389740433143, -0.0281402291104519, -0.0357410679969884, 0.0, 0.0, -0.00781673030845888, -0.0162467688519772, -0.020635115229186, -0.018239037386404}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 18: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.010023442173431, -0.0354703486038674, -0.0204788153146927, -0.0449826285156207, 0.0141189246665007, 0.0109364720199429, 0.00446479600584753, 0.00631417506469884, 0.00257775117585289, -0.0211438459052229, 0.0, 0.0, 0.00339592394974695, 0.0, 0.00263047138047136, -0.030835853468929, 0.0, 0.00151870335961076, -0.0178030883009781, -0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0225260111157848, 0.0, 0.0, 0.0174485731815835, -0.00356167508620756, 0.0, 0.0, 0.0100739384233621, -0.00205633406978793, -0.0145404776513197, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0282557952193589, 0.0, 0.0, 0.0, 0.0218868448636848, 0.047654757329318, 0.0, 0.0, 0.0, 0.01263637577376, 0.0275134869722481, 0.0303983956440068}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 19: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.010023442173431, 0.0128297005588457, 0.00740723107127181, 0.0449826285156208, 0.0, 0.0, -0.0178591840233902, 0.0, -0.0103110047034115, 0.0211438459052229, 0.0, 0.0, 0.0, 0.0, 0.0, -0.00920473237878478, 0.0, 0.0, -0.00531435471670986, 0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0178083754310377, 0.0, 0.0, 0.0, -0.0102816703489395, 0.0145404776513197, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0297842233308237, 0.0, 0.0, 0.0, 0.0, -0.017195929357655, -0.0303983956440068}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 20: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734307, -0.0324515955311978, -0.0335503995581135, -0.00801060507812418, 0.0211783869997512, -0.00109364720199431, 0.0169662248222208, -0.00568275755822894, 0.00567105258687628, 0.00838462854862291, -0.0208787193108001, -0.0109235523792603, -0.0162519217595033, -0.00499002532443535, -0.00958243145743145, -0.0108922666482287, -0.00187890812890815, -0.00466458889023305, -0.00558007245254536, -0.00469727032227032, 0.0139343556230002, 0.00245778931055953, 0.0120907247401236, -0.00415442218609133, 0.00464478520766673, 0.00965400476390777, -0.0064360031759385, 0.000719567030240151, 0.00498530662330959, 0.00661453944581401, -0.00464478520766676, -0.000415442218609123, 0.00215870109072045, 0.00323138210966672, 0.00290809553026392, 0.0, 0.0127646671417816, -0.00116524935543312, 0.0202632808954031, 0.00719357335632687, -0.00183832217438608, 0.0228341307513453, 0.0112908326677739, 0.00310733161448834, -0.00201827108709707, 0.020635115229186, 0.0114368694935501, 0.00481385743762287, 0.000521115353897252, -0.00170195561890421, 0.0127646671417816, 0.00737991258440981, 0.00347410235931507, 0.000902598269554277, -0.000491312267361576, -0.000868525589828769}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 21: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734307, 0.0249047128495239, 0.0553363732971483, -0.0043134027343746, -0.0141189246665007, -0.0153110608279201, -0.00803663281052558, 0.00883984509057836, -0.0159820572902877, 0.000729098134662811, 0.00298267418725714, 0.0277290175781224, -0.00145539597846299, 0.0301571095694136, 0.0116492303992304, -0.00352848074520083, 0.0191648629148629, 0.00976309302606916, 0.00132858867917747, -0.00263047138047135, 0.0, -0.0196623144844763, 0.00219831358911336, -0.00727023882565976, -0.0148633126645336, 0.00402250198496157, 0.00724050357293085, -0.0129522065443227, -0.00685479660705067, 0.00457929653940969, 0.00928957041533352, -0.00664707549774611, -0.00575653624192119, -0.000293762009969713, 0.00290809553026392, 0.0, 0.0, 0.0, -0.0202632808954031, 0.00411061334647248, -0.00045958054359652, -0.0399597288148542, -0.00303983956440067, 0.00427258096992148, -0.00100913554354853, -0.0464290092656685, -0.00908221989193681, 0.00270779480866286, 0.00234501909253766, -0.00127646671417816, -0.031911667854454, -0.00776832903622085, 0.000868525589828735, 0.00180519653910859, 0.000245656133680784, -0.000868525589828764}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 22: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734311, -0.0354703486038674, -0.0492363006502186, -0.0043134027343746, 0.0141189246665008, 0.00656188321196571, 0.00982255121286463, -0.016416855168217, 0.0149509568199466, 0.000729098134662876, 0.0, 0.00336109303977241, -0.000485131992820999, -0.0282044909641998, 0.0124007936507936, -0.00291483191994852, -0.0353234728234728, 0.008895262534863, 0.00239145962251945, -0.0026304713804714, 0.0, 0.0, 0.0, 0.0218107164769794, -0.00557374224920008, 0.000804500396992314, 0.00402250198496156, 0.0143913406048031, -0.00934744991870547, 0.00254405363300538, -0.00928957041533351, 0.0141250354327105, -0.00287826812096063, -0.00381890612960613, 0.00290809553026392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0266398192099028, -0.00911951869320202, 0.00233049871086625, -0.000336378514516176, 0.0515877880729651, -0.00840946286290445, -0.00300866089851428, 0.00286613444643492, -0.000850977809452104, 0.0425488904726053, -0.00388416451811045, -0.00347410235931505, 0.00120346435940571, 0.000982624534723157, -0.000868525589828761}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 23: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734311, 0.0128297005588456, 0.0448791059024118, -0.00801060507812428, 0.0, -0.0174983552319087, 0.00357183680467806, 0.0132597676358676, -0.0175287079957995, 0.00838462854862291, 0.0, 0.0, 0.0, -0.00867830491206146, 0.00300625300625301, -0.000613648825252321, 0.0225468975468975, -0.019200749617936, 0.0122230158484327, -0.00469727032227032, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0160900079398463, 0.00719567030240155, -0.00249265331165478, 0.000508810726601092, 0.00464478520766676, -0.0108014976838374, 0.0107935054536023, -0.00734405024924251, 0.00290809553026393, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0257938940364825, 0.0134551405806471, -0.00601732179702859, 0.00208446141558904, -0.000425488904726056, -0.031911667854454, 0.0135945758133865, -0.00347410235931504, -0.000902598269554288, 0.00171959293576549, -0.000868525589828771}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 24: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734307, -0.0452812960900434, -0.0113287063442981, -0.00801060507812426, -0.00141189246665007, 0.0164047080299143, 0.0133943880175427, 0.0145226026488074, 0.0118576554089231, 0.00838462854862294, -0.00894802256177149, -0.0142846454190327, -0.0123708658169353, -0.014536160727703, -0.0125886844636845, -0.0102786178229764, -0.00939454064454066, -0.00813591085505764, -0.00664294339588733, -0.00469727032227033, -0.00836061337380014, 0.00245778931055954, 0.00219831358911338, 0.00830884437218263, 0.00743165633226679, 0.0064360031759385, 0.00965400476390779, 0.00863480436288184, 0.00747795993496438, 0.00610572871921294, 0.00650269929073342, 0.00581619106052785, 0.00503696921168106, 0.00411266813957582, 0.00290809553026392, 0.0352796762358899, 0.0191470007126724, 0.0174787403314969, 0.00788016479265676, 0.00719357335632689, 0.00643412761035129, 0.000951422114639382, 0.000868525589828755, 0.000776832903622077, 0.000672757029032345, -0.00221090520312707, -0.00201827108709705, -0.00180519653910857, -0.00156334606169178, -0.00127646671417816, -0.00212744452363026, -0.00194208225905521, -0.00173705117965752, -0.00150433044925714, -0.00122828066840393, -0.000868525589828761}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 25: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734311, 0.0603750614533913, -0.00610007264692972, -0.00431340273437463, -0.00564756986660036, -0.0218729440398857, -0.0178591840233902, 0.00126283501293975, 0.00103110047034115, 0.000729098134662875, 0.0417574386216003, 0.016805465198862, 0.0145539597846298, -0.000867830491206133, -0.000751563251563239, -0.000613648825252298, -0.00526094276094275, -0.0045561100788323, -0.00372004830169692, -0.00263047138047139, 0.00557374224920013, -0.0196623144844763, -0.0175865087129071, -0.0103860554652283, -0.00928957041533348, -0.00804500396992313, 0.00321800158796925, 0.00287826812096061, 0.00249265331165479, 0.00203524290640429, 0.00650269929073342, 0.00581619106052785, 0.00503696921168108, 0.00411266813957583, 0.00290809553026395, -0.0705593524717798, -0.0127646671417816, -0.0116524935543313, 0.00450295131008955, 0.00411061334647247, 0.00367664434877214, 0.00380568845855755, 0.00347410235931508, 0.00310733161448836, 0.00269102811612943, -0.000736968401042361, -0.000672757029032368, -0.000601732179702867, -0.000521115353897261, -0.000425488904726046, -0.00212744452363026, -0.00194208225905521, -0.00173705117965753, -0.00150433044925714, -0.00122828066840394, -0.000868525589828775}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 26: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734311, -0.0603750614533913, -0.00610007264692977, -0.00431340273437462, -0.00564756986660027, 0.0218729440398858, 0.0178591840233902, 0.00126283501293977, 0.00103110047034114, 0.000729098134662858, -0.0417574386216002, 0.016805465198862, 0.0145539597846299, 0.000867830491206133, 0.000751563251563231, 0.000613648825252297, -0.00526094276094275, -0.00455611007883227, -0.0037200483016969, -0.00263047138047138, 0.00557374224920005, 0.0196623144844763, 0.0175865087129071, -0.0103860554652283, -0.00928957041533347, -0.00804500396992315, -0.00321800158796928, -0.00287826812096063, -0.0024926533116548, -0.00203524290640429, 0.00650269929073343, 0.00581619106052785, 0.00503696921168108, 0.00411266813957581, 0.00290809553026392, 0.0705593524717798, -0.0127646671417816, -0.0116524935543313, -0.00450295131008957, -0.00411061334647248, -0.00367664434877215, 0.00380568845855754, 0.00347410235931504, 0.00310733161448834, 0.00269102811612942, 0.000736968401042369, 0.000672757029032361, 0.000601732179702872, 0.000521115353897267, 0.000425488904726048, -0.00212744452363027, -0.00194208225905522, -0.00173705117965754, -0.00150433044925714, -0.00122828066840393, -0.000868525589828761}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 27: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.010023442173431, 0.0452812960900435, -0.0113287063442981, -0.00801060507812427, -0.00141189246665011, -0.0164047080299144, -0.0133943880175427, 0.0145226026488074, 0.0118576554089232, 0.0083846285486229, 0.00894802256177148, -0.0142846454190328, -0.0123708658169354, 0.014536160727703, 0.0125886844636845, 0.0102786178229764, -0.00939454064454066, -0.00813591085505764, -0.00664294339588733, -0.00469727032227032, -0.0083606133738001, -0.00245778931055954, -0.0021983135891134, 0.00830884437218264, 0.00743165633226679, 0.00643600317593852, -0.00965400476390776, -0.00863480436288183, -0.00747795993496437, -0.00610572871921294, 0.00650269929073343, 0.00581619106052784, 0.00503696921168107, 0.00411266813957582, 0.00290809553026394, -0.0352796762358899, 0.0191470007126724, 0.017478740331497, -0.00788016479265674, -0.00719357335632688, -0.00643412761035128, 0.000951422114639399, 0.00086852558982876, 0.00077683290362209, 0.000672757029032358, 0.00221090520312706, 0.00201827108709707, 0.00180519653910857, 0.00156334606169177, 0.00127646671417816, -0.00212744452363025, -0.00194208225905521, -0.00173705117965752, -0.00150433044925714, -0.00122828066840393, -0.000868525589828767}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 28: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769578, 0.0679219441350651, -0.00435719474780698, -0.00308100195312476, 0.0705946233325039, -0.0328094160598288, -0.0267887760350854, 0.0126283501293977, 0.0360885164619401, -0.00729098134662863, 0.0298267418725716, 0.0151249186789759, 0.0130985638061668, -0.0325436434202305, -0.0229226791726792, -0.0248527774227189, 0.0248015873015873, 0.0169226945785198, 0.0164744996218006, 0.0142797017797018, 0.0, 0.0245778931055954, 0.0219831358911339, -0.0363511941282991, -0.0074316563322668, -0.0345935170706696, 0.0362025178646541, 0.0, 0.0130864298861876, 0.0335815079556711, -0.0232239260383337, 0.00166176887443654, -0.00359783515120076, -0.0146881004984851, -0.0178640154001927, 0.0, 0.0, 0.0, 0.0, 0.0226083734055987, -0.00459580543596521, 0.0, -0.0334382352084074, -0.0194208225905522, 0.00908221989193681, 0.0, 0.0333014729371016, 0.0270779480866286, 0.00703505727761298, -0.0102117337134253, 0.0, -0.0213629048496074, -0.0191075629762328, -0.00812338442598858, 0.0019652490694463, 0.00607967912880137}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 29: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.021478804657352, 0.00377344134083692, 0.00217859737390368, -0.021567013671873, 0.0, 0.0984282481794863, -0.031253572040933, -0.0852413633734345, -0.01804425823097, 0.0309866707231717, 0.0, 0.0453747560369276, -0.0116431678277039, 0.0, 0.0236742424242424, -0.00138070985681773, -0.0202922077922078, -0.0335199527228374, -0.000797153207506548, 0.00394570707070709, 0.0, 0.0, 0.0, 0.036351194128299, 0.024152883079867, -0.00724050357293084, -0.0603375297744236, 0.0, -0.039259289658563, 0.0188259968842399, 0.0464478520766673, -0.0108014976838374, 0.0259044130886455, 0.010869194368879, -0.0178640154001927, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0334382352084074, -0.0155366580724417, 0.00302740663064559, 0.0, -0.0555024548951693, 0.0, 0.0164151336477636, -0.00680782247561685, 0.0, 0.0427258096992147, 0.00694820471863017, -0.0108311792346515, -0.00393049813889261, 0.00607967912880133}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 30: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769579, 0.0301875307266958, 0.0610007264692972, -0.00308100195312477, 0.0, 0.0218729440398859, 0.0178591840233903, 0.0757701007763862, -0.0412440188136457, -0.00729098134662863, 0.0, 0.0, 0.0, 0.0520698294723688, -0.0127765752765753, 0.00184094647575699, -0.00901875901875901, 0.0286384062098029, -0.0297603864135752, 0.0142797017797018, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0402250198496157, 0.014391340604803, -0.0137095932141014, 0.00407048581280862, -0.0464478520766673, 0.0182794576188018, -0.0345392174515273, 0.0364264892362429, -0.0178640154001927, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0370016365967795, -0.030086608985143, 0.014070114555226, -0.00340391123780845, 0.0, -0.0427258096992148, 0.0243187165152054, 0.0, -0.00982624534723142, 0.00607967912880138}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 31: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.021478804657352, 0.00377344134083704, -0.0196073763651314, 0.00924300585937434, 0.0, -0.0109364720199429, 0.102690308134494, 0.00947126259704824, -0.0695992817480272, -0.0601505961096861, 0.0, -0.00504163955965858, 0.0465726713108155, 0.00650872868404611, 0.0214195526695527, -0.00782402252196706, -0.00450937950937954, -0.0289638426440052, -0.0263060558477139, 0.000563672438672419, 0.0, 0.0, 0.0, 0.0, 0.0334424534952005, 0.0289620142917233, 0.0, -0.0431740218144092, -0.00249265331165474, -0.0605484764655283, 0.0, 0.0299118397398575, -0.00431740218144092, 0.0185070066280912, 0.0461140862656136, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0349574806629939, -0.0121096265225824, 0.0, 0.0, -0.0451299134777144, -0.0281402291104519, 0.023827378664659, 0.0, 0.0, 0.0312669212338355, 0.0270779480866286, 0.0, -0.0182390373864041}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 32: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573519, -0.0150937653633477, 0.0130715842434208, 0.00924300585937425, 0.0, -0.0109364720199429, -0.0089295920116951, 0.00947126259704835, 0.123732056440937, -0.0601505961096861, 0.0, 0.0, 0.0, -0.00650872868404604, 0.0574945887445887, -0.0266937238984759, 0.00676406926406926, 0.0126920209338899, 0.00637722566005186, 0.000563672438672455, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0431740218144092, 0.0199412264932384, -0.0142467003448302, 0.0, -0.0448677596097863, 0.0215870109072046, -0.0616900220936373, 0.0461140862656137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0451299134777144, -0.0375203054806026, 0.0119136893323295, 0.0, 0.0, -0.0469003818507533, 0.0162467688519772, 0.020635115229186, -0.0182390373864041}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 33: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769579, 0.0301875307266957, 0.0174287789912278, 0.0585390371093694, 0.0, 0.0218729440398859, 0.0178591840233903, -0.0189425251940966, 0.0103110047034114, 0.0838462854862291, 0.0, 0.0, 0.0, 0.0, 0.00526094276094278, 0.0533874477969518, 0.0, -0.00455611007883231, 0.0308232573569172, -0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.034897146363167, 0.0284934006896603, 0.0, 0.0, -0.0302218152700864, 0.0164506725583033, -0.0643935438844155, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0437736897273697, -0.023827378664659, 0.0, 0.0, 0.0, -0.0379091273212801, -0.013756743486124, 0.0303983956440068}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 34: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769576, -0.0679219441350653, -0.00435719474780704, -0.00308100195312475, 0.0705946233325039, 0.0328094160598287, 0.0267887760350853, 0.0126283501293977, 0.03608851646194, -0.00729098134662861, -0.0298267418725716, 0.0151249186789759, 0.0130985638061669, 0.0325436434202305, 0.0229226791726792, 0.0248527774227189, 0.0248015873015873, 0.0169226945785198, 0.0164744996218006, 0.0142797017797018, 0.0, -0.0245778931055953, -0.0219831358911338, -0.036351194128299, -0.00743165633226677, -0.0345935170706695, -0.0362025178646541, 0.0, -0.0130864298861876, -0.0335815079556711, -0.0232239260383336, 0.00166176887443655, -0.00359783515120076, -0.0146881004984851, -0.0178640154001927, 0.0, 0.0, 0.0, 0.0, -0.0226083734055987, 0.00459580543596522, 0.0, -0.0334382352084074, -0.0194208225905522, 0.00908221989193681, 0.0, -0.0333014729371016, -0.0270779480866286, -0.00703505727761297, 0.0102117337134253, 0.0, -0.0213629048496074, -0.0191075629762328, -0.00812338442598856, 0.0019652490694463, 0.00607967912880137}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 35: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573516, -0.00377344134083683, 0.00217859737390362, -0.0215670136718728, 0.0, -0.0984282481794862, 0.031253572040933, -0.0852413633734344, -0.0180442582309701, 0.0309866707231716, 0.0, 0.0453747560369275, -0.0116431678277039, 0.0, -0.0236742424242424, 0.00138070985681772, -0.0202922077922078, -0.0335199527228374, -0.000797153207506536, 0.0039457070707071, 0.0, 0.0, 0.0, 0.036351194128299, 0.024152883079867, -0.0072405035729308, 0.0603375297744236, 0.0, 0.039259289658563, -0.0188259968842399, 0.0464478520766673, -0.0108014976838374, 0.0259044130886455, 0.010869194368879, -0.0178640154001927, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0334382352084074, -0.0155366580724417, 0.00302740663064559, 0.0, 0.0555024548951693, 0.0, -0.0164151336477637, 0.00680782247561685, 0.0, 0.0427258096992147, 0.00694820471863021, -0.0108311792346515, -0.0039304981388926, 0.00607967912880134}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 36: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769579, -0.0301875307266958, 0.0610007264692973, -0.00308100195312476, 0.0, -0.0218729440398857, -0.0178591840233903, 0.0757701007763862, -0.0412440188136456, -0.0072909813466286, 0.0, 0.0, 0.0, -0.0520698294723688, 0.0127765752765753, -0.00184094647575695, -0.00901875901875896, 0.0286384062098028, -0.0297603864135752, 0.0142797017797018, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0402250198496158, -0.0143913406048031, 0.0137095932141013, -0.00407048581280863, -0.0464478520766673, 0.0182794576188018, -0.0345392174515273, 0.0364264892362429, -0.0178640154001927, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0370016365967796, 0.0300866089851429, -0.014070114555226, 0.00340391123780843, 0.0, -0.0427258096992147, 0.0243187165152053, 0.0, -0.00982624534723144, 0.00607967912880138}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 37: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573524, -0.00377344134083718, -0.0196073763651313, 0.00924300585937407, 0.0, 0.0109364720199428, -0.102690308134494, 0.00947126259704835, -0.0695992817480271, -0.060150596109686, 0.0, -0.00504163955965864, 0.0465726713108155, -0.00650872868404611, -0.0214195526695527, 0.00782402252196711, -0.00450937950937954, -0.0289638426440051, -0.0263060558477138, 0.000563672438672435, 0.0, 0.0, 0.0, 0.0, 0.0334424534952005, 0.0289620142917233, 0.0, 0.0431740218144092, 0.00249265331165475, 0.0605484764655282, 0.0, 0.0299118397398574, -0.00431740218144094, 0.0185070066280911, 0.0461140862656136, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0349574806629939, -0.0121096265225824, 0.0, 0.0, 0.0451299134777144, 0.0281402291104519, -0.0238273786646589, 0.0, 0.0, 0.0312669212338355, 0.0270779480866286, 0.0, -0.0182390373864041}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 38: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573521, 0.0150937653633479, 0.0130715842434209, 0.00924300585937413, 0.0, 0.0109364720199429, 0.00892959201169516, 0.0094712625970483, 0.123732056440937, -0.0601505961096861, 0.0, 0.0, 0.0, 0.00650872868404609, -0.0574945887445887, 0.0266937238984759, 0.00676406926406923, 0.0126920209338899, 0.00637722566005181, 0.000563672438672487, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0431740218144092, -0.0199412264932383, 0.0142467003448302, 0.0, -0.0448677596097863, 0.0215870109072046, -0.0616900220936373, 0.0461140862656137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0451299134777144, 0.0375203054806026, -0.0119136893323295, 0.0, 0.0, -0.0469003818507533, 0.0162467688519772, 0.020635115229186, -0.0182390373864041}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 39: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769579, -0.0301875307266957, 0.0174287789912278, 0.0585390371093694, 0.0, -0.0218729440398858, -0.0178591840233902, -0.0189425251940966, 0.0103110047034113, 0.083846285486229, 0.0, 0.0, 0.0, 0.0, -0.00526094276094274, -0.0533874477969517, 0.0, -0.00455611007883227, 0.0308232573569172, -0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0348971463631671, -0.0284934006896603, 0.0, 0.0, -0.0302218152700864, 0.0164506725583033, -0.0643935438844155, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0437736897273697, 0.023827378664659, 0.0, 0.0, 0.0, -0.0379091273212801, -0.013756743486124, 0.0303983956440068}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 40: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.078755617076958, -0.0377344134083695, -0.0566435317214905, -0.00308100195312478, 0.0423567739995023, 0.0546823600997146, 0.0446479600584757, 0.0378850503881931, 0.00515550235170577, -0.00729098134662859, 0.0417574386216002, -0.00504163955965862, 0.0295930515620807, -0.0247331689993752, 0.0101461038961039, 0.0266937238984759, -0.0202922077922078, 0.0021695762280154, 0.0132858867917747, 0.0142797017797018, -0.0557374224920008, -0.0245778931055954, -0.00219831358911337, -0.00519302773261414, -0.0130053985814668, -0.0168945083368385, 0.00402250198496158, -0.0158304746652834, -0.026796023100289, -0.0295110221428625, 0.00464478520766674, -0.0108014976838375, -0.0194283098164841, -0.0217383887377579, -0.0178640154001927, 0.0, 0.0, -0.0512709716390577, 0.0, -0.0226083734055987, -0.0367664434877216, 0.0, -0.0047768907440582, -0.00776832903622085, -0.00908221989193678, 0.0, 0.00370016365967796, 0.00601732179702859, 0.00703505727761299, 0.00680782247561684, 0.0, 0.00427258096992148, 0.0069482047186301, 0.00812338442598856, 0.00786099627778516, 0.00607967912880135}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 41: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573513, 0.0, -0.00435719474780703, -0.0215670136718729, -0.127070321998507, 0.0, 0.0, 0.0284137877911448, 0.0360885164619399, 0.0309866707231715, 0.0, 0.0453747560369275, -0.0422064833754265, 0.0, 0.0, 0.0, -0.0202922077922078, -0.00618329224984381, 0.00159430641501296, 0.0039457070707071, 0.0836061337380012, 0.0, 0.0, -0.0103860554652283, 0.024152883079867, 0.0434430214375849, 0.0, 0.0, 0.0, 0.0, 0.00464478520766673, -0.0108014976838374, -0.0194283098164841, -0.0217383887377578, -0.0178640154001927, 0.0, 0.0, 0.0769064574585865, 0.0, 0.0, 0.0, 0.0, -0.00955378148811642, -0.0155366580724417, -0.0181644397838736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00427258096992146, 0.00694820471863015, 0.00812338442598858, 0.00786099627778516, 0.00607967912880134}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 42: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769579, 0.0377344134083696, -0.0566435317214904, -0.00308100195312477, 0.0423567739995022, -0.0546823600997145, -0.0446479600584756, 0.037885050388193, 0.00515550235170577, -0.0072909813466285, -0.0417574386216002, -0.00504163955965861, 0.0295930515620806, 0.0247331689993752, -0.0101461038961039, -0.0266937238984759, -0.0202922077922078, 0.00216957622801539, 0.0132858867917747, 0.0142797017797018, -0.0557374224920008, 0.0245778931055953, 0.00219831358911336, -0.00519302773261413, -0.0130053985814669, -0.0168945083368386, -0.00402250198496157, 0.0158304746652834, 0.026796023100289, 0.0295110221428625, 0.00464478520766677, -0.0108014976838375, -0.0194283098164841, -0.0217383887377579, -0.0178640154001927, 0.0, 0.0, -0.0512709716390577, 0.0, 0.0226083734055987, 0.0367664434877216, 0.0, -0.00477689074405818, -0.00776832903622087, -0.00908221989193679, 0.0, -0.00370016365967795, -0.00601732179702858, -0.00703505727761299, -0.00680782247561685, 0.0, 0.0042725809699215, 0.00694820471863008, 0.00812338442598856, 0.00786099627778518, 0.00607967912880136}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 43: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573518, -0.0188672067041849, 0.00653579212171039, 0.00924300585937419, 0.0141189246665007, 0.0, -0.111619900146189, -0.00315708753234941, -0.0541327746929101, -0.0601505961096861, -0.00894802256177145, -0.0025208197798293, -0.0276525235907968, 0.000650872868404654, 0.0360750360750361, -0.0188697013765088, 0.00112734487734487, 0.0374251899332651, 0.0199288301876619, 0.000563672438672461, 0.0, 0.0, 0.0593544669060614, 0.0, 0.0167212267476002, 0.00321800158796923, 0.0, -0.00431740218144091, 0.0224338798048931, 0.0463017761206981, 0.0, -0.00747795993496437, 0.018708742786244, 0.0431830154655461, 0.0461140862656136, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0620433733855302, 0.0, 0.0, 0.017478740331497, 0.0363288795677472, 0.0, 0.0, -0.00451299134777147, -0.00938007637015062, -0.0119136893323295, 0.0, 0.0, -0.00781673030845886, -0.0162467688519772, -0.020635115229186, -0.0182390373864041}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 44: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573522, 0.0188672067041846, 0.00653579212171044, 0.00924300585937427, 0.0141189246665008, 0.0, 0.111619900146189, -0.00315708753234941, -0.0541327746929101, -0.0601505961096861, 0.00894802256177155, -0.0025208197798293, -0.0276525235907967, -0.000650872868404607, -0.0360750360750361, 0.0188697013765088, 0.00112734487734491, 0.0374251899332651, 0.019928830187662, 0.000563672438672448, 0.0, 0.0, -0.0593544669060614, 0.0, 0.0167212267476002, 0.00321800158796924, 0.0, 0.00431740218144093, -0.0224338798048931, -0.0463017761206981, 0.0, -0.00747795993496436, 0.018708742786244, 0.0431830154655461, 0.0461140862656137, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0620433733855302, 0.0, 0.0, 0.0174787403314969, 0.0363288795677472, 0.0, 0.0, 0.00451299134777145, 0.00938007637015066, 0.0119136893323295, 0.0, 0.0, -0.00781673030845888, -0.0162467688519772, -0.0206351152291861, -0.0182390373864041}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 45: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.078755617076958, 0.0, -0.0348575579824556, 0.0585390371093695, -0.0282378493330015, 0.0, 0.0, 0.00631417506469882, -0.0206220094068228, 0.0838462854862289, 0.0, 0.0, -0.0067918478994939, 0.0, 0.0, 0.0, 0.0, 0.00151870335961078, -0.0616465147138344, -0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0450520222315696, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0100739384233622, -0.0329013451166065, -0.0643935438844154, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0565115904387178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01263637577376, 0.027513486972248, 0.0303983956440068}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 46: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769581, -0.0377344134083695, -0.0217859737390349, -0.0523770332031201, 0.0423567739995024, 0.0546823600997146, 0.0446479600584758, 0.0, 0.0257775117585286, 0.0291639253865144, 0.0417574386216002, 0.0285692908380655, -0.00921750786359888, 0.0273366604729936, -0.00789141414141413, -0.0248527774227189, 0.0187890812890813, -0.00347132196482459, -0.0143487577351166, -0.015031265031265, -0.0557374224920008, -0.00491557862111905, -0.0241814494802473, -0.0197335053839337, -0.00928957041533348, -0.00241350119097693, -0.0394205194526234, -0.0158304746652834, -0.000623163327913709, 0.00712335017241507, -0.0325134964536671, -0.0141250354327105, -0.00215870109072047, 0.00411266813957583, 0.00540074884191869, 0.0, -0.0510586685671264, 0.00466099742173249, -0.0405265617908061, -0.0143871467126537, 0.00367664434877214, -0.0114170653756726, -0.00564541633388696, -0.00155366580724415, 0.00100913554354854, 0.0103175576145931, 0.00571843474677501, 0.00240692871881143, 0.000260557676948618, -0.000850977809452114, 0.0127646671417816, 0.00737991258440983, 0.00347410235931509, 0.000902598269554292, -0.00049131226736157, -0.000868525589828748}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 47: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573518, 0.0, -0.0217859737390347, 0.00308100195312486, -0.127070321998507, 0.0, 0.0, 0.0473563129852414, 0.0257775117585285, 0.0127592173566, 0.0, -0.0352914769176103, 0.0509388592462045, 0.0, 0.0, 0.0, 0.00225468975468972, -0.00943765659186685, -0.0143487577351166, -0.0129644660894661, 0.0836061337380012, 0.0, 0.0, 0.0477758551400501, 0.00928957041533347, -0.0144810071458617, 0.0, 0.0, 0.0, 0.0, -0.0325134964536671, -0.0141250354327105, -0.00215870109072047, 0.00411266813957584, 0.00540074884191877, 0.0, 0.0765880028506896, -0.00699149613259875, 0.0, 0.0, 0.0, -0.0228341307513453, -0.011290832667774, -0.00310733161448838, 0.00201827108709704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0127646671417816, 0.00737991258440981, 0.00347410235931506, 0.000902598269554269, -0.000491312267361589, -0.000868525589828803}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 48: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769582, 0.0377344134083696, -0.0217859737390348, -0.05237703320312, 0.0423567739995023, -0.0546823600997146, -0.0446479600584757, 0.0, 0.0257775117585286, 0.0291639253865145, -0.0417574386216002, 0.0285692908380655, -0.00921750786359894, -0.0273366604729936, 0.00789141414141414, 0.0248527774227189, 0.0187890812890813, -0.00347132196482458, -0.0143487577351166, -0.015031265031265, -0.0557374224920008, 0.00491557862111906, 0.0241814494802472, -0.0197335053839338, -0.00928957041533349, -0.00241350119097695, 0.0394205194526234, 0.0158304746652834, 0.000623163327913708, -0.00712335017241507, -0.0325134964536671, -0.0141250354327105, -0.00215870109072045, 0.0041126681395758, 0.00540074884191868, 0.0, -0.0510586685671264, 0.0046609974217325, 0.0405265617908061, 0.0143871467126537, -0.00367664434877216, -0.0114170653756727, -0.00564541633388696, -0.00155366580724416, 0.00100913554354855, -0.010317557614593, -0.00571843474677502, -0.00240692871881143, -0.000260557676948628, 0.000850977809452107, 0.0127646671417816, 0.00737991258440984, 0.00347410235931506, 0.000902598269554289, -0.000491312267361559, -0.000868525589828739}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 49: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573521, -0.0188672067041848, 0.0108929868695174, 0.00308100195312464, 0.0141189246665008, -0.109364720199429, 0.0223239800292378, -0.0789271883087356, -0.0128887558792643, 0.0127592173566001, -0.00894802256177147, -0.0277290175781224, 0.00145539597846298, -0.00585785581564146, 0.0383297258297258, -0.0124263887113595, 0.0191648629148629, 0.0348216984596467, 0.00717437886755837, -0.0129644660894661, 0.0, 0.0589869434534289, -0.00659494076734012, 0.00727023882565974, 0.0148633126645335, -0.0040225019849616, 0.0506835250105158, -0.00431740218144091, -0.00810112326287806, 0.00356167508620759, 0.0650269929073342, -0.00166176887443651, -0.0115130724838425, -0.00205633406978793, 0.00540074884191875, 0.0, 0.0, 0.0, 0.0607898426862092, -0.0123318400394175, 0.0013787416307896, 0.0399597288148543, 0.00303983956440067, -0.00427258096992151, 0.00100913554354852, -0.0154763364218896, -0.00302740663064561, 0.000902598269554316, 0.000781673030845898, -0.000425488904726051, -0.031911667854454, -0.00776832903622089, 0.000868525589828735, 0.00180519653910857, 0.000245656133680779, -0.000868525589828785}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 50: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573522, 0.0188672067041847, 0.0108929868695174, 0.00308100195312463, 0.0141189246665007, 0.109364720199429, -0.0223239800292378, -0.0789271883087357, -0.0128887558792643, 0.0127592173566001, 0.00894802256177146, -0.0277290175781224, 0.00145539597846298, 0.00585785581564147, -0.0383297258297259, 0.0124263887113595, 0.0191648629148629, 0.0348216984596467, 0.00717437886755832, -0.0129644660894661, 0.0, -0.0589869434534289, 0.00659494076734014, 0.00727023882565983, 0.0148633126645336, -0.00402250198496153, -0.0506835250105158, 0.00431740218144093, 0.00810112326287806, -0.00356167508620756, 0.0650269929073343, -0.00166176887443652, -0.0115130724838424, -0.00205633406978791, 0.00540074884191871, 0.0, 0.0, 0.0, -0.0607898426862092, 0.0123318400394175, -0.00137874163078959, 0.0399597288148542, 0.00303983956440069, -0.00427258096992146, 0.00100913554354852, 0.0154763364218896, 0.00302740663064561, -0.000902598269554309, -0.000781673030845883, 0.000425488904726061, -0.031911667854454, -0.00776832903622087, 0.000868525589828761, 0.00180519653910858, 0.000245656133680792, -0.000868525589828766}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 51: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769579, 0.0, 0.0435719474780695, -0.0523770332031201, -0.0282378493330016, 0.0, 0.0, 0.0631417506469885, -0.0515550235170571, 0.0291639253865144, 0.0, -0.00672218607954478, 0.00097026398564201, 0.0, 0.0, 0.0, -0.0601250601250601, -0.0125835421224891, 0.0286975154702332, -0.015031265031265, 0.0, 0.0, 0.0, -0.0436214329539588, 0.0111474844984002, -0.00160900079398465, 0.0, 0.0, 0.0, 0.0, -0.0650269929073343, 0.031573608614294, -0.00287826812096059, -0.00822533627915167, 0.00540074884191872, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0532796384198057, 0.018239037386404, -0.00466099742173253, 0.000672757029032364, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0425488904726053, -0.00388416451811041, -0.00347410235931508, 0.00120346435940574, 0.000982624534723167, -0.000868525589828753}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 52: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.107394023286761, -0.188672067041848, -0.108929868695174, -0.0770250488281178, -0.0705946233325038, -0.0546823600997146, -0.0446479600584758, -0.0315708753234942, -0.0257775117585285, -0.0182274533665714, 0.0894802256177148, -0.0151249186789758, -0.0130985638061669, 0.0585785581564149, -0.028183621933622, 0.0690354928408859, 0.0744047619047619, 0.00976309302606915, 0.039857660375324, 0.0597492784992785, 0.0, 0.0737336793167861, 0.0659494076734016, 0.036351194128299, 0.00743165633226676, 0.0345935170706695, -0.0120675059548847, 0.0431740218144092, 0.0155790831978424, -0.0254405363300539, -0.0232239260383337, 0.0465295284842228, 0.0251848460584054, -0.0146881004984851, -0.0328199352701215, 0.0, 0.0, 0.0, 0.0, 0.0678251202167962, -0.0137874163078956, 0.0, 0.0334382352084074, 0.0194208225905522, -0.00908221989193679, 0.0, -0.0111004909790339, -0.00902598269554286, -0.00234501909253765, 0.0034039112378084, 0.0, -0.0213629048496074, -0.0191075629762328, -0.00812338442598858, 0.0019652490694463, 0.00607967912880138}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 53: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.107394023286761, 0.188672067041848, -0.108929868695174, -0.0770250488281179, -0.0705946233325039, 0.0546823600997146, 0.0446479600584756, -0.0315708753234942, -0.0257775117585286, -0.0182274533665715, -0.0894802256177148, -0.0151249186789759, -0.0130985638061668, -0.058578558156415, 0.0281836219336219, -0.0690354928408858, 0.0744047619047619, 0.00976309302606914, 0.039857660375324, 0.0597492784992785, 0.0, -0.0737336793167861, -0.0659494076734016, 0.036351194128299, 0.0074316563322668, 0.0345935170706696, 0.0120675059548846, -0.0431740218144092, -0.0155790831978424, 0.0254405363300538, -0.0232239260383337, 0.0465295284842228, 0.0251848460584053, -0.014688100498485, -0.0328199352701215, 0.0, 0.0, 0.0, 0.0, -0.0678251202167962, 0.0137874163078956, 0.0, 0.0334382352084074, 0.0194208225905522, -0.0090822198919368, 0.0, 0.0111004909790338, 0.00902598269554286, 0.00234501909253764, -0.00340391123780842, 0.0, -0.0213629048496074, -0.0191075629762328, -0.00812338442598857, 0.00196524906944628, 0.00607967912880138}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 54: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.107394023286761, 0.0, 0.217859737390348, -0.0770250488281177, 0.0, 0.0, 0.0, -0.0947126259704828, 0.0515550235170571, -0.0182274533665715, 0.0, -0.0907495120738552, 0.0232863356554078, 0.0, 0.0, 0.0, -0.0946969696969697, -0.0227805503941613, -0.079715320750648, 0.0597492784992785, 0.0, 0.0, 0.0, -0.0727023882565981, -0.0483057661597341, 0.0144810071458617, 0.0, 0.0, 0.0, 0.0, 0.0464478520766673, -0.0781031370985168, 0.0431740218144092, 0.0293762009969702, -0.0328199352701214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0668764704168149, 0.0310733161448835, -0.00605481326129118, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0427258096992147, 0.00694820471863014, -0.0108311792346515, -0.00393049813889261, 0.00607967912880134}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 55: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.107394023286761, 0.0, 0.0, 0.231075146484353, 0.0, 0.0, 0.0, 0.0, 0.0, -0.109364720199429, 0.0, 0.0100832791193172, -0.0931453426216311, 0.0, 0.0, 0.0, -0.00450937950937957, -0.104139658944738, 0.0, -0.0924422799422799, 0.0, 0.0, 0.0, 0.0, -0.066884906990401, -0.0579240285834467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0299118397398575, -0.0647610327216138, 0.0, 0.0835038859404355, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0699149613259878, 0.0242192530451648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0312669212338355, 0.0270779480866287, 0.0, -0.0182390373864041}; // Compute value(s) for (unsigned int r = 0; r < 56; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell void poisson3d_5_finite_element_0::evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 56; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell void poisson3d_5_finite_element_0::evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 5) { return ; } // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[243][5]; for (unsigned int row = 0; row < 243; row++) { for (unsigned int col = 0; col < 5; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 2) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[3][3] = {{K[0], K[1], K[2]}, {K[3], K[4], K[5]}, {K[6], K[7], K[8]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[243][243]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.00945067404923496, 0.0060978812067925, 0.00352061335622802, 0.00248944957812477, 0.00705946233325036, 0.00546823600997146, 0.00446479600584758, 0.00315708753234941, 0.00257775117585288, 0.00182274533665716, -0.00298267418725715, -0.00252081977982931, -0.00218309396769448, -0.00195261860521384, -0.00169101731601733, -0.00138070985681771, -0.0011273448773449, -0.00097630930260694, -0.000797153207506486, -0.000563672438672443, 0.00278687112460006, 0.00245778931055955, 0.00219831358911339, 0.00207721109304567, 0.00185791408306669, 0.00160900079398463, 0.00160900079398464, 0.00143913406048031, 0.00124632665582739, 0.00101762145320215, 0.00092895704153337, 0.000830884437218253, 0.000719567030240159, 0.000587524019939406, 0.000415442218609134, -0.00705593524717797, -0.00638233357089079, -0.00582624677716565, -0.00562868913761196, -0.00513826668309062, -0.00459580543596521, -0.00475711057319694, -0.00434262794914382, -0.00388416451811044, -0.00336378514516178, -0.00368484200521178, -0.00336378514516176, -0.00300866089851429, -0.00260557676948629, -0.00212744452363027, -0.00212744452363026, -0.00194208225905519, -0.00173705117965752, -0.00150433044925714, -0.00122828066840393, -0.000868525589828762}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.00945067404923489, -0.00609788120679248, 0.00352061335622803, 0.00248944957812477, 0.0070594623332504, -0.00546823600997143, -0.00446479600584756, 0.00315708753234942, 0.00257775117585286, 0.00182274533665715, 0.00298267418725715, -0.0025208197798293, -0.00218309396769447, 0.00195261860521383, 0.00169101731601732, 0.00138070985681771, -0.00112734487734489, -0.000976309302606922, -0.000797153207506473, -0.000563672438672435, 0.00278687112460003, -0.00245778931055953, -0.0021983135891134, 0.00207721109304565, 0.00185791408306669, 0.00160900079398462, -0.00160900079398462, -0.0014391340604803, -0.00124632665582741, -0.00101762145320216, 0.000928957041533351, 0.000830884437218258, 0.000719567030240153, 0.000587524019939406, 0.000415442218609128, 0.00705593524717798, -0.00638233357089081, -0.00582624677716566, 0.00562868913761197, 0.00513826668309062, 0.0045958054359652, -0.00475711057319694, -0.00434262794914383, -0.00388416451811044, -0.00336378514516178, 0.00368484200521179, 0.00336378514516178, 0.0030086608985143, 0.00260557676948629, 0.00212744452363027, -0.00212744452363027, -0.00194208225905521, -0.00173705117965753, -0.00150433044925715, -0.00122828066840393, -0.000868525589828762}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.00945067404923493, 0.0, -0.00704122671245613, 0.00248944957812475, 0.0, 0.0, 0.0, 0.0094712625970483, -0.00515550235170573, 0.00182274533665714, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00450937950937951, -0.00292892790782074, 0.00159430641501297, -0.000563672438672429, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00464478520766671, -0.00332353774887303, 0.00215870109072045, -0.00117504803987881, 0.000415442218609134, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0127646671417816, -0.0097104112952761, 0.00694820471863011, -0.00451299134777143, 0.00245656133680785, -0.000868525589828767}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.00945067404923494, 0.0, 0.0, -0.00746834873437434, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0109364720199429, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00563672438672437, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00623163327913695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0182390373864041}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734309, 0.0, 0.03747187483114, -0.0289614183593723, 0.0, 0.0, 0.0, 0.0284137877911448, 0.0051555023517057, -0.00619733414463431, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0315656565656566, -0.0113902751970807, 0.00265717735835489, -0.0001878908128908, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0232239260383337, -0.00166176887443655, -0.00647610327216137, 0.00646276421933345, -0.00290809553026392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0213629048496074, -0.0277928188745204, 0.0243701532779658, -0.0157219925555703, 0.00607967912880134}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734309, 0.0, -0.028757485335526, 0.05360943398437, 0.0, 0.0, 0.0, -0.0189425251940965, 0.0154665070551171, 0.0153110608279201, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.00450937950937952, 0.0370997534990628, -0.0281660799985623, 0.0108976671476671, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0299118397398575, -0.00431740218144093, -0.0123380044187275, 0.00872428659079177, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0312669212338356, -0.0487403065559316, 0.041270230458372, -0.0182390373864041}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734308, 0.0, 0.0409576306293854, -0.0449826285156208, 0.0, 0.0, 0.0, 0.0189425251940965, -0.00515550235170572, -0.0211438459052229, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00455611007883225, 0.0356061766019561, -0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0302218152700864, 0.00411266813957585, -0.0145404776513196, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0379091273212801, -0.0550269739444961, 0.0303983956440068}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734311, 0.0, -0.0148144621425437, 0.0449826285156208, 0.0, 0.0, 0.0, 0.0, 0.0206220094068229, 0.0211438459052229, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0106287094334197, 0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.020563340697879, 0.0145404776513197, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0343918587153101, -0.0303983956440068}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734311, 0.0324515955311977, -0.0187359374155699, -0.0289614183593722, 0.0211783869997511, -0.0164047080299144, 0.00446479600584756, 0.00947126259704828, -0.00257775117585288, -0.00619733414463432, 0.0208787193108001, -0.0176457384588052, -0.00848980987436739, 0.0136683302364968, 0.00657617845117846, 0.0023011830946962, -0.00789141414141414, -0.0037967583990269, -0.00132858867917748, -0.000187890812890802, 0.0139343556230002, -0.0122889465527977, -0.00109915679455668, 0.0103860554652283, 0.000928957041533349, -0.00482700238195388, -0.00804500396992314, -0.000719567030240151, 0.00373897996748219, 0.00559691799261186, 0.00464478520766674, 0.000415442218609144, -0.00215870109072048, -0.0032313821096667, -0.00290809553026392, 0.0, 0.0, 0.0128177429097644, 0.0, -0.0113041867027994, -0.0183832217438608, 0.0, 0.0095537814881164, 0.0155366580724417, 0.0181644397838736, 0.0, -0.00740032731935591, -0.0120346435940572, -0.014070114555226, -0.0136156449512337, 0.0, 0.00427258096992147, 0.00694820471863013, 0.00812338442598859, 0.00786099627778514, 0.00607967912880134}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734309, -0.024904712849524, 0.014378742667763, 0.0536094339843699, -0.0141189246665007, 0.0109364720199429, 0.0133943880175427, -0.00631417506469883, -0.00773325352755858, 0.01531106082792, -0.00298267418725717, 0.00252081977982932, 0.0276525235907967, -0.00195261860521384, -0.0214195526695527, -0.0243925408037796, 0.00112734487734487, 0.0123665844996876, 0.0140830399992811, 0.0108976671476671, 0.0, 0.0, 0.0197848223020205, 0.0, -0.0167212267476003, -0.00321800158796925, 0.0, 0.0129522065443228, 0.00249265331165478, -0.0106850252586227, 0.0, -0.00747795993496439, -0.0014391340604803, 0.00616900220936372, 0.00872428659079176, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0206811244618434, 0.0, 0.0, -0.017478740331497, -0.0363288795677472, 0.0, 0.0, 0.0135389740433143, 0.0281402291104519, 0.0357410679969885, 0.0, 0.0, -0.00781673030845889, -0.0162467688519772, -0.020635115229186, -0.018239037386404}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734309, 0.0354703486038674, -0.0204788153146928, -0.0449826285156207, 0.0141189246665008, -0.0109364720199429, -0.00446479600584758, 0.00631417506469885, 0.00257775117585283, -0.0211438459052229, 0.0, 0.0, 0.00339592394974695, 0.0, -0.00263047138047139, 0.0308358534689291, 0.0, 0.00151870335961075, -0.017803088300978, -0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0225260111157848, 0.0, 0.0, -0.0174485731815835, 0.00356167508620758, 0.0, 0.0, 0.0100739384233621, -0.0020563340697879, -0.0145404776513196, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0282557952193589, 0.0, 0.0, 0.0, -0.0218868448636848, -0.047654757329318, 0.0, 0.0, 0.0, 0.01263637577376, 0.027513486972248, 0.0303983956440067}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.010023442173431, -0.0128297005588457, 0.00740723107127188, 0.0449826285156207, 0.0, 0.0, 0.0178591840233903, 0.0, -0.0103110047034114, 0.0211438459052229, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00920473237878479, 0.0, 0.0, -0.00531435471670986, 0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0178083754310377, 0.0, 0.0, 0.0, -0.0102816703489396, 0.0145404776513196, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0297842233308238, 0.0, 0.0, 0.0, 0.0, -0.017195929357655, -0.0303983956440068}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 12: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734311, 0.0324515955311978, -0.0335503995581136, -0.00801060507812424, 0.0211783869997511, 0.00109364720199428, -0.0169662248222208, -0.00568275755822896, 0.00567105258687628, 0.0083846285486229, 0.0208787193108001, -0.0109235523792603, -0.0162519217595033, 0.00499002532443536, 0.00958243145743147, 0.0108922666482286, -0.00187890812890812, -0.00466458889023306, -0.00558007245254536, -0.00469727032227032, 0.0139343556230002, -0.00245778931055954, -0.0120907247401236, -0.00415442218609132, 0.00464478520766674, 0.00965400476390777, 0.00643600317593851, -0.000719567030240138, -0.00498530662330958, -0.006614539445814, -0.00464478520766673, -0.000415442218609131, 0.00215870109072044, 0.00323138210966672, 0.00290809553026393, 0.0, 0.0127646671417816, -0.00116524935543313, -0.0202632808954031, -0.00719357335632687, 0.00183832217438609, 0.0228341307513453, 0.0112908326677739, 0.00310733161448834, -0.00201827108709707, -0.020635115229186, -0.01143686949355, -0.00481385743762287, -0.000521115353897262, 0.00170195561890421, 0.0127646671417816, 0.00737991258440982, 0.00347410235931507, 0.000902598269554291, -0.000491312267361578, -0.000868525589828769}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 13: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734311, -0.0249047128495238, 0.0553363732971483, -0.00431340273437459, -0.0141189246665008, 0.0153110608279201, 0.00803663281052562, 0.00883984509057834, -0.0159820572902877, 0.000729098134662825, -0.00298267418725716, 0.0277290175781224, -0.00145539597846297, -0.0301571095694136, -0.0116492303992304, 0.00352848074520083, 0.0191648629148629, 0.00976309302606915, 0.00132858867917747, -0.00263047138047138, 0.0, 0.0196623144844763, -0.00219831358911338, -0.00727023882565979, -0.0148633126645336, 0.00402250198496157, -0.00724050357293082, 0.0129522065443227, 0.00685479660705068, -0.00457929653940971, 0.00928957041533347, -0.00664707549774609, -0.0057565362419212, -0.000293762009969709, 0.00290809553026394, 0.0, 0.0, 0.0, 0.0202632808954031, -0.00411061334647249, 0.000459580543596518, -0.0399597288148543, -0.00303983956440068, 0.00427258096992149, -0.00100913554354853, 0.0464290092656685, 0.00908221989193679, -0.00270779480866285, -0.00234501909253766, 0.00127646671417817, -0.031911667854454, -0.00776832903622087, 0.000868525589828756, 0.00180519653910858, 0.000245656133680792, -0.000868525589828773}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 14: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734312, 0.0354703486038674, -0.0492363006502185, -0.00431340273437457, 0.0141189246665008, -0.00656188321196578, -0.00982255121286467, -0.0164168551682169, 0.0149509568199466, 0.000729098134662869, 0.0, 0.0033610930397724, -0.00048513199282101, 0.0282044909641998, -0.0124007936507936, 0.0029148319199485, -0.0353234728234728, 0.00889526253486301, 0.00239145962251945, -0.00263047138047138, 0.0, 0.0, 0.0, 0.0218107164769794, -0.00557374224920009, 0.000804500396992312, -0.00402250198496154, -0.014391340604803, 0.00934744991870547, -0.00254405363300537, -0.0092895704153335, 0.0141250354327105, -0.00287826812096064, -0.00381890612960613, 0.00290809553026391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0266398192099028, -0.00911951869320202, 0.00233049871086626, -0.000336378514516179, -0.0515877880729651, 0.00840946286290446, 0.00300866089851429, -0.00286613444643492, 0.000850977809452106, 0.0425488904726053, -0.00388416451811045, -0.00347410235931507, 0.00120346435940572, 0.000982624534723146, -0.000868525589828758}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 15: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734311, -0.0128297005588457, 0.0448791059024117, -0.00801060507812425, 0.0, 0.0174983552319086, -0.003571836804678, 0.0132597676358676, -0.0175287079957994, 0.00838462854862288, 0.0, 0.0, 0.0, 0.00867830491206146, -0.00300625300625303, 0.000613648825252319, 0.0225468975468975, -0.019200749617936, 0.0122230158484327, -0.00469727032227032, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0160900079398463, -0.00719567030240155, 0.00249265331165479, -0.000508810726601085, 0.00464478520766675, -0.0108014976838375, 0.0107935054536023, -0.00734405024924252, 0.00290809553026394, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0257938940364826, -0.0134551405806471, 0.00601732179702858, -0.00208446141558904, 0.000425488904726059, -0.031911667854454, 0.0135945758133865, -0.00347410235931504, -0.000902598269554292, 0.0017195929357655, -0.000868525589828772}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 16: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734314, -0.0324515955311979, -0.0187359374155699, -0.0289614183593722, 0.0211783869997512, 0.0164047080299144, -0.00446479600584757, 0.00947126259704827, -0.00257775117585285, -0.0061973341446343, -0.0208787193108001, -0.0176457384588052, -0.0084898098743674, -0.0136683302364968, -0.00657617845117844, -0.00230118309469616, -0.00789141414141415, -0.00379675839902689, -0.00132858867917748, -0.0001878908128908, 0.0139343556230002, 0.0122889465527977, 0.00109915679455668, 0.0103860554652283, 0.000928957041533344, -0.00482700238195391, 0.00804500396992313, 0.000719567030240159, -0.0037389799674822, -0.00559691799261188, 0.00464478520766673, 0.000415442218609133, -0.00215870109072046, -0.00323138210966672, -0.00290809553026394, 0.0, 0.0, 0.0128177429097644, 0.0, 0.0113041867027994, 0.0183832217438608, 0.0, 0.0095537814881164, 0.0155366580724417, 0.0181644397838736, 0.0, 0.00740032731935589, 0.0120346435940572, 0.014070114555226, 0.0136156449512337, 0.0, 0.00427258096992147, 0.00694820471863012, 0.00812338442598859, 0.00786099627778515, 0.00607967912880135}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 17: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.010023442173431, 0.024904712849524, 0.014378742667763, 0.05360943398437, -0.0141189246665007, -0.0109364720199429, -0.0133943880175426, -0.00631417506469886, -0.0077332535275586, 0.01531106082792, 0.00298267418725715, 0.00252081977982932, 0.0276525235907967, 0.00195261860521382, 0.0214195526695527, 0.0243925408037797, 0.00112734487734487, 0.0123665844996876, 0.0140830399992811, 0.0108976671476671, 0.0, 0.0, -0.0197848223020205, 0.0, -0.0167212267476003, -0.00321800158796924, 0.0, -0.0129522065443228, -0.00249265331165475, 0.0106850252586226, 0.0, -0.00747795993496438, -0.0014391340604803, 0.00616900220936374, 0.00872428659079182, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0206811244618434, 0.0, 0.0, -0.017478740331497, -0.0363288795677472, 0.0, 0.0, -0.0135389740433143, -0.0281402291104519, -0.0357410679969884, 0.0, 0.0, -0.00781673030845888, -0.0162467688519772, -0.020635115229186, -0.018239037386404}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 18: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.010023442173431, -0.0354703486038674, -0.0204788153146927, -0.0449826285156207, 0.0141189246665007, 0.0109364720199429, 0.00446479600584753, 0.00631417506469884, 0.00257775117585289, -0.0211438459052229, 0.0, 0.0, 0.00339592394974695, 0.0, 0.00263047138047136, -0.030835853468929, 0.0, 0.00151870335961076, -0.0178030883009781, -0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0225260111157848, 0.0, 0.0, 0.0174485731815835, -0.00356167508620756, 0.0, 0.0, 0.0100739384233621, -0.00205633406978793, -0.0145404776513197, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0282557952193589, 0.0, 0.0, 0.0, 0.0218868448636848, 0.047654757329318, 0.0, 0.0, 0.0, 0.01263637577376, 0.0275134869722481, 0.0303983956440068}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 19: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.010023442173431, 0.0128297005588457, 0.00740723107127181, 0.0449826285156208, 0.0, 0.0, -0.0178591840233902, 0.0, -0.0103110047034115, 0.0211438459052229, 0.0, 0.0, 0.0, 0.0, 0.0, -0.00920473237878478, 0.0, 0.0, -0.00531435471670986, 0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0178083754310377, 0.0, 0.0, 0.0, -0.0102816703489395, 0.0145404776513197, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0297842233308237, 0.0, 0.0, 0.0, 0.0, -0.017195929357655, -0.0303983956440068}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 20: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734307, -0.0324515955311978, -0.0335503995581135, -0.00801060507812418, 0.0211783869997512, -0.00109364720199431, 0.0169662248222208, -0.00568275755822894, 0.00567105258687628, 0.00838462854862291, -0.0208787193108001, -0.0109235523792603, -0.0162519217595033, -0.00499002532443535, -0.00958243145743145, -0.0108922666482287, -0.00187890812890815, -0.00466458889023305, -0.00558007245254536, -0.00469727032227032, 0.0139343556230002, 0.00245778931055953, 0.0120907247401236, -0.00415442218609133, 0.00464478520766673, 0.00965400476390777, -0.0064360031759385, 0.000719567030240151, 0.00498530662330959, 0.00661453944581401, -0.00464478520766676, -0.000415442218609123, 0.00215870109072045, 0.00323138210966672, 0.00290809553026392, 0.0, 0.0127646671417816, -0.00116524935543312, 0.0202632808954031, 0.00719357335632687, -0.00183832217438608, 0.0228341307513453, 0.0112908326677739, 0.00310733161448834, -0.00201827108709707, 0.020635115229186, 0.0114368694935501, 0.00481385743762287, 0.000521115353897252, -0.00170195561890421, 0.0127646671417816, 0.00737991258440981, 0.00347410235931507, 0.000902598269554277, -0.000491312267361576, -0.000868525589828769}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 21: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734307, 0.0249047128495239, 0.0553363732971483, -0.0043134027343746, -0.0141189246665007, -0.0153110608279201, -0.00803663281052558, 0.00883984509057836, -0.0159820572902877, 0.000729098134662811, 0.00298267418725714, 0.0277290175781224, -0.00145539597846299, 0.0301571095694136, 0.0116492303992304, -0.00352848074520083, 0.0191648629148629, 0.00976309302606916, 0.00132858867917747, -0.00263047138047135, 0.0, -0.0196623144844763, 0.00219831358911336, -0.00727023882565976, -0.0148633126645336, 0.00402250198496157, 0.00724050357293085, -0.0129522065443227, -0.00685479660705067, 0.00457929653940969, 0.00928957041533352, -0.00664707549774611, -0.00575653624192119, -0.000293762009969713, 0.00290809553026392, 0.0, 0.0, 0.0, -0.0202632808954031, 0.00411061334647248, -0.00045958054359652, -0.0399597288148542, -0.00303983956440067, 0.00427258096992148, -0.00100913554354853, -0.0464290092656685, -0.00908221989193681, 0.00270779480866286, 0.00234501909253766, -0.00127646671417816, -0.031911667854454, -0.00776832903622085, 0.000868525589828735, 0.00180519653910859, 0.000245656133680784, -0.000868525589828764}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 22: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734311, -0.0354703486038674, -0.0492363006502186, -0.0043134027343746, 0.0141189246665008, 0.00656188321196571, 0.00982255121286463, -0.016416855168217, 0.0149509568199466, 0.000729098134662876, 0.0, 0.00336109303977241, -0.000485131992820999, -0.0282044909641998, 0.0124007936507936, -0.00291483191994852, -0.0353234728234728, 0.008895262534863, 0.00239145962251945, -0.0026304713804714, 0.0, 0.0, 0.0, 0.0218107164769794, -0.00557374224920008, 0.000804500396992314, 0.00402250198496156, 0.0143913406048031, -0.00934744991870547, 0.00254405363300538, -0.00928957041533351, 0.0141250354327105, -0.00287826812096063, -0.00381890612960613, 0.00290809553026392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0266398192099028, -0.00911951869320202, 0.00233049871086625, -0.000336378514516176, 0.0515877880729651, -0.00840946286290445, -0.00300866089851428, 0.00286613444643492, -0.000850977809452104, 0.0425488904726053, -0.00388416451811045, -0.00347410235931505, 0.00120346435940571, 0.000982624534723157, -0.000868525589828761}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 23: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734311, 0.0128297005588456, 0.0448791059024118, -0.00801060507812428, 0.0, -0.0174983552319087, 0.00357183680467806, 0.0132597676358676, -0.0175287079957995, 0.00838462854862291, 0.0, 0.0, 0.0, -0.00867830491206146, 0.00300625300625301, -0.000613648825252321, 0.0225468975468975, -0.019200749617936, 0.0122230158484327, -0.00469727032227032, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0160900079398463, 0.00719567030240155, -0.00249265331165478, 0.000508810726601092, 0.00464478520766676, -0.0108014976838374, 0.0107935054536023, -0.00734405024924251, 0.00290809553026393, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0257938940364825, 0.0134551405806471, -0.00601732179702859, 0.00208446141558904, -0.000425488904726056, -0.031911667854454, 0.0135945758133865, -0.00347410235931504, -0.000902598269554288, 0.00171959293576549, -0.000868525589828771}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 24: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0100234421734307, -0.0452812960900434, -0.0113287063442981, -0.00801060507812426, -0.00141189246665007, 0.0164047080299143, 0.0133943880175427, 0.0145226026488074, 0.0118576554089231, 0.00838462854862294, -0.00894802256177149, -0.0142846454190327, -0.0123708658169353, -0.014536160727703, -0.0125886844636845, -0.0102786178229764, -0.00939454064454066, -0.00813591085505764, -0.00664294339588733, -0.00469727032227033, -0.00836061337380014, 0.00245778931055954, 0.00219831358911338, 0.00830884437218263, 0.00743165633226679, 0.0064360031759385, 0.00965400476390779, 0.00863480436288184, 0.00747795993496438, 0.00610572871921294, 0.00650269929073342, 0.00581619106052785, 0.00503696921168106, 0.00411266813957582, 0.00290809553026392, 0.0352796762358899, 0.0191470007126724, 0.0174787403314969, 0.00788016479265676, 0.00719357335632689, 0.00643412761035129, 0.000951422114639382, 0.000868525589828755, 0.000776832903622077, 0.000672757029032345, -0.00221090520312707, -0.00201827108709705, -0.00180519653910857, -0.00156334606169178, -0.00127646671417816, -0.00212744452363026, -0.00194208225905521, -0.00173705117965752, -0.00150433044925714, -0.00122828066840393, -0.000868525589828761}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 25: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734311, 0.0603750614533913, -0.00610007264692972, -0.00431340273437463, -0.00564756986660036, -0.0218729440398857, -0.0178591840233902, 0.00126283501293975, 0.00103110047034115, 0.000729098134662875, 0.0417574386216003, 0.016805465198862, 0.0145539597846298, -0.000867830491206133, -0.000751563251563239, -0.000613648825252298, -0.00526094276094275, -0.0045561100788323, -0.00372004830169692, -0.00263047138047139, 0.00557374224920013, -0.0196623144844763, -0.0175865087129071, -0.0103860554652283, -0.00928957041533348, -0.00804500396992313, 0.00321800158796925, 0.00287826812096061, 0.00249265331165479, 0.00203524290640429, 0.00650269929073342, 0.00581619106052785, 0.00503696921168108, 0.00411266813957583, 0.00290809553026395, -0.0705593524717798, -0.0127646671417816, -0.0116524935543313, 0.00450295131008955, 0.00411061334647247, 0.00367664434877214, 0.00380568845855755, 0.00347410235931508, 0.00310733161448836, 0.00269102811612943, -0.000736968401042361, -0.000672757029032368, -0.000601732179702867, -0.000521115353897261, -0.000425488904726046, -0.00212744452363026, -0.00194208225905521, -0.00173705117965753, -0.00150433044925714, -0.00122828066840394, -0.000868525589828775}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 26: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0100234421734311, -0.0603750614533913, -0.00610007264692977, -0.00431340273437462, -0.00564756986660027, 0.0218729440398858, 0.0178591840233902, 0.00126283501293977, 0.00103110047034114, 0.000729098134662858, -0.0417574386216002, 0.016805465198862, 0.0145539597846299, 0.000867830491206133, 0.000751563251563231, 0.000613648825252297, -0.00526094276094275, -0.00455611007883227, -0.0037200483016969, -0.00263047138047138, 0.00557374224920005, 0.0196623144844763, 0.0175865087129071, -0.0103860554652283, -0.00928957041533347, -0.00804500396992315, -0.00321800158796928, -0.00287826812096063, -0.0024926533116548, -0.00203524290640429, 0.00650269929073343, 0.00581619106052785, 0.00503696921168108, 0.00411266813957581, 0.00290809553026392, 0.0705593524717798, -0.0127646671417816, -0.0116524935543313, -0.00450295131008957, -0.00411061334647248, -0.00367664434877215, 0.00380568845855754, 0.00347410235931504, 0.00310733161448834, 0.00269102811612942, 0.000736968401042369, 0.000672757029032361, 0.000601732179702872, 0.000521115353897267, 0.000425488904726048, -0.00212744452363027, -0.00194208225905522, -0.00173705117965754, -0.00150433044925714, -0.00122828066840393, -0.000868525589828761}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 27: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.010023442173431, 0.0452812960900435, -0.0113287063442981, -0.00801060507812427, -0.00141189246665011, -0.0164047080299144, -0.0133943880175427, 0.0145226026488074, 0.0118576554089232, 0.0083846285486229, 0.00894802256177148, -0.0142846454190328, -0.0123708658169354, 0.014536160727703, 0.0125886844636845, 0.0102786178229764, -0.00939454064454066, -0.00813591085505764, -0.00664294339588733, -0.00469727032227032, -0.0083606133738001, -0.00245778931055954, -0.0021983135891134, 0.00830884437218264, 0.00743165633226679, 0.00643600317593852, -0.00965400476390776, -0.00863480436288183, -0.00747795993496437, -0.00610572871921294, 0.00650269929073343, 0.00581619106052784, 0.00503696921168107, 0.00411266813957582, 0.00290809553026394, -0.0352796762358899, 0.0191470007126724, 0.017478740331497, -0.00788016479265674, -0.00719357335632688, -0.00643412761035128, 0.000951422114639399, 0.00086852558982876, 0.00077683290362209, 0.000672757029032358, 0.00221090520312706, 0.00201827108709707, 0.00180519653910857, 0.00156334606169177, 0.00127646671417816, -0.00212744452363025, -0.00194208225905521, -0.00173705117965752, -0.00150433044925714, -0.00122828066840393, -0.000868525589828767}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 28: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769578, 0.0679219441350651, -0.00435719474780698, -0.00308100195312476, 0.0705946233325039, -0.0328094160598288, -0.0267887760350854, 0.0126283501293977, 0.0360885164619401, -0.00729098134662863, 0.0298267418725716, 0.0151249186789759, 0.0130985638061668, -0.0325436434202305, -0.0229226791726792, -0.0248527774227189, 0.0248015873015873, 0.0169226945785198, 0.0164744996218006, 0.0142797017797018, 0.0, 0.0245778931055954, 0.0219831358911339, -0.0363511941282991, -0.0074316563322668, -0.0345935170706696, 0.0362025178646541, 0.0, 0.0130864298861876, 0.0335815079556711, -0.0232239260383337, 0.00166176887443654, -0.00359783515120076, -0.0146881004984851, -0.0178640154001927, 0.0, 0.0, 0.0, 0.0, 0.0226083734055987, -0.00459580543596521, 0.0, -0.0334382352084074, -0.0194208225905522, 0.00908221989193681, 0.0, 0.0333014729371016, 0.0270779480866286, 0.00703505727761298, -0.0102117337134253, 0.0, -0.0213629048496074, -0.0191075629762328, -0.00812338442598858, 0.0019652490694463, 0.00607967912880137}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 29: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.021478804657352, 0.00377344134083692, 0.00217859737390368, -0.021567013671873, 0.0, 0.0984282481794863, -0.031253572040933, -0.0852413633734345, -0.01804425823097, 0.0309866707231717, 0.0, 0.0453747560369276, -0.0116431678277039, 0.0, 0.0236742424242424, -0.00138070985681773, -0.0202922077922078, -0.0335199527228374, -0.000797153207506548, 0.00394570707070709, 0.0, 0.0, 0.0, 0.036351194128299, 0.024152883079867, -0.00724050357293084, -0.0603375297744236, 0.0, -0.039259289658563, 0.0188259968842399, 0.0464478520766673, -0.0108014976838374, 0.0259044130886455, 0.010869194368879, -0.0178640154001927, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0334382352084074, -0.0155366580724417, 0.00302740663064559, 0.0, -0.0555024548951693, 0.0, 0.0164151336477636, -0.00680782247561685, 0.0, 0.0427258096992147, 0.00694820471863017, -0.0108311792346515, -0.00393049813889261, 0.00607967912880133}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 30: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769579, 0.0301875307266958, 0.0610007264692972, -0.00308100195312477, 0.0, 0.0218729440398859, 0.0178591840233903, 0.0757701007763862, -0.0412440188136457, -0.00729098134662863, 0.0, 0.0, 0.0, 0.0520698294723688, -0.0127765752765753, 0.00184094647575699, -0.00901875901875901, 0.0286384062098029, -0.0297603864135752, 0.0142797017797018, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0402250198496157, 0.014391340604803, -0.0137095932141014, 0.00407048581280862, -0.0464478520766673, 0.0182794576188018, -0.0345392174515273, 0.0364264892362429, -0.0178640154001927, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0370016365967795, -0.030086608985143, 0.014070114555226, -0.00340391123780845, 0.0, -0.0427258096992148, 0.0243187165152054, 0.0, -0.00982624534723142, 0.00607967912880138}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 31: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.021478804657352, 0.00377344134083704, -0.0196073763651314, 0.00924300585937434, 0.0, -0.0109364720199429, 0.102690308134494, 0.00947126259704824, -0.0695992817480272, -0.0601505961096861, 0.0, -0.00504163955965858, 0.0465726713108155, 0.00650872868404611, 0.0214195526695527, -0.00782402252196706, -0.00450937950937954, -0.0289638426440052, -0.0263060558477139, 0.000563672438672419, 0.0, 0.0, 0.0, 0.0, 0.0334424534952005, 0.0289620142917233, 0.0, -0.0431740218144092, -0.00249265331165474, -0.0605484764655283, 0.0, 0.0299118397398575, -0.00431740218144092, 0.0185070066280912, 0.0461140862656136, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0349574806629939, -0.0121096265225824, 0.0, 0.0, -0.0451299134777144, -0.0281402291104519, 0.023827378664659, 0.0, 0.0, 0.0312669212338355, 0.0270779480866286, 0.0, -0.0182390373864041}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 32: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573519, -0.0150937653633477, 0.0130715842434208, 0.00924300585937425, 0.0, -0.0109364720199429, -0.0089295920116951, 0.00947126259704835, 0.123732056440937, -0.0601505961096861, 0.0, 0.0, 0.0, -0.00650872868404604, 0.0574945887445887, -0.0266937238984759, 0.00676406926406926, 0.0126920209338899, 0.00637722566005186, 0.000563672438672455, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0431740218144092, 0.0199412264932384, -0.0142467003448302, 0.0, -0.0448677596097863, 0.0215870109072046, -0.0616900220936373, 0.0461140862656137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0451299134777144, -0.0375203054806026, 0.0119136893323295, 0.0, 0.0, -0.0469003818507533, 0.0162467688519772, 0.020635115229186, -0.0182390373864041}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 33: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769579, 0.0301875307266957, 0.0174287789912278, 0.0585390371093694, 0.0, 0.0218729440398859, 0.0178591840233903, -0.0189425251940966, 0.0103110047034114, 0.0838462854862291, 0.0, 0.0, 0.0, 0.0, 0.00526094276094278, 0.0533874477969518, 0.0, -0.00455611007883231, 0.0308232573569172, -0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.034897146363167, 0.0284934006896603, 0.0, 0.0, -0.0302218152700864, 0.0164506725583033, -0.0643935438844155, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0437736897273697, -0.023827378664659, 0.0, 0.0, 0.0, -0.0379091273212801, -0.013756743486124, 0.0303983956440068}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 34: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769576, -0.0679219441350653, -0.00435719474780704, -0.00308100195312475, 0.0705946233325039, 0.0328094160598287, 0.0267887760350853, 0.0126283501293977, 0.03608851646194, -0.00729098134662861, -0.0298267418725716, 0.0151249186789759, 0.0130985638061669, 0.0325436434202305, 0.0229226791726792, 0.0248527774227189, 0.0248015873015873, 0.0169226945785198, 0.0164744996218006, 0.0142797017797018, 0.0, -0.0245778931055953, -0.0219831358911338, -0.036351194128299, -0.00743165633226677, -0.0345935170706695, -0.0362025178646541, 0.0, -0.0130864298861876, -0.0335815079556711, -0.0232239260383336, 0.00166176887443655, -0.00359783515120076, -0.0146881004984851, -0.0178640154001927, 0.0, 0.0, 0.0, 0.0, -0.0226083734055987, 0.00459580543596522, 0.0, -0.0334382352084074, -0.0194208225905522, 0.00908221989193681, 0.0, -0.0333014729371016, -0.0270779480866286, -0.00703505727761297, 0.0102117337134253, 0.0, -0.0213629048496074, -0.0191075629762328, -0.00812338442598856, 0.0019652490694463, 0.00607967912880137}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 35: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573516, -0.00377344134083683, 0.00217859737390362, -0.0215670136718728, 0.0, -0.0984282481794862, 0.031253572040933, -0.0852413633734344, -0.0180442582309701, 0.0309866707231716, 0.0, 0.0453747560369275, -0.0116431678277039, 0.0, -0.0236742424242424, 0.00138070985681772, -0.0202922077922078, -0.0335199527228374, -0.000797153207506536, 0.0039457070707071, 0.0, 0.0, 0.0, 0.036351194128299, 0.024152883079867, -0.0072405035729308, 0.0603375297744236, 0.0, 0.039259289658563, -0.0188259968842399, 0.0464478520766673, -0.0108014976838374, 0.0259044130886455, 0.010869194368879, -0.0178640154001927, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0334382352084074, -0.0155366580724417, 0.00302740663064559, 0.0, 0.0555024548951693, 0.0, -0.0164151336477637, 0.00680782247561685, 0.0, 0.0427258096992147, 0.00694820471863021, -0.0108311792346515, -0.0039304981388926, 0.00607967912880134}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 36: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769579, -0.0301875307266958, 0.0610007264692973, -0.00308100195312476, 0.0, -0.0218729440398857, -0.0178591840233903, 0.0757701007763862, -0.0412440188136456, -0.0072909813466286, 0.0, 0.0, 0.0, -0.0520698294723688, 0.0127765752765753, -0.00184094647575695, -0.00901875901875896, 0.0286384062098028, -0.0297603864135752, 0.0142797017797018, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0402250198496158, -0.0143913406048031, 0.0137095932141013, -0.00407048581280863, -0.0464478520766673, 0.0182794576188018, -0.0345392174515273, 0.0364264892362429, -0.0178640154001927, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0370016365967796, 0.0300866089851429, -0.014070114555226, 0.00340391123780843, 0.0, -0.0427258096992147, 0.0243187165152053, 0.0, -0.00982624534723144, 0.00607967912880138}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 37: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573524, -0.00377344134083718, -0.0196073763651313, 0.00924300585937407, 0.0, 0.0109364720199428, -0.102690308134494, 0.00947126259704835, -0.0695992817480271, -0.060150596109686, 0.0, -0.00504163955965864, 0.0465726713108155, -0.00650872868404611, -0.0214195526695527, 0.00782402252196711, -0.00450937950937954, -0.0289638426440051, -0.0263060558477138, 0.000563672438672435, 0.0, 0.0, 0.0, 0.0, 0.0334424534952005, 0.0289620142917233, 0.0, 0.0431740218144092, 0.00249265331165475, 0.0605484764655282, 0.0, 0.0299118397398574, -0.00431740218144094, 0.0185070066280911, 0.0461140862656136, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0349574806629939, -0.0121096265225824, 0.0, 0.0, 0.0451299134777144, 0.0281402291104519, -0.0238273786646589, 0.0, 0.0, 0.0312669212338355, 0.0270779480866286, 0.0, -0.0182390373864041}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 38: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573521, 0.0150937653633479, 0.0130715842434209, 0.00924300585937413, 0.0, 0.0109364720199429, 0.00892959201169516, 0.0094712625970483, 0.123732056440937, -0.0601505961096861, 0.0, 0.0, 0.0, 0.00650872868404609, -0.0574945887445887, 0.0266937238984759, 0.00676406926406923, 0.0126920209338899, 0.00637722566005181, 0.000563672438672487, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0431740218144092, -0.0199412264932383, 0.0142467003448302, 0.0, -0.0448677596097863, 0.0215870109072046, -0.0616900220936373, 0.0461140862656137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0451299134777144, 0.0375203054806026, -0.0119136893323295, 0.0, 0.0, -0.0469003818507533, 0.0162467688519772, 0.020635115229186, -0.0182390373864041}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 39: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769579, -0.0301875307266957, 0.0174287789912278, 0.0585390371093694, 0.0, -0.0218729440398858, -0.0178591840233902, -0.0189425251940966, 0.0103110047034113, 0.083846285486229, 0.0, 0.0, 0.0, 0.0, -0.00526094276094274, -0.0533874477969517, 0.0, -0.00455611007883227, 0.0308232573569172, -0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0348971463631671, -0.0284934006896603, 0.0, 0.0, -0.0302218152700864, 0.0164506725583033, -0.0643935438844155, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0437736897273697, 0.023827378664659, 0.0, 0.0, 0.0, -0.0379091273212801, -0.013756743486124, 0.0303983956440068}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 40: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.078755617076958, -0.0377344134083695, -0.0566435317214905, -0.00308100195312478, 0.0423567739995023, 0.0546823600997146, 0.0446479600584757, 0.0378850503881931, 0.00515550235170577, -0.00729098134662859, 0.0417574386216002, -0.00504163955965862, 0.0295930515620807, -0.0247331689993752, 0.0101461038961039, 0.0266937238984759, -0.0202922077922078, 0.0021695762280154, 0.0132858867917747, 0.0142797017797018, -0.0557374224920008, -0.0245778931055954, -0.00219831358911337, -0.00519302773261414, -0.0130053985814668, -0.0168945083368385, 0.00402250198496158, -0.0158304746652834, -0.026796023100289, -0.0295110221428625, 0.00464478520766674, -0.0108014976838375, -0.0194283098164841, -0.0217383887377579, -0.0178640154001927, 0.0, 0.0, -0.0512709716390577, 0.0, -0.0226083734055987, -0.0367664434877216, 0.0, -0.0047768907440582, -0.00776832903622085, -0.00908221989193678, 0.0, 0.00370016365967796, 0.00601732179702859, 0.00703505727761299, 0.00680782247561684, 0.0, 0.00427258096992148, 0.0069482047186301, 0.00812338442598856, 0.00786099627778516, 0.00607967912880135}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 41: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573513, 0.0, -0.00435719474780703, -0.0215670136718729, -0.127070321998507, 0.0, 0.0, 0.0284137877911448, 0.0360885164619399, 0.0309866707231715, 0.0, 0.0453747560369275, -0.0422064833754265, 0.0, 0.0, 0.0, -0.0202922077922078, -0.00618329224984381, 0.00159430641501296, 0.0039457070707071, 0.0836061337380012, 0.0, 0.0, -0.0103860554652283, 0.024152883079867, 0.0434430214375849, 0.0, 0.0, 0.0, 0.0, 0.00464478520766673, -0.0108014976838374, -0.0194283098164841, -0.0217383887377578, -0.0178640154001927, 0.0, 0.0, 0.0769064574585865, 0.0, 0.0, 0.0, 0.0, -0.00955378148811642, -0.0155366580724417, -0.0181644397838736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00427258096992146, 0.00694820471863015, 0.00812338442598858, 0.00786099627778516, 0.00607967912880134}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 42: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769579, 0.0377344134083696, -0.0566435317214904, -0.00308100195312477, 0.0423567739995022, -0.0546823600997145, -0.0446479600584756, 0.037885050388193, 0.00515550235170577, -0.0072909813466285, -0.0417574386216002, -0.00504163955965861, 0.0295930515620806, 0.0247331689993752, -0.0101461038961039, -0.0266937238984759, -0.0202922077922078, 0.00216957622801539, 0.0132858867917747, 0.0142797017797018, -0.0557374224920008, 0.0245778931055953, 0.00219831358911336, -0.00519302773261413, -0.0130053985814669, -0.0168945083368386, -0.00402250198496157, 0.0158304746652834, 0.026796023100289, 0.0295110221428625, 0.00464478520766677, -0.0108014976838375, -0.0194283098164841, -0.0217383887377579, -0.0178640154001927, 0.0, 0.0, -0.0512709716390577, 0.0, 0.0226083734055987, 0.0367664434877216, 0.0, -0.00477689074405818, -0.00776832903622087, -0.00908221989193679, 0.0, -0.00370016365967795, -0.00601732179702858, -0.00703505727761299, -0.00680782247561685, 0.0, 0.0042725809699215, 0.00694820471863008, 0.00812338442598856, 0.00786099627778518, 0.00607967912880136}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 43: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573518, -0.0188672067041849, 0.00653579212171039, 0.00924300585937419, 0.0141189246665007, 0.0, -0.111619900146189, -0.00315708753234941, -0.0541327746929101, -0.0601505961096861, -0.00894802256177145, -0.0025208197798293, -0.0276525235907968, 0.000650872868404654, 0.0360750360750361, -0.0188697013765088, 0.00112734487734487, 0.0374251899332651, 0.0199288301876619, 0.000563672438672461, 0.0, 0.0, 0.0593544669060614, 0.0, 0.0167212267476002, 0.00321800158796923, 0.0, -0.00431740218144091, 0.0224338798048931, 0.0463017761206981, 0.0, -0.00747795993496437, 0.018708742786244, 0.0431830154655461, 0.0461140862656136, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0620433733855302, 0.0, 0.0, 0.017478740331497, 0.0363288795677472, 0.0, 0.0, -0.00451299134777147, -0.00938007637015062, -0.0119136893323295, 0.0, 0.0, -0.00781673030845886, -0.0162467688519772, -0.020635115229186, -0.0182390373864041}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 44: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573522, 0.0188672067041846, 0.00653579212171044, 0.00924300585937427, 0.0141189246665008, 0.0, 0.111619900146189, -0.00315708753234941, -0.0541327746929101, -0.0601505961096861, 0.00894802256177155, -0.0025208197798293, -0.0276525235907967, -0.000650872868404607, -0.0360750360750361, 0.0188697013765088, 0.00112734487734491, 0.0374251899332651, 0.019928830187662, 0.000563672438672448, 0.0, 0.0, -0.0593544669060614, 0.0, 0.0167212267476002, 0.00321800158796924, 0.0, 0.00431740218144093, -0.0224338798048931, -0.0463017761206981, 0.0, -0.00747795993496436, 0.018708742786244, 0.0431830154655461, 0.0461140862656137, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0620433733855302, 0.0, 0.0, 0.0174787403314969, 0.0363288795677472, 0.0, 0.0, 0.00451299134777145, 0.00938007637015066, 0.0119136893323295, 0.0, 0.0, -0.00781673030845888, -0.0162467688519772, -0.0206351152291861, -0.0182390373864041}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 45: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.078755617076958, 0.0, -0.0348575579824556, 0.0585390371093695, -0.0282378493330015, 0.0, 0.0, 0.00631417506469882, -0.0206220094068228, 0.0838462854862289, 0.0, 0.0, -0.0067918478994939, 0.0, 0.0, 0.0, 0.0, 0.00151870335961078, -0.0616465147138344, -0.0319414381914382, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0450520222315696, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0100739384233622, -0.0329013451166065, -0.0643935438844154, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0565115904387178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01263637577376, 0.027513486972248, 0.0303983956440068}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 46: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769581, -0.0377344134083695, -0.0217859737390349, -0.0523770332031201, 0.0423567739995024, 0.0546823600997146, 0.0446479600584758, 0.0, 0.0257775117585286, 0.0291639253865144, 0.0417574386216002, 0.0285692908380655, -0.00921750786359888, 0.0273366604729936, -0.00789141414141413, -0.0248527774227189, 0.0187890812890813, -0.00347132196482459, -0.0143487577351166, -0.015031265031265, -0.0557374224920008, -0.00491557862111905, -0.0241814494802473, -0.0197335053839337, -0.00928957041533348, -0.00241350119097693, -0.0394205194526234, -0.0158304746652834, -0.000623163327913709, 0.00712335017241507, -0.0325134964536671, -0.0141250354327105, -0.00215870109072047, 0.00411266813957583, 0.00540074884191869, 0.0, -0.0510586685671264, 0.00466099742173249, -0.0405265617908061, -0.0143871467126537, 0.00367664434877214, -0.0114170653756726, -0.00564541633388696, -0.00155366580724415, 0.00100913554354854, 0.0103175576145931, 0.00571843474677501, 0.00240692871881143, 0.000260557676948618, -0.000850977809452114, 0.0127646671417816, 0.00737991258440983, 0.00347410235931509, 0.000902598269554292, -0.00049131226736157, -0.000868525589828748}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 47: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573518, 0.0, -0.0217859737390347, 0.00308100195312486, -0.127070321998507, 0.0, 0.0, 0.0473563129852414, 0.0257775117585285, 0.0127592173566, 0.0, -0.0352914769176103, 0.0509388592462045, 0.0, 0.0, 0.0, 0.00225468975468972, -0.00943765659186685, -0.0143487577351166, -0.0129644660894661, 0.0836061337380012, 0.0, 0.0, 0.0477758551400501, 0.00928957041533347, -0.0144810071458617, 0.0, 0.0, 0.0, 0.0, -0.0325134964536671, -0.0141250354327105, -0.00215870109072047, 0.00411266813957584, 0.00540074884191877, 0.0, 0.0765880028506896, -0.00699149613259875, 0.0, 0.0, 0.0, -0.0228341307513453, -0.011290832667774, -0.00310733161448838, 0.00201827108709704, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0127646671417816, 0.00737991258440981, 0.00347410235931506, 0.000902598269554269, -0.000491312267361589, -0.000868525589828803}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 48: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769582, 0.0377344134083696, -0.0217859737390348, -0.05237703320312, 0.0423567739995023, -0.0546823600997146, -0.0446479600584757, 0.0, 0.0257775117585286, 0.0291639253865145, -0.0417574386216002, 0.0285692908380655, -0.00921750786359894, -0.0273366604729936, 0.00789141414141414, 0.0248527774227189, 0.0187890812890813, -0.00347132196482458, -0.0143487577351166, -0.015031265031265, -0.0557374224920008, 0.00491557862111906, 0.0241814494802472, -0.0197335053839338, -0.00928957041533349, -0.00241350119097695, 0.0394205194526234, 0.0158304746652834, 0.000623163327913708, -0.00712335017241507, -0.0325134964536671, -0.0141250354327105, -0.00215870109072045, 0.0041126681395758, 0.00540074884191868, 0.0, -0.0510586685671264, 0.0046609974217325, 0.0405265617908061, 0.0143871467126537, -0.00367664434877216, -0.0114170653756727, -0.00564541633388696, -0.00155366580724416, 0.00100913554354855, -0.010317557614593, -0.00571843474677502, -0.00240692871881143, -0.000260557676948628, 0.000850977809452107, 0.0127646671417816, 0.00737991258440984, 0.00347410235931506, 0.000902598269554289, -0.000491312267361559, -0.000868525589828739}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 49: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573521, -0.0188672067041848, 0.0108929868695174, 0.00308100195312464, 0.0141189246665008, -0.109364720199429, 0.0223239800292378, -0.0789271883087356, -0.0128887558792643, 0.0127592173566001, -0.00894802256177147, -0.0277290175781224, 0.00145539597846298, -0.00585785581564146, 0.0383297258297258, -0.0124263887113595, 0.0191648629148629, 0.0348216984596467, 0.00717437886755837, -0.0129644660894661, 0.0, 0.0589869434534289, -0.00659494076734012, 0.00727023882565974, 0.0148633126645335, -0.0040225019849616, 0.0506835250105158, -0.00431740218144091, -0.00810112326287806, 0.00356167508620759, 0.0650269929073342, -0.00166176887443651, -0.0115130724838425, -0.00205633406978793, 0.00540074884191875, 0.0, 0.0, 0.0, 0.0607898426862092, -0.0123318400394175, 0.0013787416307896, 0.0399597288148543, 0.00303983956440067, -0.00427258096992151, 0.00100913554354852, -0.0154763364218896, -0.00302740663064561, 0.000902598269554316, 0.000781673030845898, -0.000425488904726051, -0.031911667854454, -0.00776832903622089, 0.000868525589828735, 0.00180519653910857, 0.000245656133680779, -0.000868525589828785}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 50: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {-0.0214788046573522, 0.0188672067041847, 0.0108929868695174, 0.00308100195312463, 0.0141189246665007, 0.109364720199429, -0.0223239800292378, -0.0789271883087357, -0.0128887558792643, 0.0127592173566001, 0.00894802256177146, -0.0277290175781224, 0.00145539597846298, 0.00585785581564147, -0.0383297258297259, 0.0124263887113595, 0.0191648629148629, 0.0348216984596467, 0.00717437886755832, -0.0129644660894661, 0.0, -0.0589869434534289, 0.00659494076734014, 0.00727023882565983, 0.0148633126645336, -0.00402250198496153, -0.0506835250105158, 0.00431740218144093, 0.00810112326287806, -0.00356167508620756, 0.0650269929073343, -0.00166176887443652, -0.0115130724838424, -0.00205633406978791, 0.00540074884191871, 0.0, 0.0, 0.0, -0.0607898426862092, 0.0123318400394175, -0.00137874163078959, 0.0399597288148542, 0.00303983956440069, -0.00427258096992146, 0.00100913554354852, 0.0154763364218896, 0.00302740663064561, -0.000902598269554309, -0.000781673030845883, 0.000425488904726061, -0.031911667854454, -0.00776832903622087, 0.000868525589828761, 0.00180519653910858, 0.000245656133680792, -0.000868525589828766}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 51: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.0787556170769579, 0.0, 0.0435719474780695, -0.0523770332031201, -0.0282378493330016, 0.0, 0.0, 0.0631417506469885, -0.0515550235170571, 0.0291639253865144, 0.0, -0.00672218607954478, 0.00097026398564201, 0.0, 0.0, 0.0, -0.0601250601250601, -0.0125835421224891, 0.0286975154702332, -0.015031265031265, 0.0, 0.0, 0.0, -0.0436214329539588, 0.0111474844984002, -0.00160900079398465, 0.0, 0.0, 0.0, 0.0, -0.0650269929073343, 0.031573608614294, -0.00287826812096059, -0.00822533627915167, 0.00540074884191872, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0532796384198057, 0.018239037386404, -0.00466099742173253, 0.000672757029032364, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0425488904726053, -0.00388416451811041, -0.00347410235931508, 0.00120346435940574, 0.000982624534723167, -0.000868525589828753}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 52: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.107394023286761, -0.188672067041848, -0.108929868695174, -0.0770250488281178, -0.0705946233325038, -0.0546823600997146, -0.0446479600584758, -0.0315708753234942, -0.0257775117585285, -0.0182274533665714, 0.0894802256177148, -0.0151249186789758, -0.0130985638061669, 0.0585785581564149, -0.028183621933622, 0.0690354928408859, 0.0744047619047619, 0.00976309302606915, 0.039857660375324, 0.0597492784992785, 0.0, 0.0737336793167861, 0.0659494076734016, 0.036351194128299, 0.00743165633226676, 0.0345935170706695, -0.0120675059548847, 0.0431740218144092, 0.0155790831978424, -0.0254405363300539, -0.0232239260383337, 0.0465295284842228, 0.0251848460584054, -0.0146881004984851, -0.0328199352701215, 0.0, 0.0, 0.0, 0.0, 0.0678251202167962, -0.0137874163078956, 0.0, 0.0334382352084074, 0.0194208225905522, -0.00908221989193679, 0.0, -0.0111004909790339, -0.00902598269554286, -0.00234501909253765, 0.0034039112378084, 0.0, -0.0213629048496074, -0.0191075629762328, -0.00812338442598858, 0.0019652490694463, 0.00607967912880138}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 53: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.107394023286761, 0.188672067041848, -0.108929868695174, -0.0770250488281179, -0.0705946233325039, 0.0546823600997146, 0.0446479600584756, -0.0315708753234942, -0.0257775117585286, -0.0182274533665715, -0.0894802256177148, -0.0151249186789759, -0.0130985638061668, -0.058578558156415, 0.0281836219336219, -0.0690354928408858, 0.0744047619047619, 0.00976309302606914, 0.039857660375324, 0.0597492784992785, 0.0, -0.0737336793167861, -0.0659494076734016, 0.036351194128299, 0.0074316563322668, 0.0345935170706696, 0.0120675059548846, -0.0431740218144092, -0.0155790831978424, 0.0254405363300538, -0.0232239260383337, 0.0465295284842228, 0.0251848460584053, -0.014688100498485, -0.0328199352701215, 0.0, 0.0, 0.0, 0.0, -0.0678251202167962, 0.0137874163078956, 0.0, 0.0334382352084074, 0.0194208225905522, -0.0090822198919368, 0.0, 0.0111004909790338, 0.00902598269554286, 0.00234501909253764, -0.00340391123780842, 0.0, -0.0213629048496074, -0.0191075629762328, -0.00812338442598857, 0.00196524906944628, 0.00607967912880138}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 54: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.107394023286761, 0.0, 0.217859737390348, -0.0770250488281177, 0.0, 0.0, 0.0, -0.0947126259704828, 0.0515550235170571, -0.0182274533665715, 0.0, -0.0907495120738552, 0.0232863356554078, 0.0, 0.0, 0.0, -0.0946969696969697, -0.0227805503941613, -0.079715320750648, 0.0597492784992785, 0.0, 0.0, 0.0, -0.0727023882565981, -0.0483057661597341, 0.0144810071458617, 0.0, 0.0, 0.0, 0.0, 0.0464478520766673, -0.0781031370985168, 0.0431740218144092, 0.0293762009969702, -0.0328199352701214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0668764704168149, 0.0310733161448835, -0.00605481326129118, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0427258096992147, 0.00694820471863014, -0.0108311792346515, -0.00393049813889261, 0.00607967912880134}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 55: { // Array of basisvalues double basisvalues[56] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); double tmp1 = 0.25*(Y + Z)*(Y + Z); double tmp2 = 0.5*(1.0 + Z + 2.0*Y); double tmp3 = 0.5*(1.0 - Z); double tmp4 = tmp3*tmp3; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[4] = 1.5*tmp0*basisvalues[1] - 0.5*tmp1*basisvalues[0]; basisvalues[10] = 1.66666666666667*tmp0*basisvalues[4] - 0.666666666666667*tmp1*basisvalues[1]; basisvalues[20] = 1.75*tmp0*basisvalues[10] - 0.75*tmp1*basisvalues[4]; basisvalues[35] = 1.8*tmp0*basisvalues[20] - 0.8*tmp1*basisvalues[10]; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[5] = (0.5*(2.0 + 3.0*Y + Z) + 1.0*(1.0 + Y))*basisvalues[1]; basisvalues[11] = (0.5*(2.0 + 3.0*Y + Z) + 2.0*(1.0 + Y))*basisvalues[4]; basisvalues[21] = (0.5*(2.0 + 3.0*Y + Z) + 3.0*(1.0 + Y))*basisvalues[10]; basisvalues[36] = (0.5*(2.0 + 3.0*Y + Z) + 4.0*(1.0 + Y))*basisvalues[20]; basisvalues[7] = (1.66666666666667*tmp2 + 0.111111111111111*tmp3)*basisvalues[2] - 0.555555555555556*tmp4*basisvalues[0]; basisvalues[16] = (1.75*tmp2 + 0.05*tmp3)*basisvalues[7] - 0.7*tmp4*basisvalues[2]; basisvalues[30] = (1.8*tmp2 + 0.0285714285714286*tmp3)*basisvalues[16] - 0.771428571428571*tmp4*basisvalues[7]; basisvalues[50] = (1.83333333333333*tmp2 + 0.0185185185185185*tmp3)*basisvalues[30] - 0.814814814814815*tmp4*basisvalues[16]; basisvalues[13] = (2.1*tmp2 + 0.54*tmp3)*basisvalues[5] - 0.56*tmp4*basisvalues[1]; basisvalues[26] = (2.0*tmp2 + 0.285714285714286*tmp3)*basisvalues[13] - 0.714285714285714*tmp4*basisvalues[5]; basisvalues[45] = (1.96428571428571*tmp2 + 0.178571428571429*tmp3)*basisvalues[26] - 0.785714285714286*tmp4*basisvalues[13]; basisvalues[23] = (2.57142857142857*tmp2 + 1.02040816326531*tmp3)*basisvalues[11] - 0.551020408163265*tmp4*basisvalues[4]; basisvalues[41] = (2.29166666666667*tmp2 + 0.578703703703704*tmp3)*basisvalues[23] - 0.712962962962963*tmp4*basisvalues[11]; basisvalues[38] = (3.05555555555556*tmp2 + 1.51234567901235*tmp3)*basisvalues[21] - 0.54320987654321*tmp4*basisvalues[10]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[8] = (3.0*Z + 2.0)*basisvalues[2]; basisvalues[17] = (4.0*Z + 3.0)*basisvalues[7]; basisvalues[31] = (5.0*Z + 4.0)*basisvalues[16]; basisvalues[51] = (6.0*Z + 5.0)*basisvalues[30]; basisvalues[6] = (3.0*Z + 2.0)*basisvalues[1]; basisvalues[14] = (4.0*Z + 3.0)*basisvalues[5]; basisvalues[27] = (5.0*Z + 4.0)*basisvalues[13]; basisvalues[46] = (6.0*Z + 5.0)*basisvalues[26]; basisvalues[12] = (4.0*Z + 3.0)*basisvalues[4]; basisvalues[24] = (5.0*Z + 4.0)*basisvalues[11]; basisvalues[42] = (6.0*Z + 5.0)*basisvalues[23]; basisvalues[22] = (5.0*Z + 4.0)*basisvalues[10]; basisvalues[39] = (6.0*Z + 5.0)*basisvalues[21]; basisvalues[37] = (6.0*Z + 5.0)*basisvalues[20]; basisvalues[9] = basisvalues[3]*(0.3125 + 1.875*Z) - 0.5625*basisvalues[0]; basisvalues[19] = basisvalues[9]*(0.155555555555556 + 1.86666666666667*Z) - 0.711111111111111*basisvalues[3]; basisvalues[34] = basisvalues[19]*(0.09375 + 1.875*Z) - 0.78125*basisvalues[9]; basisvalues[55] = basisvalues[34]*(0.0628571428571429 + 1.88571428571429*Z) - 0.822857142857143*basisvalues[19]; basisvalues[18] = basisvalues[8]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[2]; basisvalues[33] = basisvalues[18]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[8]; basisvalues[54] = basisvalues[33]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[18]; basisvalues[32] = basisvalues[17]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[7]; basisvalues[53] = basisvalues[32]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[17]; basisvalues[52] = basisvalues[31]*(1.76 + 3.3*Z) - 0.54*basisvalues[16]; basisvalues[15] = basisvalues[6]*(0.777777777777778 + 2.33333333333333*Z) - 0.555555555555556*basisvalues[1]; basisvalues[29] = basisvalues[15]*(0.428571428571429 + 2.14285714285714*Z) - 0.714285714285714*basisvalues[6]; basisvalues[49] = basisvalues[29]*(0.275 + 2.0625*Z) - 0.7875*basisvalues[15]; basisvalues[28] = basisvalues[14]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[5]; basisvalues[48] = basisvalues[28]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[14]; basisvalues[47] = basisvalues[27]*(1.76 + 3.3*Z) - 0.54*basisvalues[13]; basisvalues[25] = basisvalues[12]*(1.265625 + 2.8125*Z) - 0.546875*basisvalues[4]; basisvalues[44] = basisvalues[25]*(0.733333333333333 + 2.44444444444444*Z) - 0.711111111111111*basisvalues[12]; basisvalues[43] = basisvalues[24]*(1.76 + 3.3*Z) - 0.54*basisvalues[11]; basisvalues[40] = basisvalues[22]*(1.76 + 3.3*Z) - 0.54*basisvalues[10]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[9] *= std::sqrt(1.75); basisvalues[19] *= std::sqrt(2.25); basisvalues[34] *= std::sqrt(2.75); basisvalues[55] *= std::sqrt(3.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[8] *= std::sqrt(3.5); basisvalues[18] *= std::sqrt(4.5); basisvalues[33] *= std::sqrt(5.5); basisvalues[54] *= std::sqrt(6.5); basisvalues[7] *= std::sqrt(5.25); basisvalues[17] *= std::sqrt(6.75); basisvalues[32] *= std::sqrt(8.25); basisvalues[53] *= std::sqrt(9.75); basisvalues[16] *= std::sqrt(9.0); basisvalues[31] *= std::sqrt(11.0); basisvalues[52] *= std::sqrt(13.0); basisvalues[30] *= std::sqrt(13.75); basisvalues[51] *= std::sqrt(16.25); basisvalues[50] *= std::sqrt(19.5); basisvalues[1] *= std::sqrt(7.5); basisvalues[6] *= std::sqrt(10.5); basisvalues[15] *= std::sqrt(13.5); basisvalues[29] *= std::sqrt(16.5); basisvalues[49] *= std::sqrt(19.5); basisvalues[5] *= std::sqrt(15.75); basisvalues[14] *= std::sqrt(20.25); basisvalues[28] *= std::sqrt(24.75); basisvalues[48] *= std::sqrt(29.25); basisvalues[13] *= std::sqrt(27.0); basisvalues[27] *= std::sqrt(33.0); basisvalues[47] *= std::sqrt(39.0); basisvalues[26] *= std::sqrt(41.25); basisvalues[46] *= std::sqrt(48.75); basisvalues[45] *= std::sqrt(58.5); basisvalues[4] *= std::sqrt(26.25); basisvalues[12] *= std::sqrt(33.75); basisvalues[25] *= std::sqrt(41.25); basisvalues[44] *= std::sqrt(48.75); basisvalues[11] *= std::sqrt(45.0); basisvalues[24] *= std::sqrt(55.0); basisvalues[43] *= std::sqrt(65.0); basisvalues[23] *= std::sqrt(68.75); basisvalues[42] *= std::sqrt(81.25); basisvalues[41] *= std::sqrt(97.5); basisvalues[10] *= std::sqrt(63.0); basisvalues[22] *= std::sqrt(77.0); basisvalues[40] *= std::sqrt(91.0); basisvalues[21] *= std::sqrt(96.25); basisvalues[39] *= std::sqrt(113.75); basisvalues[38] *= std::sqrt(136.5); basisvalues[20] *= std::sqrt(123.75); basisvalues[37] *= std::sqrt(146.25); basisvalues[36] *= std::sqrt(175.5); basisvalues[35] *= std::sqrt(214.5); // Table(s) of coefficients static const double coefficients0[56] = \ {0.107394023286761, 0.0, 0.0, 0.231075146484353, 0.0, 0.0, 0.0, 0.0, 0.0, -0.109364720199429, 0.0, 0.0100832791193172, -0.0931453426216311, 0.0, 0.0, 0.0, -0.00450937950937957, -0.104139658944738, 0.0, -0.0924422799422799, 0.0, 0.0, 0.0, 0.0, -0.066884906990401, -0.0579240285834467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0299118397398575, -0.0647610327216138, 0.0, 0.0835038859404355, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.0699149613259878, 0.0242192530451648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0312669212338355, 0.0270779480866287, 0.0, -0.0182390373864041}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {6.32455532033678, 0.0, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.18637738522054e-14, 1.95399252334028e-14, -1.4210854715202e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4.67403893367191e-14, 11.2249721603218, 0.0, -1.06581410364015e-14, 1.59872115546023e-14, 1.57651669496772e-14, 3.15303338993544e-14, 0.0, -1.19904086659517e-14, 0.0, 1.4837385466804e-14, 0.0, -1.77635683940025e-14, -1.59872115546023e-14, -4.48530101948563e-14, -1.33226762955019e-14, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.58257569495585, -1.4210854715202e-14, 8.36660026534077, -1.18321595661993, 1.06581410364015e-14, 0.0, -1.4210854715202e-14, 1.37667655053519e-14, 1.80411241501588e-14, 1.24344978758018e-14, 0.0, 1.95399252334028e-14, 0.0, -2.08721928629529e-14, 0.0, -1.02140518265514e-14, 1.15463194561016e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.74165738677398, 0.0, 0.0, 8.69482604771367, 0.0, -1.73194791841524e-14, 0.0, 0.0, 2.39808173319034e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.35367281220533e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.49909083394702, -1.95399252334028e-14, -3.34664010613628, -2.36643191323985, 15.4919333848297, 0.0, -2.8421709430404e-14, 0.692820323027547, 0.565685424949269, 0.400000000000013, 0.0, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.26565424807268e-14, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14, 0.0, 0.0, 0.0}, {0.0, 4.89897948556636, 2.30926389122033e-14, 1.02140518265514e-14, 1.06581410364015e-14, 14.1985914794391, -0.828078671210798, 0.0, -1.22124532708767e-14, 0.0, -1.4210854715202e-14, 0.0, -1.3988810110277e-14, 0.0, -3.19744231092045e-14, 0.0, 1.24344978758018e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-9.18154441365004e-14, 4.24264068711928, -1.77635683940025e-14, -3.19744231092045e-14, 1.4210854715202e-14, 2.22044604925031e-14, 14.3427433120127, 0.0, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, -3.81916720471054e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {3.6, 0.0, 8.76356092008268, -1.549193338483, 0.0, 0.0, -1.06581410364015e-14, 9.52470471983255, -1.48131215963608, 0.261861468283199, 0.0, -1.4210854715202e-14, 0.0, -2.1316282072803e-14, -1.77635683940025e-14, 0.0, 1.77635683940025e-14, -2.1316282072803e-14, 1.95399252334028e-14, -2.75335310107039e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 1.11022302462516e-14, 0.0, 0.0, -1.29896093881143e-14}, {3.11769145362399, -2.88657986402541e-14, 3.16227766016839, 4.91934955049953, 0.0, -3.40838468559923e-14, -3.28626015289046e-14, 1.4210854715202e-14, 10.690449676497, -2.41897262725905, 0.0, 0.0, 0.0, 0.0, 0.0, -1.73194791841524e-14, 0.0, 2.22044604925031e-14, -2.8421709430404e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.54558441227157, 0.0, -2.08721928629529e-14, 7.66811580507231, 0.0, 0.0, 0.0, 0.0, 0.0, 10.3691851174526, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.68753899743024e-14, 11.6057691494799, 0.0, 0.0, 0.0, -4.20458932936039, -3.43303281162797, 0.0, 0.0, 0.0, 19.6214168703486, 0.0, -1.4210854715202e-14, 0.611677741841188, 0.529728463363964, 0.432521479156756, 1.08801856413265e-14, 0.0, 1.99840144432528e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.18784601823741e-14, 0.0, -1.06581410364015e-14, 1.95399252334028e-14, 0.0, 0.0, -1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.53137212479105, -2.1316282072803e-14, 3.54562104171168, -2.50713268211202, 4.7871355387817, 0.0, 0.0, -5.56626745075489, -1.04880884817014, 0.74161984870957, 0.0, 18.8034951158402, -0.603122387046445, -2.30926389122033e-14, 0.0, 1.11022302462516e-14, 1.68183573174416, 0.701283781217668, 0.132137494528683, -0.0934353184302168, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.05298244095221, 0.0, -1.58564993434417, 4.4848952846511, 4.28174419288838, 1.06581410364015e-14, -1.77635683940025e-14, 0.191485421551255, -3.75233260785872, -4.31161222746201, 0.0, 0.0, 18.8807171866294, 0.0, 0.0, 0.0, 0.0, 0.84437134186504, 1.18187368057056, 1.04463861754668, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.33226762955019e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.28626015289046e-14, 2.59512887494072, 0.0, 2.66453525910038e-14, 0.0, 10.0285307284481, -0.767649473578736, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 16.4130361329658, -1.26347611061157, 0.0967147429123365, 0.0, 2.8421709430404e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.31006316905768e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.20459198171829e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0}, {-4.2410519540681e-14, 2.32115382989599, -1.95399252334028e-14, 0.0, 0.0, 3.92428337406972, 5.49285249860478, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 17.3044631365565, -1.73008591662716, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.63757896132211e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.01017818278144, 0.0, 1.24344978758018e-14, 0.0, 0.0, 8.91928088068607, 0.0, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 16.8558564884488, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.96647939483828, 0.0, 8.124038404636, -1.64130361329659, 0.0, 1.33226762955019e-14, 0.0, 11.7728501222092, -2.40312296813958, 0.485504156227618, 0.0, -1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 10.2761860629321, -1.48323969741915, 0.302765035409788, -0.0611677741841419, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 2.62012633811537e-14, 0.0, 0.0, 0.0}, {2.65329983228429, -1.59872115546023e-14, 4.15220619990516, 2.93605316083769, 0.0, -1.3988810110277e-14, -3.90798504668055e-14, 2.63248931621765, 9.82591326180785, -2.8226127713774, 0.0, 0.0, 1.59872115546023e-14, 0.0, -2.8421709430404e-14, 0.0, 1.59872115546023e-14, 11.6081867662438, -3.09487177319465, 0.683876505540213, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.80966353013901e-14, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.24344978758018e-14, 1.26565424807268e-14, -1.28785870856518e-14}, {2.29782505861522, 0.0, 1.49829835452875, 5.50917601898536, 0.0, -2.22044604925031e-14, 1.06581410364015e-14, 0.0, 6.64803945320939, 4.13676892548485, 0.0, -1.50990331349021e-14, 0.0, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 12.5636136423841, -3.55352656109505, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0}, {1.87616630392935, 0.0, 0.0, 6.2283092998577, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 11.0541524195338, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 11.6057691494799, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.83186700722505, 1.11022302462516e-14, -4.41087092453693, -3.11895674167862, 16.6749979177077, 1.24344978758018e-14, 3.28626015289046e-14, 2.13065307820926, 1.73967095350095, 1.23013312825379, 0.0, -4.3665394383501, -3.78153408023781, 2.26485497023532e-14, 1.77635683940025e-14, 0.0, -0.557935943461964, -0.483186700722515, -0.394520289089674, -0.278967971730998, 23.6981011897578, 0.0, 0.0, 0.490653381462662, 0.438853725736256, 0.380058475033046, 0.0, 0.0, 0.0, 0.0, 0.0626933893908896, 0.0560746721671598, 0.0485620906056359, 0.0396507809422184, 0.0280373360835746, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 6.91050664139875, 0.0, 0.0, 1.4210854715202e-14, 10.5706241650196, -2.72554057547702, 0.0, 1.59872115546023e-14, 0.0, 4.67332857821918, -3.37507799486048e-14, 0.0, -7.86705867811455, -2.39719223514613, 0.618094504365233, 1.4210854715202e-14, 1.06581410364015e-14, 1.99840144432528e-14, 0.0, 0.0, 23.1055548876599, -0.46968719442418, 0.0, 0.0, 0.0, 1.62065746295904, 0.790669146636833, 0.24092688467677, -0.0621208350290869, 1.06581410364015e-14, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 3.5527136788005e-14, 0.0, 0.0, -2.1316282072803e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {4.30766533554561e-14, 6.30840061880559, 1.19904086659517e-14, 0.0, 0.0, -1.5236235005501, 11.1963004093827, 0.0, 1.08801856413265e-14, 0.0, 4.2661458015403, 0.0, 1.06581410364015e-14, 0.132992762321605, -4.72217953828913, -6.6768459701302, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 23.1532444221696, 0.0, 0.0, 0.0, 0.0, 0.721778878560573, 1.11125127955291, 1.1908743922773, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 1.15463194561016e-14, 0.0, 0.0, 0.0}, {3.85449644663771, 2.66453525910038e-14, 5.98171817966646, -2.48806675764058, 1.90029237516522, 0.0, 2.75335310107039e-14, -0.339934634239505, -2.35922146606164, 0.981306762925306, 0.0, 9.95226703056237, -0.430945803685665, 0.0, 0.0, 2.1316282072803e-14, -6.45364422706454, 0.0770899289327289, 0.535021138879208, -0.222539456105662, 0.0, 1.28785870856518e-14, 0.0, 21.5273297444417, -1.00024047132728, 0.0433116829031295, 0.0, 0.0, 0.0, 0.0, 2.75066129615, 0.648615649442917, -0.00774782937530993, -0.0537716476536598, 0.0223660568773474, 0.0, -1.59872115546023e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02140518265514e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.51865775274499, 0.0, 1.92724822331889, 2.72554057547701, 1.73472166622177, 2.35367281220533e-14, 0.0, -2.01705689521108, 3.42052627529743, -4.03112887414927, 0.0, 4.08831086321547, 5.37643791520788, 0.0, 0.0, 0.0, 0.365669640132041, -6.25148194071024, -2.03981013744547, 1.80803322065281, 0.0, 0.0, 0.0, 0.0, 22.1880978975596, -1.26521523890981, 0.0, 0.0, 1.55431223447522e-14, 0.0, 0.0, 1.98456380761454, 1.4711357857929, 0.363818136386337, -0.294009452979937, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.1316282072803e-14, 0.0, 0.0, 0.0}, {3.14718316987778, 1.77635683940025e-14, -0.861891607371342, 6.09449400220045, 1.55158222708543, 2.66453525910038e-14, 4.44089209850063e-14, 0.0693888666488727, -3.0594117081557, 1.80277563773198, -1.4210854715202e-14, 0.0, 9.0312215653788, 0.0, -4.13002965160558e-14, -1.4210854715202e-14, 0.0, 0.403888506800969, -3.67461994579464, -5.49650682721194, 0.0, 0.0, 1.62092561595273e-14, 0.0, 0.0, 21.7841260588564, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.974215733960547, 1.78974858569576, 1.80791908794929, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.08721928629529e-14, 0.0, -1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {-1.33226762955019e-14, 1.54523626091313, 0.0, 0.0, -1.06581410364015e-14, 6.71778024562962, -0.609449400220044, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.6593983227032, -1.52344936219872, 0.138210132827965, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.119501277094, -1.47332496632642, 0.153112421864229, -0.0138906409944095, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {5.50670620214078e-14, 1.41060126129513, -1.06581410364015e-14, 2.8421709430404e-14, -1.06581410364015e-14, 3.63405410063597, 2.50356888118886, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 3.5685702847991, 11.263055412878, -1.49298814645065, 0.0, -2.1316282072803e-14, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 19.3673596462204, -2.65048896124154, 0.266287609379566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14}, {-4.35207425653061e-14, 1.26168012376111, -3.28626015289046e-14, -1.4210854715202e-14, 0.0, 1.42204860051343, 4.47852016375309, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 1.24344978758018e-14, 8.27725128825316, 5.37909280973864, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.36002320516582e-14, 0.0, 1.46549439250521e-14, 19.9654813226339, -2.61992366301006, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.30926389122033e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 1.77635683940025e-14, 0.0, -1.4210854715202e-14}, {6.52811138479592e-14, 1.09264703862704, 1.77635683940025e-14, 2.04281036531029e-14, 0.0, -1.59872115546023e-14, 5.38682254607087, -1.11022302462516e-14, 0.0, 0.0, -1.50990331349021e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 13.4377817958113, 1.19904086659517e-14, 0.0, 1.59872115546023e-14, 2.39808173319034e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3988810110277e-14, 18.907670401189, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03111963412061e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.52336024752226, 2.1316282072803e-14, 7.37120708415869, -1.62882203585591, 0.0, 0.0, 0.0, 12.0171306297065, -2.90724328050878, 0.642416074439627, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 13.985882094426, -2.72522906732404, 0.659300804656284, -0.145686271816935, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8043830863938, -1.40563403846548, 0.273895826790433, -0.0662622240310449, 0.014642021234016, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {2.30350221379959, 0.0, 4.41588043316396, 1.7842851423995, 0.0, 1.37667655053519e-14, 0.0, 4.26614580154032, 7.83741028656786, -2.63899331455874, 0.0, 0.0, 1.06581410364015e-14, -1.24344978758018e-14, -2.1316282072803e-14, 0.0, 2.23427840700305, 13.2221027072096, -4.67379217909107, 1.1836355846623, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 1.77635683940025e-14, 12.1258851598178, -3.11150358274814, 0.833612074594091, -0.192474367616153, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 1.84297022087776e-14, -1.56541446472147e-14, 1.64313007644523e-14, 0.0}, {2.06031501455083, 0.0, 2.25696201807216, 3.98978286964828, 0.0, -1.95399252334028e-14, 0.0, 0.95393920141694, 8.01142041980429, 1.18019368870418, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.48689957516035e-14, 0.0, -1.59872115546023e-14, 5.55254896421455, 9.62241374388481, -3.59830837050572, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 13.3932520322736, -4.68666192508058, 1.18356086726903, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.78428514239955, 0.0, 0.814411017927952, 5.06770487035907, 0.0, 1.50990331349021e-14, 2.48689957516035e-14, 0.0, 4.0151004652476, 6.58672305740269, 0.0, 1.59872115546023e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 2.22044604925031e-14, -2.22044604925031e-14, 10.0159311874144, 2.83293314500739, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, -1.59872115546023e-14, 0.0, 14.0929454377398, -4.55552790213388, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0}, {1.4568627181694, 0.0, 1.50990331349021e-14, 5.07816454066241, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 10.0142755247554, 0.0, 0.0, 1.95399252334028e-14, 0.0, -1.50990331349021e-14, 0.0, 0.0, 3.84137166520304e-14, 0.0, 13.8784813613723, 0.0, 0.0, 1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 1.57651669496772e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 12.5535587278944, 0.0, 0.0, 1.06581410364015e-14, 0.0, -2.08721928629529e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.47722557505168, 0.0, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.11074344166795e-14, 0.0, -1.24344978758018e-14, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747789, 7.24568837309472, 4.18330013267039, -0.591607978309975, 1.59872115546023e-14, 0.0, 1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, -1.59872115546023e-14, -2.39808173319034e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338699, 0.0, 0.0, 4.34741302385684, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.17683640610267e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.6457513110646, 0.0, 9.66091783079296, 0.683130051063951, 0.0, 0.0, -1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.26010313294955e-14, 0.0, 0.0, -1.75415237890775e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.24037034920396, 0.0, 0.0, 7.52994023880668, 0.0, -1.59872115546023e-14, 0.0, 0.0, 1.93178806284777e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 2.06501482580279e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474623, -1.0, 9.16515138991168, 7.09929573971953, -0.414039335605426, -2.04939015319192, -0.47809144373374, 0.169030850945719, 0.0, 1.4210854715202e-14, 0.0, -1.55431223447522e-14, 0.0, 0.0, 1.82076576038526e-14, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463876, 3.17542648054293, 1.24344978758018e-14, 0.0, 7.17137165600638, 0.0, -1.3801311186847, -1.56144011671766, 0.0, 0.0, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 1.60982338570648e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0547118733939e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.80000000000003, -5.69209978830308, 4.38178046004134, -0.77459666924149, 1.06581410364015e-14, 10.998181667894, 0.962140470884719, 4.76235235991628, -0.740656079818033, 0.1309307341416, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.34336985979644e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.55884572681193, 2.73861278752581, 1.58113883008417, 2.45967477524974, 1.24344978758018e-14, 0.0, 9.25820099772552, 1.15463194561016e-14, 5.34522483824851, -1.20948631362953, 0.0, 0.0, 0.0, 0.0, -1.7874590696465e-14, -2.04281036531029e-14, 0.0, 1.11022302462516e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613578, 0.0, -1.04360964314765e-14, 3.83405790253616, 0.0, 0.0, 0.0, 0.0, 0.0, 5.18459255872628, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.19615242270663, -1.4210854715202e-14, -3.16227766016838, -2.23606797749981, 0.0, 0.0, 0.0, 13.7477270848675, 0.534522483824846, 0.377964473009211, -4.2632564145606e-14, -2.44804176929847e-14, 1.06581410364015e-14, 0.0, -1.99840144432528e-14, 0.0, -1.06581410364015e-14, -1.77635683940025e-14, 2.72837308301632e-14, -2.04281036531029e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, 0.0, 0.0, -1.86517468137026e-14, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 1.85407245112401e-14, 0.0, 0.0, 0.0}, {-1.80000000000005, -1.4210854715202e-14, 3.65148371670111, -2.84018778721881, 0.0, -1.46549439250521e-14, -4.61852778244065e-14, 1.93178806284777e-14, 12.3442679969674, 1.39659449751036, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, -2.53130849614536e-14, -3.37507799486048e-14, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.24344978758018e-14}, {2.20454076850486, 0.0, -1.82076576038526e-14, 6.64078308635358, 0.0, 0.0, 0.0, 0.0, 0.0, 8.97997772825744, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.8421709430404e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 1.37667655053519e-14, -1.24344978758018e-14, 0.0, 0.0, -1.06581410364015e-14, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239556, 3.07059789431495, 1.77281052085586, -1.253566341056, 2.39356776939085, 6.30376871403132, -0.908295106229257, -2.78313372537745, -0.524404424085068, 0.370809924354789, 11.1242977306435, 9.40174755792013, -0.301561193523245, -2.42752078113806, -0.794200206656965, 0.114434427054267, 0.840917865872086, 0.350641890608844, 0.0660687472643463, -0.0467176592151064, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047605, 2.74642624930238, -0.792824967172093, 2.24244764232554, 2.1408720964442, -0.331662479035522, 6.49923072370877, 0.0957427107756317, -1.87616630392936, -2.15580611373101, 0.0, 0.0, 9.44035859331467, 0.0, -1.46249406456537, -2.04706526287664, 0.0, 0.422185670932522, 0.590936840285272, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551268, 1.29756443747037, 3.74574588632196, -1.05945692672795, -8.09173593712688, 5.01426536422406, -0.383824736789357, 1.80936716113937, -1.10800657553491, 0.313391585263999, 1.4210854715202e-14, 12.7134831207354, 1.01946290306867, 8.20651806648288, -0.631738055305799, 0.04835737145617, -2.84282124887605, -0.227958835180086, 0.139595707137604, -0.0394836284566157, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715532, 1.16057691494798, 1.34011878852098, 1.89521416591737, 2.53311402559512, 1.96214168703485, 2.74642624930236, -0.566421515598876, 3.17129986868839, -1.82198870938949, 0.0, 0.0, 11.169982923824, 0.0, 8.65223156827827, -0.865042958313584, 0.0, -2.49768411251821, -0.998865569685883, 0.441440386136648, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.35447209004269e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741914, 1.00508909139072, -0.193429485824675, 3.55615782880926, 0.0, 0.0, 4.45964044034304, 0.0, -0.858258202906989, 2.67027285925186, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 8.42792824422442, 0.0, 0.0, -1.62195554683794, -2.29379153190449, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741913, 7.03562363973515, 4.062019202318, -0.820651806648287, 0.0, -6.79705818718656, -2.08116553882674, 5.88642506110459, -1.20156148406978, 0.242752078113808, 0.0, -2.48689957516035e-14, 0.0, 14.8323969741913, 0.85634883857767, 0.262202212042543, 5.13809303146607, -0.741619848709579, 0.151382517704907, -0.0305838870920616, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, -1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02060590481778e-14, 0.0, 0.0, 0.0}, {1.3266499161422, -2.69693703815182, 2.07610309995256, 1.46802658041887, -1.4210854715202e-14, 3.03973683071411, -6.38211787508103, 1.31624465810882, 4.91295663090392, -1.41130638568869, 0.0, 0.0, 1.24344978758018e-14, 0.0, 13.4039795085887, 2.01017818278146, 0.0, 5.80409338312192, -1.54743588659734, 0.341938252770117, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 1.25784799243078e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0}, {1.14891252930761, 1.29756443747034, 0.749149177264372, 2.75458800949269, 0.0, 0.0, 5.75737105184056, 0.0, 3.3240197266047, 2.06838446274243, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.50990331349021e-14, 10.8804085776374, 0.0, 0.0, 6.28180682119208, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {0.938083151964674, 0.0, 0.0, 3.11415464992885, 0.0, 0.0, 0.0, 0.0, 0.0, 5.52707620976691, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5.80288457473996, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.42539535431068, 0.0, 9.3808315196469, 1.89521416591739, 1.59872115546023e-14, 1.3988810110277e-14, -1.59872115546023e-14, -3.39852909359328, -2.77488738510232, -0.560611910581392, 0.0, 0.0, 0.0, 3.19744231092045e-14, 2.1316282072803e-14, 0.0, 17.7988763690296, 0.428174419288847, 0.349602949390063, 0.0706304617818837, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.82970843102537, 0.0, -1.49829835452877, 4.2378277069118, -1.14352971536391e-14, 1.33226762955019e-14, 1.59872115546023e-14, 3.79967103839266, -3.54562104171171, -4.07409060843206, 1.06581410364015e-14, 0.0, 0.0, 0.0, -2.66453525910038e-14, 0.0, 0.0, 16.7549743857359, 1.11676565710086, 0.987090711415302, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 1.82076576038526e-14, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, -1.59872115546023e-14, 0.0, 1.54876111935209e-14, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0}, {-1.32664991614217, -1.06581410364015e-14, 1.73008591662713, -3.18072425757423, 0.0, 0.0, 0.0, 0.0, 7.67649473578737, -2.38836465270396, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.4210854715202e-14, -1.4210854715202e-14, 0.0, -1.54321000422897e-14, 14.5072114368499, 2.05162951662073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0}, {1.62480768092717, 0.0, 0.0, 5.39387407630362, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 9.5731768126215, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0508909139073, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725404, 3.45525332069939, 0.997445717412049, -1.41060126129509, 3.23209352764251, 5.28531208250979, -1.36277028773849, -2.89087233497828, -0.393397896234728, 0.556348640264166, 2.33666428910959, 9.02784807228865, -0.732969916135152, -3.93352933905727, -1.19859611757306, 0.309047252182626, 1.64018416088946, 0.655588223176213, 0.0892142571199814, -0.126168012376114, 13.0996183150503, 11.55277744383, -0.234843597212093, -2.44096975264613, -0.907332870306512, 0.0736662483163202, 0.810328731479521, 0.395334573318418, 0.120463442338388, -0.0310604175145452, -0.311895674167854, -0.164844710568315, -0.065889095553074, -0.00896637020658053, 0.0126803623514062, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482417, 3.15420030940279, -1.09264703862701, 1.54523626091313, 2.95048422176041, -0.761811750275049, 5.59815020469132, 0.263899331455868, -1.93925611658548, -2.28543525082516, 2.13307290077015, -0.257539376818855, 9.14446135479766, 0.0664963811607955, -2.36108976914457, -3.3384229850651, -0.0230350221379907, 0.817905488277901, 1.1564636454577, 1.02505848514082, 0.0, 0.0, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280282, 0.555625639776457, 0.595437196138651, 0.0, -0.125015768949703, -0.192474367616157, -0.206265495285708, -0.166687691932938, 0.0, 0.0, 0.0, 0.0, 1.63202784619898e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331885, 1.82834820066016, 2.99085908983323, -1.24403337882028, 0.950146187582625, 5.74064456311311, -0.721110255092799, -0.169967317119739, -1.17961073303082, 0.490653381462648, -10.3037210107158, 4.97613351528116, -0.215472901842822, 5.78174466995661, -1.30185581821819, 0.163532434528632, -3.22682211353225, 0.0385449644663689, 0.267510569439618, -0.111269728052833, 0.0, 14.5551314611669, 1.03556292536503, 10.7636648722209, -0.500120235663644, 0.0216558414515656, -3.5732138395088, -0.581087203147981, 0.130841432732453, -0.0164356280722686, 1.37533064807501, 0.324307824721444, -0.0038739146876523, -0.0268858238268335, 0.0111830284386731, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637254, 1.66904592079256, 0.963624111659453, 1.36277028773852, 0.867360833110869, 2.28430636201793, 2.96226264871971, -1.00852844760554, 1.71026313764872, -2.01556443707463, 2.41867732448957, 2.04415543160773, 2.68821895760395, -0.527798662911744, 7.0797705325562, -1.76652739792483, 0.182834820066024, -3.12574097035512, -1.01990506872274, 0.904016610326402, 0.0, 0.0, 13.1266557397187, 0.0, 11.0940489487798, -0.632607619454904, 0.0, -2.86447112137562, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807272, 0.735567892896454, 0.181909068193169, -0.147004726489971, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493887, 1.49284005458435, -0.430945803685678, 3.04724700110022, 0.775791113542715, -0.120185042515443, 5.29905651979674, 0.0346944333244396, -1.52970585407785, 0.901387818865995, 0.0, 0.0, 4.51561078268941, 0.0, -0.699555414372442, 6.36462844462228, 0.0, 0.201944253400485, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 0.0, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875267, -3.0999354831996, 0.0, 0.0, 0.48710786698027, 0.894874292847875, 0.903959543974644, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.62882203585591, 0.772618130456571, 3.86595114186568, -1.05140010313425, 9.15442906076461, 3.35889012281483, -0.304724700110018, 3.87851223317102, -1.52475169285615, 0.414677792940093, 0.0, -9.46260092820844, -2.07602937339136, 7.32969916135159, -0.761724681099357, 0.0691050664139832, 0.564240504518073, -0.879563899362202, 0.345781182036212, -0.0940400840863393, 1.24344978758018e-14, 0.0, 0.0, 16.3745228938128, 0.951027176355639, 0.208648802584718, 9.05975063854701, -0.736662483163209, 0.0765562109321241, -0.00694532049720387, -3.48709964663733, -0.0567083043941681, 0.0883994979795857, -0.0347523163751426, 0.0094513840656914, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.72639680329212e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647572, 2.03602754481989, 1.15175110689981, -2.93221479395417, 1.81702705031799, 1.25178444059444, 0.655663160391211, 3.61359041872285, -1.70346285967313, 0.0, 2.76420265655949, -9.08783875864327, 1.78428514239955, 5.63152770643901, -0.746494073225317, -0.61809450436524, 2.03210252328835, -2.1549427706255, 0.764033484562609, 0.0, 0.0, 0.0, 0.0, 15.0018922739643, 2.13860408462396, 0.0, 9.68367982311022, -1.32524448062076, 0.133143804689784, 0.0, -3.35452509157129, -0.478206411017784, 0.384353057392899, -0.124241670058193, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321606, 0.630840061880555, 0.728431359084658, 2.57539376818857, 0.917928424547676, 0.711024300256717, 2.23926008187655, -0.205255035576783, 2.58567482211399, 0.761811750275047, 0.0, 0.0, 5.34294273196309, 1.64313007644523e-14, 4.13862564412655, 2.68954640486932, 0.0, -1.1947183148558, 3.10562068169859, -2.32269806558126, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 12.8876627769294, 0.0, 0.0, 9.98274066131697, -1.30996183150502, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692614, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.11022302462516e-14, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {1.15175110689981, 0.546323519313515, -0.105140010313423, 3.27118942773251, 0.0, -1.4432899320127e-14, 2.69341127303543, 0.0, -0.518347241175131, 4.25171145123352, 0.0, 0.0, 0.0, 0.0, 0.0, 6.71889089790564, 0.0, 0.0, -1.29305115618717, 1.82865048192214, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.45383520059451, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, -6.78263087840207, 3.68560354207936, -0.814411017927963, 0.0, 10.0216907612581, 2.6751056943961, 6.00856531485323, -1.45362164025438, 0.321208037219805, 0.0, 1.06581410364015e-14, 0.0, -7.57008074256671, -2.27270584034423, -0.606656948415845, 6.99294104721298, -1.36261453366202, 0.329650402328139, -0.0728431359084718, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.7137404500718, 0.76082174108452, 0.228415531250655, 0.0609713174047712, 5.40219154319687, -0.702817019232752, 0.136947913395214, -0.033131112015524, 0.00732101061700607, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0}, {1.1517511068998, 3.8242646351946, 2.20794021658197, 0.89214257119975, 0.0, -2.46306042692148, 6.78739640804926, 2.13307290077016, 3.91870514328394, -1.31949665727938, 0.0, 0.0, 1.24344978758018e-14, 3.22490309931941, -7.63378455726035, -4.04762275910192, 1.11713920350154, 6.61105135360477, -2.33689608954553, 0.591817792331161, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5022076529583, 1.79642743108412, 0.721929233499941, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080758, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.29677388219329e-14, -1.11022302462516e-14, 0.0, 0.0}, {1.03015750727542, -1.46593983227032, 1.12848100903607, 1.99489143482414, 0.0, 1.10151410945719, -5.20357020296095, 0.476969600708463, 4.00571020990213, 0.590096844352084, 0.0, 1.4210854715202e-14, 0.0, 1.59872115546023e-14, 6.41153127835566, -6.24994106094659, 0.0, 2.77627448210727, 4.81120687194239, -1.79915418525286, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.4651953323153, 3.0440762145518, 0.0, 0.0, 6.69662601613678, -2.34333096254028, 0.591780433634506, 0.0, 0.0, 0.0, 0.0, -1.36557432028894e-14, -1.24344978758018e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 1.06581410364015e-14, 0.0, 0.0}, {0.89214257119982, 0.705300630647558, 0.407205508963991, 2.53385243517955, 0.0, 0.0, 3.4771790016512, -1.11022302462516e-14, 2.0075502326238, 3.29336152870135, -1.04360964314765e-14, 1.4210854715202e-14, 1.04360964314765e-14, -1.68753899743024e-14, 0.0, 8.67405085085771, 1.95399252334028e-14, 0.0, 5.00796559370721, 1.41646657250371, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.2048487632307, 0.0, 0.0, 0.0, 7.0464727188699, -2.27776395106694, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.7284313590847, 0.0, 0.0, 2.5390822703312, 0.0, 0.0, 0.0, 0.0, 0.0, 5.00713776237769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.92068583260152e-14, 0.0, 6.93924068068617, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.27677936394721, 0.0, 0.0, 0.0, 0.0, -1.04360964314765e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.09901951359278, 2.1316282072803e-14, -4.65474668125634, -3.29140294302191, 0.0, -2.1316282072803e-14, 0.0, 13.490737563232, 1.83585684909536, 1.29814682728312, 1.4210854715202e-14, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -3.53270434653113, -3.0594117081557, -0.416333199893252, -0.294392028877592, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 21.8326971917504, 0.355050145839433, 0.307482445914332, 0.0418430609640592, 0.0295875121532911, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.14352971536391e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.89848137210902e-14, 0.0}, {-2.65985524643215, 0.0, 5.0990195135928, -2.06031501455083, 1.06581410364015e-14, 1.92623694772465e-14, 0.0, -1.23153021346074, 9.04986187739902, 3.04724700110021, 0.0, 0.0, -1.15463194561016e-14, 0.0, 2.8421709430404e-14, 0.0, 3.86988371918332, -3.81689227863017, -5.39683034546924, -1.36674464685442, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 21.00264918355, 0.89821371554206, 0.962572311333261, 0.222250255910583, 0.0, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0}, {2.9738085706659, 0.0, -0.814411017927952, 5.75875553449897, -1.4210854715202e-14, 1.68753899743024e-14, 1.77635683940025e-14, 1.3768926368215, -2.89087233497831, 1.70346285967312, -1.4210854715202e-14, 2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 8.01441409794462, -3.47218947830364, -5.19371076584692, 0.0, 0.0, 0.0, 0.0, 0.0, -1.40339129206524e-14, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0, 19.3314941653941, 1.69115345252877, 1.70832296330019, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 0.0, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.03015750727538, 0.0, 0.940400840863429, -2.92584077107539, -1.58761892521397e-14, 2.1316282072803e-14, 3.90798504668055e-14, 0.0, 4.6362386688682, -3.80284633026898, 0.0, 2.1316282072803e-14, 0.0, -1.06581410364015e-14, -1.33226762955019e-14, -1.4210854715202e-14, 1.59872115546023e-14, 0.0, 11.565401134477, -1.63559471386625, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 1.59872115546023e-14, 0.0, 0.0, 0.0, 16.2731316843076, 2.63013526059783, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376115, 0.0, 1.06581410364015e-14, 4.39781949681097, 0.0, 0.0, 0.0, 0.0, 0.0, 8.67261700493489, 0.0, 0.0, 1.4210854715202e-14, 0.0, -1.24344978758018e-14, 0.0, 0.0, 3.21964677141295e-14, 0.0, 12.0191174248973, 0.0, 0.0, 1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 10.8717007662564, 0.0, 0.0, 0.0, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats2[56][56] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.16227766016839, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.16397779494324, -1.06581410364015e-14, 0.0, 0.0, 1.12687636999453e-14, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, -1.03823200037212e-14, 1.06581410364015e-14, 0.0, 0.0, 1.83186799063151e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.95803989154979, 5.61248608016091, -1.08012344973464, -0.763762615825974, 1.4210854715202e-14, 0.0, 1.88737914186277e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, -1.59872115546023e-14, -1.15463194561016e-14, -1.4210854715202e-14, -1.24344978758018e-14, 0.0, 1.28785870856518e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.29128784747792, 1.44913767461894, 4.18330013267039, -0.591607978309967, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.87082869338696, 7.09929573971953, 0.0, 4.34741302385682, 0.0, 0.0, 2.62012633811537e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, -2.38697950294409e-14, -1.24344978758018e-14, 0.0, 1.11022302462516e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.3228756555323, 0.0, 3.86436713231719, -0.341565025531991, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.08012344973465, -1.06581410364015e-14, 7.09929573971954, 2.50998007960221, 0.0, 0.0, 0.0, 0.0, 1.86517468137026e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.81881307912985, 0.0, -1.4210854715202e-14, 8.87411967464942, -1.33226762955019e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, -1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, -1.4210854715202e-14, 1.06581410364015e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.74954541697349, 5.79655069847577, -1.67332005306814, -1.18321595661992, 7.74596669241483, -1.19999999999999, -0.979795897113268, 0.346410161513774, 0.282842712474628, 0.200000000000004, 0.0, 0.0, 0.0, -2.30926389122033e-14, -2.22044604925031e-14, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.32379000772446, 2.44948974278318, 2.82842712474621, -0.999999999999998, 1.30930734141597, 7.09929573971953, -0.41403933560541, -2.04939015319192, -0.47809144373375, 0.169030850945708, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.01246117974979, 2.12132034355963, -0.408248290463859, 3.17542648054292, 9.07114735222145, 0.0, 7.17137165600636, 0.0, -1.38013111868468, -1.56144011671765, 0.0, 0.0, -1.4210854715202e-14, 0.0, -1.02140518265514e-14, 0.0, 0.0, 1.53210777398272e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.8, 0.632455532033672, 4.38178046004134, -0.774596669241495, 0.0, 3.14233761939829, -0.10690449676497, 4.76235235991628, -0.740656079818042, 0.130930734141602, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 1.24344978758018e-14, -1.06581410364015e-14, 0.0, -1.46549439250521e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.558845726812, 0.547722557505154, 1.5811388300842, 2.45967477524977, 1.06581410364015e-14, 9.07114735222144, 1.85164019954509, 0.0, 5.3452248382485, -1.20948631362952, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.48689957516035e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.27279220613576, -6.26099033699941, -3.19744231092045e-14, 3.83405790253614, 0.0, 0.0, 10.5830052442584, 0.0, 0.0, 5.18459255872627, 0.0, 0.0, 0.0, 2.30926389122033e-14, 1.50990331349021e-14, 1.06581410364015e-14, -1.46549439250521e-14, 0.0, -1.33226762955019e-14, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.13242748511766e-14, -1.50990331349021e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, -1.28785870856518e-14}, {1.03923048454132, 0.0, 3.16227766016838, -0.44721359549997, 0.0, 0.0, 0.0, 5.8918830363718, -0.534522483824846, 0.0755928946018467, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.37667655053519e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.899999999999991, 0.0, 1.46059348668044, 1.42009389360937, -1.04360964314765e-14, 0.0, -1.24344978758018e-14, 9.07114735222146, 4.93770719878696, -0.698297248755177, 0.0, -2.30926389122033e-14, 0.0, 0.0, -1.59872115546023e-14, 0.0, 1.24344978758018e-14, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.73484692283493, -1.06581410364015e-14, -6.26099033699942, 2.21359436211786, 0.0, -2.48689957516035e-14, -1.77635683940025e-14, 0.0, 10.5830052442584, 2.99332590941915, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.02140518265514e-14, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.71576766497725, 0.0, 0.0, -4.69574275274956, 1.55431223447522e-14, 0.0, 0.0, 0.0, -2.04281036531029e-14, 12.69960629311, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, -1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.56904651573304, 5.80288457473995, -2.01017818278145, -1.42141062443802, 8.14215222512713, -2.1022946646802, -1.716516405814, 0.728256234341412, 0.594618725379086, 0.420458932936051, 9.81070843517429, -1.18450885369836, -1.02581475831037, 0.305838870920587, 0.264864231681981, 0.216260739578377, -0.105945692672788, -0.0917516612761675, -0.0749149177264213, -0.0529728463363905, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.26568606239553, 3.07059789431495, 1.77281052085585, -1.25356634105601, 2.39356776939085, 6.30376871403131, -0.908295106229241, -2.78313372537744, -0.524404424085075, 0.370809924354784, 1.23603308118261, 9.40174755792012, -0.30156119352323, -2.42752078113806, -0.794200206656987, 0.114434427054268, 0.840917865872094, 0.35064189060884, 0.0660687472643411, -0.0467176592151075, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.02649122047608, 2.74642624930236, -0.792824967172092, 2.24244764232555, 2.1408720964442, -0.331662479035516, 6.49923072370876, 0.0957427107756361, -1.87616630392935, -2.155806113731, 11.0554159678513, 0.0, 9.44035859331466, 0.0, -1.46249406456536, -2.04706526287665, 0.0, 0.422185670932523, 0.590936840285276, 0.522319308773341, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22124532708767e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.91485421551269, 1.29756443747036, 3.74574588632198, -1.05945692672795, 0.404586796856334, 5.01426536422407, -0.383824736789376, 1.80936716113937, -1.10800657553489, 0.313391585264009, 0.0, 2.82521847127455, -0.0509731451534301, 8.20651806648287, -0.631738055305791, 0.0483573714561656, -2.84282124887605, -0.227958835180068, 0.139595707137609, -0.0394836284566193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.71269767715533, 1.16057691494799, 1.34011878852097, 1.89521416591738, 0.361873432227869, 1.96214168703484, 2.74642624930238, -0.566421515598876, 3.17129986868839, -1.8219887093895, -1.4210854715202e-14, 11.0554159678513, 1.59571184626056, 0.0, 8.65223156827827, -0.865042958313571, 0.0, -2.4976841125182, -0.998865569685877, 0.441440386136653, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.03667074924374e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14, 0.0, -2.30926389122033e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.48323969741912, 1.00508909139074, -0.193429485824681, 3.55615782880926, -8.46157280212811, 0.0, 4.45964044034304, 0.0, -0.858258202907004, 2.67027285925185, -1.06581410364015e-14, 0.0, 12.4373429638328, 0.0, 0.0, 8.42792824422443, 0.0, -1.4210854715202e-14, -1.62195554683795, -2.2937915319045, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {1.48323969741915, 0.335029697130246, 4.062019202318, -0.820651806648291, 0.0, 1.69926454679665, -0.0991031208965167, 5.88642506110459, -1.20156148406979, 0.242752078113808, 0.0, -1.4210854715202e-14, 0.0, 4.94413232473044, -0.214087209644421, 0.0124858196210749, 5.13809303146607, -0.741619848709576, 0.151382517704897, -0.0305838870920701, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.50990331349021e-14, 0.0, 0.0, 0.0}, {1.32664991614215, 0.299659670905749, 2.07610309995255, 1.46802658041886, 0.0, 0.86849623734689, 0.709124208342313, 1.31624465810883, 4.91295663090393, -1.4113063856887, 0.0, 0.0, 1.15463194561016e-14, 11.0554159678513, 3.82970843102535, -0.223353131420168, 0.0, 5.80409338312193, -1.54743588659732, 0.341938252770108, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.14891252930759, 0.25951288749407, 0.749149177264341, 2.75458800949268, 0.0, -8.46157280212812, 1.15147421036812, 0.0, 3.32401972660469, 2.06838446274242, 0.0, 0.0, 0.0, 0.0, 12.4373429638327, 2.17608171552748, -2.30926389122033e-14, -1.46549439250521e-14, 6.28180682119207, -1.77676328054753, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0}, {0.938083151964733, 7.62808987244124, 2.30926389122033e-14, 3.11415464992887, -1.4210854715202e-14, 0.0, -7.52139804633608, -1.53210777398272e-14, -1.90958360235527e-14, 5.52707620976691, 0.0, 0.0, 3.01980662698043e-14, -1.06581410364015e-14, 0.0, 14.2141062443803, 1.75415237890775e-14, 1.46549439250521e-14, 2.30926389122033e-14, 5.80288457473997, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, -1.08801856413265e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.85634883857769, 0.0, 2.68023757704198, -0.473803541479342, 0.0, 0.0, 0.0, 5.09779364038994, -0.792824967172092, 0.140152977645352, -1.06581410364015e-14, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 7.91061171956872, -0.642261628933266, 0.0998865569686012, -0.0176576154454726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.765941686205073, 1.50990331349021e-14, 1.49829835452881, 0.847565541382361, 0.0, 0.0, -1.24344978758018e-14, 1.62843044502543, 3.54562104171166, -0.814818121686415, 0.0, -2.1316282072803e-14, 0.0, 1.06581410364015e-14, -1.77635683940025e-14, 0.0, 11.0554159678513, 7.18070330817252, -1.11676565710081, 0.197418142283057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.663324958071061, 0.0, 0.692034366650857, 1.5903621287871, 0.0, 0.0, 0.0, -8.46157280212813, 3.07059789431492, 1.19418232635197, 0.0, 0.0, 1.06581410364015e-14, 0.0, -1.59872115546023e-14, 0.0, 1.06581410364015e-14, 12.4373429638327, 5.80288457473996, -1.02581475831035, 0.0, 0.0, 0.0, 0.0, 0.0, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.541602560309085, 1.95399252334028e-14, 7.62808987244126, 1.79795802543455, 0.0, 1.77635683940025e-14, 2.66453525910038e-14, 0.0, -7.52139804633613, 3.19105893754049, 0.0, 1.59872115546023e-14, 0.0, -1.06581410364015e-14, -1.4210854715202e-14, 0.0, 1.38222766565832e-14, 0.0, 14.2141062443803, 3.35029697130245, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-5.36159180343547, -1.06581410364015e-14, 0.0, 8.8994381845148, 0.0, 0.0, -1.99840144432528e-14, 0.0, 0.0, -5.26497863243525, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 3.01703106941886e-14, -1.06581410364015e-14, 16.583123951777, 0.0, 1.06581410364015e-14, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59872115546023e-14, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.41593350361253, 5.72988941019467, -2.20543546226845, -1.5594783708393, 8.33749895885383, -2.76779953857106, -2.2598988599366, 1.06532653910462, 0.869835476750477, 0.615066564126897, 10.333118277332, -2.18326971917504, -1.89076704011891, 0.724780051083758, 0.627677936394714, 0.512496888990047, -0.278967971730972, -0.241593350361249, -0.197260144544823, -0.139483985865491, 11.8490505948789, -1.16109782023228, -1.03851746182648, 0.245326690731329, 0.219426862868129, 0.190029237516521, -0.0814411017927963, -0.0728431359084647, -0.0630840061880511, -0.0515078753637643, 0.0313466946954457, 0.0280373360835794, 0.0242810453028186, 0.0198253904711077, 0.0140186680417866, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.18529407725405, 3.45525332069937, 0.997445717412068, -1.4106012612951, 3.23209352764251, 5.28531208250978, -1.36277028773851, -2.89087233497829, -0.393397896234702, 0.556348640264184, 2.33666428910959, 9.02784807228867, -0.732969916135151, -3.93352933905729, -1.19859611757307, 0.309047252182623, 1.64018416088946, 0.655588223176228, 0.0892142571199894, -0.126168012376106, 1.1908743922773, 11.55277744383, -0.23484359721209, -2.44096975264614, -0.907332870306508, 0.0736662483163188, 0.810328731479525, 0.395334573318413, 0.120463442338387, -0.0310604175145479, -0.311895674167861, -0.16484471056832, -0.0658890955530715, -0.00896637020658542, 0.0126803623514078, 0.0, -1.06581410364015e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.06581410364015e-14, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99489143482415, 3.15420030940282, -1.09264703862703, 1.54523626091314, 2.95048422176041, -0.761811750275041, 5.59815020469135, 0.26389933145588, -1.93925611658551, -2.28543525082518, 2.13307290077015, -0.257539376818862, 9.14446135479766, 0.0664963811608148, -2.36108976914457, -3.33842298506509, -0.0230350221379905, 0.817905488277889, 1.15646364545769, 1.02505848514081, 13.0453753561106, -1.06581410364015e-14, 11.5766222110848, 0.0, -1.39771878815471, -2.15192884958005, 0.0, 0.360889439280284, 0.555625639776453, 0.595437196138652, 0.0, -0.125015768949702, -0.192474367616161, -0.206265495285703, -0.166687691932942, 0.0, 0.0, 0.0, 0.0, 1.95399252334028e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.92724822331887, 1.82834820066016, 2.99085908983324, -1.24403337882028, 0.950146187582611, 5.74064456311311, -0.721110255092788, -0.169967317119747, -1.17961073303083, 0.490653381462657, 0.294392028877589, 4.97613351528118, -0.215472901842833, 5.78174466995659, -1.30185581821819, 0.163532434528633, -3.22682211353225, 0.0385449644663698, 0.267510569439609, -0.111269728052829, 0.0, 2.646387538394, -0.0295875121532863, 10.7636648722209, -0.500120235663637, 0.0216558414515671, -3.57321383950878, -0.581087203147985, 0.130841432732454, -0.0164356280722704, 1.375330648075, 0.324307824721454, -0.00387391468765275, -0.0268858238268313, 0.0111830284386747, 0.0, -1.12132525487141e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.68753899743024e-14, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.75932887637247, 1.66904592079256, 0.963624111659419, 1.3627702877385, 0.86736083311089, 2.28430636201794, 2.96226264871971, -1.00852844760553, 1.71026313764872, -2.01556443707464, 0.268741924943306, 2.04415543160771, 2.68821895760394, -0.527798662911731, 7.07977053255619, -1.76652739792483, 0.182834820066017, -3.12574097035512, -1.01990506872274, 0.904016610326408, 0.0, 13.0453753561106, 1.45851730441319, 0.0, 11.0940489487798, -0.63260761945491, 0.0, -2.86447112137561, -1.66605356688627, 0.315075748468086, 0.0, 0.992281903807264, 0.735567892896449, 0.18190906819317, -0.14700472648997, 0.0, -1.46549439250521e-14, 0.0, 1.4210854715202e-14, 0.0, 0.0, -2.1316282072803e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.57359158493893, 1.49284005458437, -0.430945803685665, 3.04724700110023, 0.775791113542702, -0.120185042515462, 5.29905651979674, 0.0346944333244372, -1.52970585407785, 0.901387818865993, -10.576283741361, 0.0, 4.51561078268942, 0.0, -0.699555414372433, 6.36462844462228, 1.13242748511766e-14, 0.201944253400482, -1.83730997289732, -2.74825341360597, 0.0, 0.0, 14.3499128917217, 0.0, 0.0, 10.8920630294282, 0.0, 0.0, -1.68739114875268, -3.0999354831996, 0.0, 0.0, 0.487107866980275, 0.894874292847873, 0.903959543974647, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.6288220358559, 0.772618130456564, 3.86595114186567, -1.05140010313427, 0.160604018609902, 3.35889012281482, -0.304724700110016, 3.87851223317101, -1.52475169285615, 0.414677792940088, 0.0, 1.135512111385, -0.036421567954231, 7.32969916135159, -0.761724681099368, 0.0691050664139842, 0.564240504518043, -0.879563899362195, 0.345781182036201, -0.0940400840863452, 0.0, 0.0, 0.0, 4.46577897103986, -0.114123261162677, 0.00366050530850393, 9.05975063854701, -0.736662483163211, 0.0765562109321194, -0.00694532049720442, -3.48709964663733, -0.056708304394161, 0.0883994979795864, -0.0347523163751426, 0.00945138406568952, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {1.48690428533296, 0.705300630647578, 2.03602754481989, 1.15175110689981, 0.146610739697699, 1.81702705031798, 1.25178444059442, 0.655663160391217, 3.61359041872285, -1.70346285967312, 0.0, 0.614267257013196, 0.454391937932176, 1.78428514239956, 5.63152770643901, -0.746494073225321, -0.618094504365239, 2.03210252328834, -2.15494277062552, 0.764033484562615, 0.0, 0.0, 0.0, 13.0453753561106, 3.33375383865873, -0.106930204231203, 0.0, 9.68367982311022, -1.32524448062077, 0.133143804689784, 0.0, -3.3545250915713, -0.478206411017786, 0.384353057392905, -0.124241670058189, 0.0, -1.77635683940025e-14, 0.0, 0.0, 1.02140518265514e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.32992762321607, 0.630840061880574, 0.728431359084674, 2.57539376818857, 0.131132632078232, 0.71102430025673, 2.23926008187657, -0.205255035576797, 2.58567482211399, 0.761811750275044, 1.24344978758018e-14, -10.576283741361, 0.763277533137597, 1.4210854715202e-14, 4.13862564412657, 2.68954640486933, 1.26565424807268e-14, -1.1947183148558, 3.10562068169861, -2.32269806558127, 0.0, -1.15463194561016e-14, 0.0, 0.0, 14.3499128917217, 1.84109468241848, 0.0, 0.0, 9.98274066131697, -1.30996183150503, 0.0, 0.0, -2.88176900403078, -1.51261363209512, 0.763985254692603, 0.0, 0.0, 0.0, 1.59872115546023e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23234755733392e-14, 0.0, 0.0, -1.02140518265514e-14, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, -1.4210854715202e-14}, {1.1517511068998, 0.546323519313524, -0.105140010313422, 3.27118942773251, 9.65295620481433, 0.0, 2.69341127303544, 0.0, -0.518347241175148, 4.25171145123352, 0.0, 0.0, -9.91526600752596, 0.0, -1.95399252334028e-14, 6.71889089790562, 0.0, 0.0, -1.29305115618717, 1.82865048192213, 0.0, 0.0, 2.66453525910038e-14, 0.0, 0.0, 15.9443476574685, 0.0, 0.0, 0.0, 9.45383520059453, 0.0, 0.0, 0.0, -1.81939143264586, -2.94058061635794, 0.0, 0.0, 0.0, 0.0, -1.59872115546023e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.26168012376112, 0.19948914348242, 3.68560354207935, -0.814411017927956, 0.0, 1.0278657191034, -0.078679579246943, 6.00856531485323, -1.45362164025439, 0.32120803721981, 0.0, 0.0, 0.0, 3.0280322970267, -0.233098034907102, 0.0178428514239943, 6.99294104721298, -1.36261453366202, 0.329650402328149, -0.0728431359084665, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.80499652729883, -0.304328696433803, 0.0234272339744288, -0.00179327404131557, 5.40219154319687, -0.702817019232747, 0.136947913395217, -0.0331311120155244, 0.00732101061700707, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.19904086659517e-14, 0.0, 0.0, 0.0}, {1.15175110689979, 0.182107839771167, 2.20794021658197, 0.892142571199755, 0.0, 0.615765106730371, 0.323209352764241, 2.13307290077016, 3.91870514328394, -1.31949665727938, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, 1.07496769977313, 1.90844613931507, -0.19274394090962, 1.11713920350153, 6.61105135360477, -2.33689608954553, 0.591817792331158, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 5.83406921765278, -0.449106857771021, 0.0343775825476184, 0.0, 6.06294257990891, -1.55575179137407, 0.416806037297045, -0.0962371838080769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.84297022087776e-14, 0.0, 0.0, 0.0, -1.33226762955019e-14, 1.65423230669148e-14, 0.0, 0.0, 0.0}, {1.03015750727544, 0.162882203585596, 1.12848100903608, 1.99489143482414, -1.06581410364015e-14, 0.31471831698775, 0.578174466995661, 0.476969600708475, 4.00571020990214, 0.590096844352074, 0.0, 0.0, 1.4210854715202e-14, -10.576283741361, 1.8318660795302, 0.694437895660734, 0.0, 2.77627448210727, 4.8112068719424, -1.79915418525287, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 14.3499128917217, 4.41862723780437, -0.338230690505756, -1.06581410364015e-14, 0.0, 6.69662601613678, -2.34333096254029, 0.591780433634514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.892142571199785, 0.141060126129506, 0.407205508963998, 2.53385243517953, 0.0, 9.65295620481433, 0.69543580033025, 0.0, 2.0075502326238, 3.29336152870134, 0.0, 1.4210854715202e-14, 0.0, 0.0, -9.91526600752598, 1.73481017017153, 2.74225087082414e-14, 0.0, 5.00796559370722, 1.41646657250368, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 15.9443476574685, 2.44096975264614, 0.0, 0.0, 0.0, 7.04647271886991, -2.27776395106695, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, -1.4210854715202e-14}, {0.728431359084701, -7.94708263760857, 0.0, 2.5390822703312, 0.0, 0.0, 10.2207771580387, 0.0, 0.0, 5.0071377623777, -1.95399252334028e-14, 1.15463194561016e-14, -1.0325074129014e-14, 0.0, -1.59872115546023e-14, -8.49879943502225, -1.55431223447522e-14, 1.06581410364015e-14, 0.0, 6.93924068068619, 0.0, 1.09356967925578e-14, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11022302462516e-14, 17.9373911146521, 0.0, 0.0, 0.0, 0.0, 6.27677936394722, 0.0, 0.0, 0.0, -1.33226762955019e-14, -1.15463194561016e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.72843135908469, 2.1316282072803e-14, 2.32737334062816, -0.470200420431695, 0.0, 0.0, 0.0, 4.49691252107736, -0.917928424547684, 0.185449546754731, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0, 0.0, 7.0654086930623, -1.01980390271856, 0.20816659994661, -0.0420560041253566, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.92395326897747, -0.710100291678878, 0.10249414863811, -0.0209215304820308, 0.00422678745047178, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.664963811608056, 2.8421709430404e-14, 1.45686271816939, 0.515078753637706, 0.0, 0.0, 1.77635683940025e-14, 1.84729532019112, 2.58567482211397, -0.761811750275051, 2.1316282072803e-14, 1.95399252334028e-14, 0.0, 2.1316282072803e-14, 2.1316282072803e-14, 0.0, 1.71994831963706, 5.72533841794522, -1.54195152727694, 0.341686161713621, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 13.0453753561106, 9.33451074824443, -1.34732057331309, 0.275020660380932, -0.0555625639776363, 0.0, 0.0, 0.0, 1.06581410364015e-14, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.22044604925031e-14, -1.59872115546023e-14, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {0.59476171413319, 0.0, 0.814411017927931, 1.1517511068998, -1.06581410364015e-14, 1.59872115546023e-14, 2.30926389122033e-14, 0.590096844352057, 2.89087233497827, 0.340692571934625, 0.0, 1.06581410364015e-14, 0.0, -1.77635683940025e-14, -1.06581410364015e-14, 0.0, -10.576283741361, 3.43474889911912, 3.47218947830365, -1.03874215316937, 0.0, 0.0, 1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 1.86517468137026e-14, 1.06581410364015e-14, 0.0, 14.3499128917217, 8.28492607088318, -1.69115345252878, 0.341664592660038, 0.0, 0.0, 0.0, 0.0, -2.48689957516035e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.51507875363772, 0.0, 0.376160336345357, 1.46292038553769, 0.0, 1.49324996812084e-14, 1.14352971536391e-14, 9.65295620481433, 1.85449546754729, 1.90142316513449, 0.0, 0.0, -1.24344978758018e-14, -1.59872115546023e-14, 1.4210854715202e-14, -1.06581410364015e-14, 0.0, -9.91526600752594, 4.62616045379078, 0.817797356933106, 0.0, 0.0, 1.33226762955019e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 15.9443476574685, 6.50925267372302, -1.31506763029893, 0.0, 0.0, 0.0, 0.0, -1.95399252334028e-14, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.37667655053519e-14, 0.0, 0.0, 0.0}, {0.420560041253732, -1.28785870856518e-14, -7.94708263760857, 1.46593983227029, -1.59872115546023e-14, 0.0, 0.0, 0.0, 10.2207771580387, 2.89087233497829, 0.0, 1.06581410364015e-14, 0.0, -1.15463194561016e-14, 1.95399252334028e-14, -1.24344978758018e-14, -1.68753899743024e-14, 2.58681964737661e-14, -8.49879943502226, 4.00637247496574, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4210854715202e-14, 0.0, 0.0, -1.24344978758018e-14, 17.9373911146521, 3.6239002554188, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.04360964314765e-14, 0.0, 0.0, 0.0, -1.24344978758018e-14}, {6.54237885546504, 0.0, 1.50990331349021e-14, -6.9105066413987, -1.4210854715202e-14, 0.0, 3.90798504668055e-14, 0.0, 0.0, 12.2649325896465, 0.0, 1.02140518265514e-14, 2.48689957516035e-14, 1.06581410364015e-14, -4.2632564145606e-14, 0.0, 1.06581410364015e-14, 3.10862446895044e-14, 1.06581410364015e-14, -5.66586629001479, 0.0, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 1.24344978758018e-14, 0.0, 1.86517468137026e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 20.4998755596024, 0.0, 0.0, -1.4210854715202e-14, 0.0, 0.0, 0.0, 0.0, 2.30926389122033e-14, 0.0, 0.0, 0.0, -1.77635683940025e-14, 0.0, -1.7874590696465e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.64313007644523e-14, 1.86517468137026e-14}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[243]; for (unsigned int r = 0; r < 243; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[56][56] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 56; t++) { for (unsigned int u = 0; u < 56; u++) { for (unsigned int tu = 0; tu < 56; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 56; s++) { for (unsigned int t = 0; t < 56; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell void poisson3d_5_finite_element_0::evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 56; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 5) { return ; } // Helper variable to hold values of a single dof. double dof_values[243]; for (unsigned int r = 0; r < 243; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 56; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f double poisson3d_5_finite_element_0::evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = 0.8*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.8*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.8*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 5: { y[0] = 0.6*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; y[1] = 0.6*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; y[2] = 0.6*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 6: { y[0] = 0.4*vertex_coordinates[6] + 0.6*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[7] + 0.6*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[8] + 0.6*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 7: { y[0] = 0.2*vertex_coordinates[6] + 0.8*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[7] + 0.8*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[8] + 0.8*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 8: { y[0] = 0.8*vertex_coordinates[3] + 0.2*vertex_coordinates[9]; y[1] = 0.8*vertex_coordinates[4] + 0.2*vertex_coordinates[10]; y[2] = 0.8*vertex_coordinates[5] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 9: { y[0] = 0.6*vertex_coordinates[3] + 0.4*vertex_coordinates[9]; y[1] = 0.6*vertex_coordinates[4] + 0.4*vertex_coordinates[10]; y[2] = 0.6*vertex_coordinates[5] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 10: { y[0] = 0.4*vertex_coordinates[3] + 0.6*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[4] + 0.6*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[5] + 0.6*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 11: { y[0] = 0.2*vertex_coordinates[3] + 0.8*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[4] + 0.8*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[5] + 0.8*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 12: { y[0] = 0.8*vertex_coordinates[3] + 0.2*vertex_coordinates[6]; y[1] = 0.8*vertex_coordinates[4] + 0.2*vertex_coordinates[7]; y[2] = 0.8*vertex_coordinates[5] + 0.2*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 13: { y[0] = 0.6*vertex_coordinates[3] + 0.4*vertex_coordinates[6]; y[1] = 0.6*vertex_coordinates[4] + 0.4*vertex_coordinates[7]; y[2] = 0.6*vertex_coordinates[5] + 0.4*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 14: { y[0] = 0.4*vertex_coordinates[3] + 0.6*vertex_coordinates[6]; y[1] = 0.4*vertex_coordinates[4] + 0.6*vertex_coordinates[7]; y[2] = 0.4*vertex_coordinates[5] + 0.6*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 15: { y[0] = 0.2*vertex_coordinates[3] + 0.8*vertex_coordinates[6]; y[1] = 0.2*vertex_coordinates[4] + 0.8*vertex_coordinates[7]; y[2] = 0.2*vertex_coordinates[5] + 0.8*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 16: { y[0] = 0.8*vertex_coordinates[0] + 0.2*vertex_coordinates[9]; y[1] = 0.8*vertex_coordinates[1] + 0.2*vertex_coordinates[10]; y[2] = 0.8*vertex_coordinates[2] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 17: { y[0] = 0.6*vertex_coordinates[0] + 0.4*vertex_coordinates[9]; y[1] = 0.6*vertex_coordinates[1] + 0.4*vertex_coordinates[10]; y[2] = 0.6*vertex_coordinates[2] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 18: { y[0] = 0.4*vertex_coordinates[0] + 0.6*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[1] + 0.6*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[2] + 0.6*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 19: { y[0] = 0.2*vertex_coordinates[0] + 0.8*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.8*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.8*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 20: { y[0] = 0.8*vertex_coordinates[0] + 0.2*vertex_coordinates[6]; y[1] = 0.8*vertex_coordinates[1] + 0.2*vertex_coordinates[7]; y[2] = 0.8*vertex_coordinates[2] + 0.2*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 21: { y[0] = 0.6*vertex_coordinates[0] + 0.4*vertex_coordinates[6]; y[1] = 0.6*vertex_coordinates[1] + 0.4*vertex_coordinates[7]; y[2] = 0.6*vertex_coordinates[2] + 0.4*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 22: { y[0] = 0.4*vertex_coordinates[0] + 0.6*vertex_coordinates[6]; y[1] = 0.4*vertex_coordinates[1] + 0.6*vertex_coordinates[7]; y[2] = 0.4*vertex_coordinates[2] + 0.6*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 23: { y[0] = 0.2*vertex_coordinates[0] + 0.8*vertex_coordinates[6]; y[1] = 0.2*vertex_coordinates[1] + 0.8*vertex_coordinates[7]; y[2] = 0.2*vertex_coordinates[2] + 0.8*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 24: { y[0] = 0.8*vertex_coordinates[0] + 0.2*vertex_coordinates[3]; y[1] = 0.8*vertex_coordinates[1] + 0.2*vertex_coordinates[4]; y[2] = 0.8*vertex_coordinates[2] + 0.2*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 25: { y[0] = 0.6*vertex_coordinates[0] + 0.4*vertex_coordinates[3]; y[1] = 0.6*vertex_coordinates[1] + 0.4*vertex_coordinates[4]; y[2] = 0.6*vertex_coordinates[2] + 0.4*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 26: { y[0] = 0.4*vertex_coordinates[0] + 0.6*vertex_coordinates[3]; y[1] = 0.4*vertex_coordinates[1] + 0.6*vertex_coordinates[4]; y[2] = 0.4*vertex_coordinates[2] + 0.6*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 27: { y[0] = 0.2*vertex_coordinates[0] + 0.8*vertex_coordinates[3]; y[1] = 0.2*vertex_coordinates[1] + 0.8*vertex_coordinates[4]; y[2] = 0.2*vertex_coordinates[2] + 0.8*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 28: { y[0] = 0.6*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.6*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.6*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 29: { y[0] = 0.4*vertex_coordinates[3] + 0.4*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[4] + 0.4*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[5] + 0.4*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 30: { y[0] = 0.2*vertex_coordinates[3] + 0.6*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[4] + 0.6*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[5] + 0.6*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 31: { y[0] = 0.4*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 32: { y[0] = 0.2*vertex_coordinates[3] + 0.4*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[4] + 0.4*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[5] + 0.4*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 33: { y[0] = 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.6*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.6*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.6*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 34: { y[0] = 0.6*vertex_coordinates[0] + 0.2*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.6*vertex_coordinates[1] + 0.2*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.6*vertex_coordinates[2] + 0.2*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 35: { y[0] = 0.4*vertex_coordinates[0] + 0.4*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[1] + 0.4*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[2] + 0.4*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 36: { y[0] = 0.2*vertex_coordinates[0] + 0.6*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.6*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.6*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 37: { y[0] = 0.4*vertex_coordinates[0] + 0.2*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[1] + 0.2*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[2] + 0.2*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 38: { y[0] = 0.2*vertex_coordinates[0] + 0.4*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.4*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.4*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 39: { y[0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[6] + 0.6*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[7] + 0.6*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[8] + 0.6*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 40: { y[0] = 0.6*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[9]; y[1] = 0.6*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.2*vertex_coordinates[10]; y[2] = 0.6*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 41: { y[0] = 0.4*vertex_coordinates[0] + 0.4*vertex_coordinates[3] + 0.2*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[1] + 0.4*vertex_coordinates[4] + 0.2*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[2] + 0.4*vertex_coordinates[5] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 42: { y[0] = 0.2*vertex_coordinates[0] + 0.6*vertex_coordinates[3] + 0.2*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.6*vertex_coordinates[4] + 0.2*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.6*vertex_coordinates[5] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 43: { y[0] = 0.4*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.4*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.4*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 44: { y[0] = 0.2*vertex_coordinates[0] + 0.4*vertex_coordinates[3] + 0.4*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.4*vertex_coordinates[4] + 0.4*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.4*vertex_coordinates[5] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 45: { y[0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.6*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.6*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.6*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 46: { y[0] = 0.6*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[6]; y[1] = 0.6*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.2*vertex_coordinates[7]; y[2] = 0.6*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.2*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 47: { y[0] = 0.4*vertex_coordinates[0] + 0.4*vertex_coordinates[3] + 0.2*vertex_coordinates[6]; y[1] = 0.4*vertex_coordinates[1] + 0.4*vertex_coordinates[4] + 0.2*vertex_coordinates[7]; y[2] = 0.4*vertex_coordinates[2] + 0.4*vertex_coordinates[5] + 0.2*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 48: { y[0] = 0.2*vertex_coordinates[0] + 0.6*vertex_coordinates[3] + 0.2*vertex_coordinates[6]; y[1] = 0.2*vertex_coordinates[1] + 0.6*vertex_coordinates[4] + 0.2*vertex_coordinates[7]; y[2] = 0.2*vertex_coordinates[2] + 0.6*vertex_coordinates[5] + 0.2*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 49: { y[0] = 0.4*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.4*vertex_coordinates[6]; y[1] = 0.4*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.4*vertex_coordinates[7]; y[2] = 0.4*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.4*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 50: { y[0] = 0.2*vertex_coordinates[0] + 0.4*vertex_coordinates[3] + 0.4*vertex_coordinates[6]; y[1] = 0.2*vertex_coordinates[1] + 0.4*vertex_coordinates[4] + 0.4*vertex_coordinates[7]; y[2] = 0.2*vertex_coordinates[2] + 0.4*vertex_coordinates[5] + 0.4*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 51: { y[0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.6*vertex_coordinates[6]; y[1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.6*vertex_coordinates[7]; y[2] = 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.6*vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 52: { y[0] = 0.4*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 53: { y[0] = 0.2*vertex_coordinates[0] + 0.4*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.4*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.4*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 54: { y[0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.4*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.4*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.4*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 55: { y[0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f void poisson3d_5_finite_element_0::evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = 0.8*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.8*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.8*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); values[4] = vals[0]; y[0] = 0.6*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; y[1] = 0.6*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; y[2] = 0.6*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); values[5] = vals[0]; y[0] = 0.4*vertex_coordinates[6] + 0.6*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[7] + 0.6*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[8] + 0.6*vertex_coordinates[11]; f.evaluate(vals, y, c); values[6] = vals[0]; y[0] = 0.2*vertex_coordinates[6] + 0.8*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[7] + 0.8*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[8] + 0.8*vertex_coordinates[11]; f.evaluate(vals, y, c); values[7] = vals[0]; y[0] = 0.8*vertex_coordinates[3] + 0.2*vertex_coordinates[9]; y[1] = 0.8*vertex_coordinates[4] + 0.2*vertex_coordinates[10]; y[2] = 0.8*vertex_coordinates[5] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); values[8] = vals[0]; y[0] = 0.6*vertex_coordinates[3] + 0.4*vertex_coordinates[9]; y[1] = 0.6*vertex_coordinates[4] + 0.4*vertex_coordinates[10]; y[2] = 0.6*vertex_coordinates[5] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); values[9] = vals[0]; y[0] = 0.4*vertex_coordinates[3] + 0.6*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[4] + 0.6*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[5] + 0.6*vertex_coordinates[11]; f.evaluate(vals, y, c); values[10] = vals[0]; y[0] = 0.2*vertex_coordinates[3] + 0.8*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[4] + 0.8*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[5] + 0.8*vertex_coordinates[11]; f.evaluate(vals, y, c); values[11] = vals[0]; y[0] = 0.8*vertex_coordinates[3] + 0.2*vertex_coordinates[6]; y[1] = 0.8*vertex_coordinates[4] + 0.2*vertex_coordinates[7]; y[2] = 0.8*vertex_coordinates[5] + 0.2*vertex_coordinates[8]; f.evaluate(vals, y, c); values[12] = vals[0]; y[0] = 0.6*vertex_coordinates[3] + 0.4*vertex_coordinates[6]; y[1] = 0.6*vertex_coordinates[4] + 0.4*vertex_coordinates[7]; y[2] = 0.6*vertex_coordinates[5] + 0.4*vertex_coordinates[8]; f.evaluate(vals, y, c); values[13] = vals[0]; y[0] = 0.4*vertex_coordinates[3] + 0.6*vertex_coordinates[6]; y[1] = 0.4*vertex_coordinates[4] + 0.6*vertex_coordinates[7]; y[2] = 0.4*vertex_coordinates[5] + 0.6*vertex_coordinates[8]; f.evaluate(vals, y, c); values[14] = vals[0]; y[0] = 0.2*vertex_coordinates[3] + 0.8*vertex_coordinates[6]; y[1] = 0.2*vertex_coordinates[4] + 0.8*vertex_coordinates[7]; y[2] = 0.2*vertex_coordinates[5] + 0.8*vertex_coordinates[8]; f.evaluate(vals, y, c); values[15] = vals[0]; y[0] = 0.8*vertex_coordinates[0] + 0.2*vertex_coordinates[9]; y[1] = 0.8*vertex_coordinates[1] + 0.2*vertex_coordinates[10]; y[2] = 0.8*vertex_coordinates[2] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); values[16] = vals[0]; y[0] = 0.6*vertex_coordinates[0] + 0.4*vertex_coordinates[9]; y[1] = 0.6*vertex_coordinates[1] + 0.4*vertex_coordinates[10]; y[2] = 0.6*vertex_coordinates[2] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); values[17] = vals[0]; y[0] = 0.4*vertex_coordinates[0] + 0.6*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[1] + 0.6*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[2] + 0.6*vertex_coordinates[11]; f.evaluate(vals, y, c); values[18] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.8*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.8*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.8*vertex_coordinates[11]; f.evaluate(vals, y, c); values[19] = vals[0]; y[0] = 0.8*vertex_coordinates[0] + 0.2*vertex_coordinates[6]; y[1] = 0.8*vertex_coordinates[1] + 0.2*vertex_coordinates[7]; y[2] = 0.8*vertex_coordinates[2] + 0.2*vertex_coordinates[8]; f.evaluate(vals, y, c); values[20] = vals[0]; y[0] = 0.6*vertex_coordinates[0] + 0.4*vertex_coordinates[6]; y[1] = 0.6*vertex_coordinates[1] + 0.4*vertex_coordinates[7]; y[2] = 0.6*vertex_coordinates[2] + 0.4*vertex_coordinates[8]; f.evaluate(vals, y, c); values[21] = vals[0]; y[0] = 0.4*vertex_coordinates[0] + 0.6*vertex_coordinates[6]; y[1] = 0.4*vertex_coordinates[1] + 0.6*vertex_coordinates[7]; y[2] = 0.4*vertex_coordinates[2] + 0.6*vertex_coordinates[8]; f.evaluate(vals, y, c); values[22] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.8*vertex_coordinates[6]; y[1] = 0.2*vertex_coordinates[1] + 0.8*vertex_coordinates[7]; y[2] = 0.2*vertex_coordinates[2] + 0.8*vertex_coordinates[8]; f.evaluate(vals, y, c); values[23] = vals[0]; y[0] = 0.8*vertex_coordinates[0] + 0.2*vertex_coordinates[3]; y[1] = 0.8*vertex_coordinates[1] + 0.2*vertex_coordinates[4]; y[2] = 0.8*vertex_coordinates[2] + 0.2*vertex_coordinates[5]; f.evaluate(vals, y, c); values[24] = vals[0]; y[0] = 0.6*vertex_coordinates[0] + 0.4*vertex_coordinates[3]; y[1] = 0.6*vertex_coordinates[1] + 0.4*vertex_coordinates[4]; y[2] = 0.6*vertex_coordinates[2] + 0.4*vertex_coordinates[5]; f.evaluate(vals, y, c); values[25] = vals[0]; y[0] = 0.4*vertex_coordinates[0] + 0.6*vertex_coordinates[3]; y[1] = 0.4*vertex_coordinates[1] + 0.6*vertex_coordinates[4]; y[2] = 0.4*vertex_coordinates[2] + 0.6*vertex_coordinates[5]; f.evaluate(vals, y, c); values[26] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.8*vertex_coordinates[3]; y[1] = 0.2*vertex_coordinates[1] + 0.8*vertex_coordinates[4]; y[2] = 0.2*vertex_coordinates[2] + 0.8*vertex_coordinates[5]; f.evaluate(vals, y, c); values[27] = vals[0]; y[0] = 0.6*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.6*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.6*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); values[28] = vals[0]; y[0] = 0.4*vertex_coordinates[3] + 0.4*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[4] + 0.4*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[5] + 0.4*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); values[29] = vals[0]; y[0] = 0.2*vertex_coordinates[3] + 0.6*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[4] + 0.6*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[5] + 0.6*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); values[30] = vals[0]; y[0] = 0.4*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); values[31] = vals[0]; y[0] = 0.2*vertex_coordinates[3] + 0.4*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[4] + 0.4*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[5] + 0.4*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); values[32] = vals[0]; y[0] = 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.6*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.6*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.6*vertex_coordinates[11]; f.evaluate(vals, y, c); values[33] = vals[0]; y[0] = 0.6*vertex_coordinates[0] + 0.2*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.6*vertex_coordinates[1] + 0.2*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.6*vertex_coordinates[2] + 0.2*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); values[34] = vals[0]; y[0] = 0.4*vertex_coordinates[0] + 0.4*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[1] + 0.4*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[2] + 0.4*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); values[35] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.6*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.6*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.6*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); values[36] = vals[0]; y[0] = 0.4*vertex_coordinates[0] + 0.2*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[1] + 0.2*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[2] + 0.2*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); values[37] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.4*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.4*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.4*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); values[38] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[6] + 0.6*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[7] + 0.6*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[8] + 0.6*vertex_coordinates[11]; f.evaluate(vals, y, c); values[39] = vals[0]; y[0] = 0.6*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[9]; y[1] = 0.6*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.2*vertex_coordinates[10]; y[2] = 0.6*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); values[40] = vals[0]; y[0] = 0.4*vertex_coordinates[0] + 0.4*vertex_coordinates[3] + 0.2*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[1] + 0.4*vertex_coordinates[4] + 0.2*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[2] + 0.4*vertex_coordinates[5] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); values[41] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.6*vertex_coordinates[3] + 0.2*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.6*vertex_coordinates[4] + 0.2*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.6*vertex_coordinates[5] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); values[42] = vals[0]; y[0] = 0.4*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.4*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.4*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); values[43] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.4*vertex_coordinates[3] + 0.4*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.4*vertex_coordinates[4] + 0.4*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.4*vertex_coordinates[5] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); values[44] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.6*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.6*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.6*vertex_coordinates[11]; f.evaluate(vals, y, c); values[45] = vals[0]; y[0] = 0.6*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[6]; y[1] = 0.6*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.2*vertex_coordinates[7]; y[2] = 0.6*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.2*vertex_coordinates[8]; f.evaluate(vals, y, c); values[46] = vals[0]; y[0] = 0.4*vertex_coordinates[0] + 0.4*vertex_coordinates[3] + 0.2*vertex_coordinates[6]; y[1] = 0.4*vertex_coordinates[1] + 0.4*vertex_coordinates[4] + 0.2*vertex_coordinates[7]; y[2] = 0.4*vertex_coordinates[2] + 0.4*vertex_coordinates[5] + 0.2*vertex_coordinates[8]; f.evaluate(vals, y, c); values[47] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.6*vertex_coordinates[3] + 0.2*vertex_coordinates[6]; y[1] = 0.2*vertex_coordinates[1] + 0.6*vertex_coordinates[4] + 0.2*vertex_coordinates[7]; y[2] = 0.2*vertex_coordinates[2] + 0.6*vertex_coordinates[5] + 0.2*vertex_coordinates[8]; f.evaluate(vals, y, c); values[48] = vals[0]; y[0] = 0.4*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.4*vertex_coordinates[6]; y[1] = 0.4*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.4*vertex_coordinates[7]; y[2] = 0.4*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.4*vertex_coordinates[8]; f.evaluate(vals, y, c); values[49] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.4*vertex_coordinates[3] + 0.4*vertex_coordinates[6]; y[1] = 0.2*vertex_coordinates[1] + 0.4*vertex_coordinates[4] + 0.4*vertex_coordinates[7]; y[2] = 0.2*vertex_coordinates[2] + 0.4*vertex_coordinates[5] + 0.4*vertex_coordinates[8]; f.evaluate(vals, y, c); values[50] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.6*vertex_coordinates[6]; y[1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.6*vertex_coordinates[7]; y[2] = 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.6*vertex_coordinates[8]; f.evaluate(vals, y, c); values[51] = vals[0]; y[0] = 0.4*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.4*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.4*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); values[52] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.4*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.4*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.4*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); values[53] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.4*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.4*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.4*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; f.evaluate(vals, y, c); values[54] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; y[1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; y[2] = 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; f.evaluate(vals, y, c); values[55] = vals[0]; } /// Interpolate vertex values from dof values void poisson3d_5_finite_element_0::interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; vertex_values[3] = dof_values[3]; } /// Map coordinate xhat from reference cell to coordinate x in cell void poisson3d_5_finite_element_0::map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell void poisson3d_5_finite_element_0::map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) std::size_t poisson3d_5_finite_element_0::num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) ufc::finite_element* poisson3d_5_finite_element_0::create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance ufc::finite_element* poisson3d_5_finite_element_0::create() const { return new poisson3d_5_finite_element_0(); } /// Constructor poisson3d_5_dofmap_0::poisson3d_5_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor poisson3d_5_dofmap_0::~poisson3d_5_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap const char* poisson3d_5_dofmap_0::signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 5, None)"; } /// Return true iff mesh entities of topological dimension d are needed bool poisson3d_5_dofmap_0::needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return true; break; } case 2: { return true; break; } case 3: { return true; break; } } return false; } /// Return the topological dimension of the associated cell shape std::size_t poisson3d_5_dofmap_0::topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape std::size_t poisson3d_5_dofmap_0::geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space std::size_t poisson3d_5_dofmap_0::global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0] + 4*num_global_entities[1] + 6*num_global_entities[2] + 4*num_global_entities[3]; } /// Return the dimension of the local finite element function space for a cell std::size_t poisson3d_5_dofmap_0::local_dimension() const { return 56; } /// Return the number of dofs on each cell facet std::size_t poisson3d_5_dofmap_0::num_facet_dofs() const { return 21; } /// Return the number of dofs associated with each cell entity of dimension d std::size_t poisson3d_5_dofmap_0::num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 4; break; } case 2: { return 6; break; } case 3: { return 4; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell void poisson3d_5_dofmap_0::tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; dofs[3] = offset + c.entity_indices[0][3]; offset += num_global_entities[0]; dofs[4] = offset + 4*c.entity_indices[1][0]; dofs[5] = offset + 4*c.entity_indices[1][0] + 1; dofs[6] = offset + 4*c.entity_indices[1][0] + 2; dofs[7] = offset + 4*c.entity_indices[1][0] + 3; dofs[8] = offset + 4*c.entity_indices[1][1]; dofs[9] = offset + 4*c.entity_indices[1][1] + 1; dofs[10] = offset + 4*c.entity_indices[1][1] + 2; dofs[11] = offset + 4*c.entity_indices[1][1] + 3; dofs[12] = offset + 4*c.entity_indices[1][2]; dofs[13] = offset + 4*c.entity_indices[1][2] + 1; dofs[14] = offset + 4*c.entity_indices[1][2] + 2; dofs[15] = offset + 4*c.entity_indices[1][2] + 3; dofs[16] = offset + 4*c.entity_indices[1][3]; dofs[17] = offset + 4*c.entity_indices[1][3] + 1; dofs[18] = offset + 4*c.entity_indices[1][3] + 2; dofs[19] = offset + 4*c.entity_indices[1][3] + 3; dofs[20] = offset + 4*c.entity_indices[1][4]; dofs[21] = offset + 4*c.entity_indices[1][4] + 1; dofs[22] = offset + 4*c.entity_indices[1][4] + 2; dofs[23] = offset + 4*c.entity_indices[1][4] + 3; dofs[24] = offset + 4*c.entity_indices[1][5]; dofs[25] = offset + 4*c.entity_indices[1][5] + 1; dofs[26] = offset + 4*c.entity_indices[1][5] + 2; dofs[27] = offset + 4*c.entity_indices[1][5] + 3; offset += 4*num_global_entities[1]; dofs[28] = offset + 6*c.entity_indices[2][0]; dofs[29] = offset + 6*c.entity_indices[2][0] + 1; dofs[30] = offset + 6*c.entity_indices[2][0] + 2; dofs[31] = offset + 6*c.entity_indices[2][0] + 3; dofs[32] = offset + 6*c.entity_indices[2][0] + 4; dofs[33] = offset + 6*c.entity_indices[2][0] + 5; dofs[34] = offset + 6*c.entity_indices[2][1]; dofs[35] = offset + 6*c.entity_indices[2][1] + 1; dofs[36] = offset + 6*c.entity_indices[2][1] + 2; dofs[37] = offset + 6*c.entity_indices[2][1] + 3; dofs[38] = offset + 6*c.entity_indices[2][1] + 4; dofs[39] = offset + 6*c.entity_indices[2][1] + 5; dofs[40] = offset + 6*c.entity_indices[2][2]; dofs[41] = offset + 6*c.entity_indices[2][2] + 1; dofs[42] = offset + 6*c.entity_indices[2][2] + 2; dofs[43] = offset + 6*c.entity_indices[2][2] + 3; dofs[44] = offset + 6*c.entity_indices[2][2] + 4; dofs[45] = offset + 6*c.entity_indices[2][2] + 5; dofs[46] = offset + 6*c.entity_indices[2][3]; dofs[47] = offset + 6*c.entity_indices[2][3] + 1; dofs[48] = offset + 6*c.entity_indices[2][3] + 2; dofs[49] = offset + 6*c.entity_indices[2][3] + 3; dofs[50] = offset + 6*c.entity_indices[2][3] + 4; dofs[51] = offset + 6*c.entity_indices[2][3] + 5; offset += 6*num_global_entities[2]; dofs[52] = offset + 4*c.entity_indices[3][0]; dofs[53] = offset + 4*c.entity_indices[3][0] + 1; dofs[54] = offset + 4*c.entity_indices[3][0] + 2; dofs[55] = offset + 4*c.entity_indices[3][0] + 3; offset += 4*num_global_entities[3]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs void poisson3d_5_dofmap_0::tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; dofs[3] = 4; dofs[4] = 5; dofs[5] = 6; dofs[6] = 7; dofs[7] = 8; dofs[8] = 9; dofs[9] = 10; dofs[10] = 11; dofs[11] = 12; dofs[12] = 13; dofs[13] = 14; dofs[14] = 15; dofs[15] = 28; dofs[16] = 29; dofs[17] = 30; dofs[18] = 31; dofs[19] = 32; dofs[20] = 33; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; dofs[3] = 4; dofs[4] = 5; dofs[5] = 6; dofs[6] = 7; dofs[7] = 16; dofs[8] = 17; dofs[9] = 18; dofs[10] = 19; dofs[11] = 20; dofs[12] = 21; dofs[13] = 22; dofs[14] = 23; dofs[15] = 34; dofs[16] = 35; dofs[17] = 36; dofs[18] = 37; dofs[19] = 38; dofs[20] = 39; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; dofs[3] = 8; dofs[4] = 9; dofs[5] = 10; dofs[6] = 11; dofs[7] = 16; dofs[8] = 17; dofs[9] = 18; dofs[10] = 19; dofs[11] = 24; dofs[12] = 25; dofs[13] = 26; dofs[14] = 27; dofs[15] = 40; dofs[16] = 41; dofs[17] = 42; dofs[18] = 43; dofs[19] = 44; dofs[20] = 45; break; } case 3: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 2; dofs[3] = 12; dofs[4] = 13; dofs[5] = 14; dofs[6] = 15; dofs[7] = 20; dofs[8] = 21; dofs[9] = 22; dofs[10] = 23; dofs[11] = 24; dofs[12] = 25; dofs[13] = 26; dofs[14] = 27; dofs[15] = 46; dofs[16] = 47; dofs[17] = 48; dofs[18] = 49; dofs[19] = 50; dofs[20] = 51; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) void poisson3d_5_dofmap_0::tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } case 3: { dofs[0] = 3; break; } } break; } case 1: { if (i > 5) { throw std::runtime_error("i is larger than number of entities (5)"); } switch (i) { case 0: { dofs[0] = 4; dofs[1] = 5; dofs[2] = 6; dofs[3] = 7; break; } case 1: { dofs[0] = 8; dofs[1] = 9; dofs[2] = 10; dofs[3] = 11; break; } case 2: { dofs[0] = 12; dofs[1] = 13; dofs[2] = 14; dofs[3] = 15; break; } case 3: { dofs[0] = 16; dofs[1] = 17; dofs[2] = 18; dofs[3] = 19; break; } case 4: { dofs[0] = 20; dofs[1] = 21; dofs[2] = 22; dofs[3] = 23; break; } case 5: { dofs[0] = 24; dofs[1] = 25; dofs[2] = 26; dofs[3] = 27; break; } } break; } case 2: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 28; dofs[1] = 29; dofs[2] = 30; dofs[3] = 31; dofs[4] = 32; dofs[5] = 33; break; } case 1: { dofs[0] = 34; dofs[1] = 35; dofs[2] = 36; dofs[3] = 37; dofs[4] = 38; dofs[5] = 39; break; } case 2: { dofs[0] = 40; dofs[1] = 41; dofs[2] = 42; dofs[3] = 43; dofs[4] = 44; dofs[5] = 45; break; } case 3: { dofs[0] = 46; dofs[1] = 47; dofs[2] = 48; dofs[3] = 49; dofs[4] = 50; dofs[5] = 51; break; } } break; } case 3: { if (i > 0) { throw std::runtime_error("i is larger than number of entities (0)"); } dofs[0] = 52; dofs[1] = 53; dofs[2] = 54; dofs[3] = 55; break; } } } /// Tabulate the coordinates of all dofs on a cell void poisson3d_5_dofmap_0::tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[0][2] = vertex_coordinates[2]; dof_coordinates[1][0] = vertex_coordinates[3]; dof_coordinates[1][1] = vertex_coordinates[4]; dof_coordinates[1][2] = vertex_coordinates[5]; dof_coordinates[2][0] = vertex_coordinates[6]; dof_coordinates[2][1] = vertex_coordinates[7]; dof_coordinates[2][2] = vertex_coordinates[8]; dof_coordinates[3][0] = vertex_coordinates[9]; dof_coordinates[3][1] = vertex_coordinates[10]; dof_coordinates[3][2] = vertex_coordinates[11]; dof_coordinates[4][0] = 0.8*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; dof_coordinates[4][1] = 0.8*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; dof_coordinates[4][2] = 0.8*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; dof_coordinates[5][0] = 0.6*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; dof_coordinates[5][1] = 0.6*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; dof_coordinates[5][2] = 0.6*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; dof_coordinates[6][0] = 0.4*vertex_coordinates[6] + 0.6*vertex_coordinates[9]; dof_coordinates[6][1] = 0.4*vertex_coordinates[7] + 0.6*vertex_coordinates[10]; dof_coordinates[6][2] = 0.4*vertex_coordinates[8] + 0.6*vertex_coordinates[11]; dof_coordinates[7][0] = 0.2*vertex_coordinates[6] + 0.8*vertex_coordinates[9]; dof_coordinates[7][1] = 0.2*vertex_coordinates[7] + 0.8*vertex_coordinates[10]; dof_coordinates[7][2] = 0.2*vertex_coordinates[8] + 0.8*vertex_coordinates[11]; dof_coordinates[8][0] = 0.8*vertex_coordinates[3] + 0.2*vertex_coordinates[9]; dof_coordinates[8][1] = 0.8*vertex_coordinates[4] + 0.2*vertex_coordinates[10]; dof_coordinates[8][2] = 0.8*vertex_coordinates[5] + 0.2*vertex_coordinates[11]; dof_coordinates[9][0] = 0.6*vertex_coordinates[3] + 0.4*vertex_coordinates[9]; dof_coordinates[9][1] = 0.6*vertex_coordinates[4] + 0.4*vertex_coordinates[10]; dof_coordinates[9][2] = 0.6*vertex_coordinates[5] + 0.4*vertex_coordinates[11]; dof_coordinates[10][0] = 0.4*vertex_coordinates[3] + 0.6*vertex_coordinates[9]; dof_coordinates[10][1] = 0.4*vertex_coordinates[4] + 0.6*vertex_coordinates[10]; dof_coordinates[10][2] = 0.4*vertex_coordinates[5] + 0.6*vertex_coordinates[11]; dof_coordinates[11][0] = 0.2*vertex_coordinates[3] + 0.8*vertex_coordinates[9]; dof_coordinates[11][1] = 0.2*vertex_coordinates[4] + 0.8*vertex_coordinates[10]; dof_coordinates[11][2] = 0.2*vertex_coordinates[5] + 0.8*vertex_coordinates[11]; dof_coordinates[12][0] = 0.8*vertex_coordinates[3] + 0.2*vertex_coordinates[6]; dof_coordinates[12][1] = 0.8*vertex_coordinates[4] + 0.2*vertex_coordinates[7]; dof_coordinates[12][2] = 0.8*vertex_coordinates[5] + 0.2*vertex_coordinates[8]; dof_coordinates[13][0] = 0.6*vertex_coordinates[3] + 0.4*vertex_coordinates[6]; dof_coordinates[13][1] = 0.6*vertex_coordinates[4] + 0.4*vertex_coordinates[7]; dof_coordinates[13][2] = 0.6*vertex_coordinates[5] + 0.4*vertex_coordinates[8]; dof_coordinates[14][0] = 0.4*vertex_coordinates[3] + 0.6*vertex_coordinates[6]; dof_coordinates[14][1] = 0.4*vertex_coordinates[4] + 0.6*vertex_coordinates[7]; dof_coordinates[14][2] = 0.4*vertex_coordinates[5] + 0.6*vertex_coordinates[8]; dof_coordinates[15][0] = 0.2*vertex_coordinates[3] + 0.8*vertex_coordinates[6]; dof_coordinates[15][1] = 0.2*vertex_coordinates[4] + 0.8*vertex_coordinates[7]; dof_coordinates[15][2] = 0.2*vertex_coordinates[5] + 0.8*vertex_coordinates[8]; dof_coordinates[16][0] = 0.8*vertex_coordinates[0] + 0.2*vertex_coordinates[9]; dof_coordinates[16][1] = 0.8*vertex_coordinates[1] + 0.2*vertex_coordinates[10]; dof_coordinates[16][2] = 0.8*vertex_coordinates[2] + 0.2*vertex_coordinates[11]; dof_coordinates[17][0] = 0.6*vertex_coordinates[0] + 0.4*vertex_coordinates[9]; dof_coordinates[17][1] = 0.6*vertex_coordinates[1] + 0.4*vertex_coordinates[10]; dof_coordinates[17][2] = 0.6*vertex_coordinates[2] + 0.4*vertex_coordinates[11]; dof_coordinates[18][0] = 0.4*vertex_coordinates[0] + 0.6*vertex_coordinates[9]; dof_coordinates[18][1] = 0.4*vertex_coordinates[1] + 0.6*vertex_coordinates[10]; dof_coordinates[18][2] = 0.4*vertex_coordinates[2] + 0.6*vertex_coordinates[11]; dof_coordinates[19][0] = 0.2*vertex_coordinates[0] + 0.8*vertex_coordinates[9]; dof_coordinates[19][1] = 0.2*vertex_coordinates[1] + 0.8*vertex_coordinates[10]; dof_coordinates[19][2] = 0.2*vertex_coordinates[2] + 0.8*vertex_coordinates[11]; dof_coordinates[20][0] = 0.8*vertex_coordinates[0] + 0.2*vertex_coordinates[6]; dof_coordinates[20][1] = 0.8*vertex_coordinates[1] + 0.2*vertex_coordinates[7]; dof_coordinates[20][2] = 0.8*vertex_coordinates[2] + 0.2*vertex_coordinates[8]; dof_coordinates[21][0] = 0.6*vertex_coordinates[0] + 0.4*vertex_coordinates[6]; dof_coordinates[21][1] = 0.6*vertex_coordinates[1] + 0.4*vertex_coordinates[7]; dof_coordinates[21][2] = 0.6*vertex_coordinates[2] + 0.4*vertex_coordinates[8]; dof_coordinates[22][0] = 0.4*vertex_coordinates[0] + 0.6*vertex_coordinates[6]; dof_coordinates[22][1] = 0.4*vertex_coordinates[1] + 0.6*vertex_coordinates[7]; dof_coordinates[22][2] = 0.4*vertex_coordinates[2] + 0.6*vertex_coordinates[8]; dof_coordinates[23][0] = 0.2*vertex_coordinates[0] + 0.8*vertex_coordinates[6]; dof_coordinates[23][1] = 0.2*vertex_coordinates[1] + 0.8*vertex_coordinates[7]; dof_coordinates[23][2] = 0.2*vertex_coordinates[2] + 0.8*vertex_coordinates[8]; dof_coordinates[24][0] = 0.8*vertex_coordinates[0] + 0.2*vertex_coordinates[3]; dof_coordinates[24][1] = 0.8*vertex_coordinates[1] + 0.2*vertex_coordinates[4]; dof_coordinates[24][2] = 0.8*vertex_coordinates[2] + 0.2*vertex_coordinates[5]; dof_coordinates[25][0] = 0.6*vertex_coordinates[0] + 0.4*vertex_coordinates[3]; dof_coordinates[25][1] = 0.6*vertex_coordinates[1] + 0.4*vertex_coordinates[4]; dof_coordinates[25][2] = 0.6*vertex_coordinates[2] + 0.4*vertex_coordinates[5]; dof_coordinates[26][0] = 0.4*vertex_coordinates[0] + 0.6*vertex_coordinates[3]; dof_coordinates[26][1] = 0.4*vertex_coordinates[1] + 0.6*vertex_coordinates[4]; dof_coordinates[26][2] = 0.4*vertex_coordinates[2] + 0.6*vertex_coordinates[5]; dof_coordinates[27][0] = 0.2*vertex_coordinates[0] + 0.8*vertex_coordinates[3]; dof_coordinates[27][1] = 0.2*vertex_coordinates[1] + 0.8*vertex_coordinates[4]; dof_coordinates[27][2] = 0.2*vertex_coordinates[2] + 0.8*vertex_coordinates[5]; dof_coordinates[28][0] = 0.6*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; dof_coordinates[28][1] = 0.6*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; dof_coordinates[28][2] = 0.6*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; dof_coordinates[29][0] = 0.4*vertex_coordinates[3] + 0.4*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; dof_coordinates[29][1] = 0.4*vertex_coordinates[4] + 0.4*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; dof_coordinates[29][2] = 0.4*vertex_coordinates[5] + 0.4*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; dof_coordinates[30][0] = 0.2*vertex_coordinates[3] + 0.6*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; dof_coordinates[30][1] = 0.2*vertex_coordinates[4] + 0.6*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; dof_coordinates[30][2] = 0.2*vertex_coordinates[5] + 0.6*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; dof_coordinates[31][0] = 0.4*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; dof_coordinates[31][1] = 0.4*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; dof_coordinates[31][2] = 0.4*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; dof_coordinates[32][0] = 0.2*vertex_coordinates[3] + 0.4*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; dof_coordinates[32][1] = 0.2*vertex_coordinates[4] + 0.4*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; dof_coordinates[32][2] = 0.2*vertex_coordinates[5] + 0.4*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; dof_coordinates[33][0] = 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.6*vertex_coordinates[9]; dof_coordinates[33][1] = 0.2*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.6*vertex_coordinates[10]; dof_coordinates[33][2] = 0.2*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.6*vertex_coordinates[11]; dof_coordinates[34][0] = 0.6*vertex_coordinates[0] + 0.2*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; dof_coordinates[34][1] = 0.6*vertex_coordinates[1] + 0.2*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; dof_coordinates[34][2] = 0.6*vertex_coordinates[2] + 0.2*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; dof_coordinates[35][0] = 0.4*vertex_coordinates[0] + 0.4*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; dof_coordinates[35][1] = 0.4*vertex_coordinates[1] + 0.4*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; dof_coordinates[35][2] = 0.4*vertex_coordinates[2] + 0.4*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; dof_coordinates[36][0] = 0.2*vertex_coordinates[0] + 0.6*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; dof_coordinates[36][1] = 0.2*vertex_coordinates[1] + 0.6*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; dof_coordinates[36][2] = 0.2*vertex_coordinates[2] + 0.6*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; dof_coordinates[37][0] = 0.4*vertex_coordinates[0] + 0.2*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; dof_coordinates[37][1] = 0.4*vertex_coordinates[1] + 0.2*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; dof_coordinates[37][2] = 0.4*vertex_coordinates[2] + 0.2*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; dof_coordinates[38][0] = 0.2*vertex_coordinates[0] + 0.4*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; dof_coordinates[38][1] = 0.2*vertex_coordinates[1] + 0.4*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; dof_coordinates[38][2] = 0.2*vertex_coordinates[2] + 0.4*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; dof_coordinates[39][0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[6] + 0.6*vertex_coordinates[9]; dof_coordinates[39][1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[7] + 0.6*vertex_coordinates[10]; dof_coordinates[39][2] = 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[8] + 0.6*vertex_coordinates[11]; dof_coordinates[40][0] = 0.6*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[9]; dof_coordinates[40][1] = 0.6*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.2*vertex_coordinates[10]; dof_coordinates[40][2] = 0.6*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.2*vertex_coordinates[11]; dof_coordinates[41][0] = 0.4*vertex_coordinates[0] + 0.4*vertex_coordinates[3] + 0.2*vertex_coordinates[9]; dof_coordinates[41][1] = 0.4*vertex_coordinates[1] + 0.4*vertex_coordinates[4] + 0.2*vertex_coordinates[10]; dof_coordinates[41][2] = 0.4*vertex_coordinates[2] + 0.4*vertex_coordinates[5] + 0.2*vertex_coordinates[11]; dof_coordinates[42][0] = 0.2*vertex_coordinates[0] + 0.6*vertex_coordinates[3] + 0.2*vertex_coordinates[9]; dof_coordinates[42][1] = 0.2*vertex_coordinates[1] + 0.6*vertex_coordinates[4] + 0.2*vertex_coordinates[10]; dof_coordinates[42][2] = 0.2*vertex_coordinates[2] + 0.6*vertex_coordinates[5] + 0.2*vertex_coordinates[11]; dof_coordinates[43][0] = 0.4*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.4*vertex_coordinates[9]; dof_coordinates[43][1] = 0.4*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.4*vertex_coordinates[10]; dof_coordinates[43][2] = 0.4*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.4*vertex_coordinates[11]; dof_coordinates[44][0] = 0.2*vertex_coordinates[0] + 0.4*vertex_coordinates[3] + 0.4*vertex_coordinates[9]; dof_coordinates[44][1] = 0.2*vertex_coordinates[1] + 0.4*vertex_coordinates[4] + 0.4*vertex_coordinates[10]; dof_coordinates[44][2] = 0.2*vertex_coordinates[2] + 0.4*vertex_coordinates[5] + 0.4*vertex_coordinates[11]; dof_coordinates[45][0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.6*vertex_coordinates[9]; dof_coordinates[45][1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.6*vertex_coordinates[10]; dof_coordinates[45][2] = 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.6*vertex_coordinates[11]; dof_coordinates[46][0] = 0.6*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[6]; dof_coordinates[46][1] = 0.6*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.2*vertex_coordinates[7]; dof_coordinates[46][2] = 0.6*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.2*vertex_coordinates[8]; dof_coordinates[47][0] = 0.4*vertex_coordinates[0] + 0.4*vertex_coordinates[3] + 0.2*vertex_coordinates[6]; dof_coordinates[47][1] = 0.4*vertex_coordinates[1] + 0.4*vertex_coordinates[4] + 0.2*vertex_coordinates[7]; dof_coordinates[47][2] = 0.4*vertex_coordinates[2] + 0.4*vertex_coordinates[5] + 0.2*vertex_coordinates[8]; dof_coordinates[48][0] = 0.2*vertex_coordinates[0] + 0.6*vertex_coordinates[3] + 0.2*vertex_coordinates[6]; dof_coordinates[48][1] = 0.2*vertex_coordinates[1] + 0.6*vertex_coordinates[4] + 0.2*vertex_coordinates[7]; dof_coordinates[48][2] = 0.2*vertex_coordinates[2] + 0.6*vertex_coordinates[5] + 0.2*vertex_coordinates[8]; dof_coordinates[49][0] = 0.4*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.4*vertex_coordinates[6]; dof_coordinates[49][1] = 0.4*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.4*vertex_coordinates[7]; dof_coordinates[49][2] = 0.4*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.4*vertex_coordinates[8]; dof_coordinates[50][0] = 0.2*vertex_coordinates[0] + 0.4*vertex_coordinates[3] + 0.4*vertex_coordinates[6]; dof_coordinates[50][1] = 0.2*vertex_coordinates[1] + 0.4*vertex_coordinates[4] + 0.4*vertex_coordinates[7]; dof_coordinates[50][2] = 0.2*vertex_coordinates[2] + 0.4*vertex_coordinates[5] + 0.4*vertex_coordinates[8]; dof_coordinates[51][0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.6*vertex_coordinates[6]; dof_coordinates[51][1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.6*vertex_coordinates[7]; dof_coordinates[51][2] = 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.6*vertex_coordinates[8]; dof_coordinates[52][0] = 0.4*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; dof_coordinates[52][1] = 0.4*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; dof_coordinates[52][2] = 0.4*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; dof_coordinates[53][0] = 0.2*vertex_coordinates[0] + 0.4*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; dof_coordinates[53][1] = 0.2*vertex_coordinates[1] + 0.4*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; dof_coordinates[53][2] = 0.2*vertex_coordinates[2] + 0.4*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; dof_coordinates[54][0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.4*vertex_coordinates[6] + 0.2*vertex_coordinates[9]; dof_coordinates[54][1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.4*vertex_coordinates[7] + 0.2*vertex_coordinates[10]; dof_coordinates[54][2] = 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.4*vertex_coordinates[8] + 0.2*vertex_coordinates[11]; dof_coordinates[55][0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[6] + 0.4*vertex_coordinates[9]; dof_coordinates[55][1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[4] + 0.2*vertex_coordinates[7] + 0.4*vertex_coordinates[10]; dof_coordinates[55][2] = 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[5] + 0.2*vertex_coordinates[8] + 0.4*vertex_coordinates[11]; } /// Return the number of sub dofmaps (for a mixed element) std::size_t poisson3d_5_dofmap_0::num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) ufc::dofmap* poisson3d_5_dofmap_0::create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance ufc::dofmap* poisson3d_5_dofmap_0::create() const { return new poisson3d_5_dofmap_0(); } /// Constructor poisson3d_5_cell_integral_0_otherwise::poisson3d_5_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson3d_5_cell_integral_0_otherwise::~poisson3d_5_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson3d_5_cell_integral_0_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 27 // Number of operations (multiply-add pairs) for tensor contraction: 18292 // Total number of operations (multiply-add pairs): 18322 // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0_0 = det*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2]); const double G0_0_1 = det*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5]); const double G0_0_2 = det*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8]); const double G0_1_0 = det*(K[3]*K[0] + K[4]*K[1] + K[5]*K[2]); const double G0_1_1 = det*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5]); const double G0_1_2 = det*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8]); const double G0_2_0 = det*(K[6]*K[0] + K[7]*K[1] + K[8]*K[2]); const double G0_2_1 = det*(K[6]*K[3] + K[7]*K[4] + K[8]*K[5]); const double G0_2_2 = det*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8]); // Compute element tensor A[0] = 0.0262652567340064*G0_0_0 + 0.0262652567340064*G0_0_1 + 0.0262652567340064*G0_0_2 + 0.0262652567340064*G0_1_0 + 0.0262652567340064*G0_1_1 + 0.0262652567340064*G0_1_2 + 0.0262652567340064*G0_2_0 + 0.0262652567340064*G0_2_1 + 0.0262652567340064*G0_2_2; A[1] = -0.00277890512265504*G0_0_0 - 0.00277890512265504*G0_1_0 - 0.00277890512265504*G0_2_0; A[2] = -0.0027789051226551*G0_0_1 - 0.00277890512265512*G0_1_1 - 0.0027789051226551*G0_2_1; A[3] = -0.00277890512265511*G0_0_2 - 0.00277890512265512*G0_1_2 - 0.00277890512265512*G0_2_2; A[4] = -0.00480034930989795*G0_0_1 - 0.00480034930989796*G0_0_2 - 0.00480034930989794*G0_1_1 - 0.00480034930989798*G0_1_2 - 0.00480034930989797*G0_2_1 - 0.00480034930989798*G0_2_2; A[5] = -0.00336507226698179*G0_0_1 - 0.00336507226698178*G0_0_2 - 0.00336507226698183*G0_1_1 - 0.00336507226698181*G0_1_2 - 0.00336507226698182*G0_2_1 - 0.00336507226698182*G0_2_2; A[6] = -0.00336507226698198*G0_0_1 - 0.00336507226698201*G0_0_2 - 0.00336507226698198*G0_1_1 - 0.00336507226698201*G0_1_2 - 0.00336507226698195*G0_2_1 - 0.00336507226698197*G0_2_2; A[7] = -0.00480034930989791*G0_0_1 - 0.00480034930989785*G0_0_2 - 0.00480034930989794*G0_1_1 - 0.00480034930989788*G0_1_2 - 0.00480034930989794*G0_2_1 - 0.00480034930989788*G0_2_2; A[8] = -0.00480034930989789*G0_0_0 - 0.00480034930989779*G0_0_2 - 0.00480034930989787*G0_1_0 - 0.00480034930989778*G0_1_2 - 0.00480034930989791*G0_2_0 - 0.00480034930989781*G0_2_2; A[9] = -0.00336507226698191*G0_0_0 - 0.00336507226698209*G0_0_2 - 0.00336507226698195*G0_1_0 - 0.00336507226698211*G0_1_2 - 0.00336507226698191*G0_2_0 - 0.00336507226698208*G0_2_2; A[10] = -0.00336507226698208*G0_0_0 - 0.00336507226698189*G0_0_2 - 0.00336507226698207*G0_1_0 - 0.0033650722669819*G0_1_2 - 0.00336507226698206*G0_2_0 - 0.0033650722669819*G0_2_2; A[11] = -0.00480034930989789*G0_0_0 - 0.00480034930989797*G0_0_2 - 0.00480034930989792*G0_1_0 - 0.00480034930989799*G0_1_2 - 0.00480034930989792*G0_2_0 - 0.00480034930989797*G0_2_2; A[12] = -0.00480034930989781*G0_0_0 - 0.00480034930989782*G0_0_1 - 0.00480034930989777*G0_1_0 - 0.00480034930989781*G0_1_1 - 0.00480034930989782*G0_2_0 - 0.00480034930989784*G0_2_1; A[13] = -0.00336507226698188*G0_0_0 - 0.00336507226698182*G0_0_1 - 0.00336507226698195*G0_1_0 - 0.00336507226698183*G0_1_1 - 0.00336507226698191*G0_2_0 - 0.00336507226698183*G0_2_1; A[14] = -0.00336507226698196*G0_0_0 - 0.00336507226698195*G0_0_1 - 0.00336507226698191*G0_1_0 - 0.00336507226698196*G0_1_1 - 0.00336507226698192*G0_2_0 - 0.00336507226698193*G0_2_1; A[15] = -0.00480034930989796*G0_0_0 - 0.00480034930989798*G0_0_1 - 0.00480034930989799*G0_1_0 - 0.00480034930989796*G0_1_1 - 0.00480034930989798*G0_2_0 - 0.004800349309898*G0_2_1; A[16] = -0.017870503981615*G0_0_0 - 0.017870503981615*G0_0_1 - 0.0551276864210887*G0_0_2 - 0.017870503981615*G0_1_0 - 0.017870503981615*G0_1_1 - 0.0551276864210887*G0_1_2 - 0.017870503981615*G0_2_0 - 0.017870503981615*G0_2_1 - 0.0551276864210887*G0_2_2; A[17] = 0.0214691349673988*G0_0_0 + 0.0214691349673988*G0_0_1 + 0.0551276864210889*G0_0_2 + 0.0214691349673989*G0_1_0 + 0.0214691349673989*G0_1_1 + 0.0551276864210889*G0_1_2 + 0.0214691349673989*G0_2_0 + 0.0214691349673988*G0_2_1 + 0.0551276864210889*G0_2_2; A[18] = -0.0155544887532735*G0_0_0 - 0.0155544887532735*G0_0_1 - 0.0388177200243171*G0_0_2 - 0.0155544887532735*G0_1_0 - 0.0155544887532735*G0_1_1 - 0.0388177200243171*G0_1_2 - 0.0155544887532735*G0_2_0 - 0.0155544887532735*G0_2_1 - 0.0388177200243171*G0_2_2; A[19] = 0.00480034930989788*G0_0_0 + 0.00480034930989788*G0_0_1 + 0.0153313684129656*G0_0_2 + 0.00480034930989791*G0_1_0 + 0.00480034930989791*G0_1_1 + 0.0153313684129656*G0_1_2 + 0.00480034930989791*G0_2_0 + 0.00480034930989791*G0_2_1 + 0.0153313684129656*G0_2_2; A[20] = -0.0178705039816149*G0_0_0 - 0.0551276864210886*G0_0_1 - 0.0178705039816149*G0_0_2 - 0.0178705039816149*G0_1_0 - 0.0551276864210886*G0_1_1 - 0.0178705039816149*G0_1_2 - 0.0178705039816149*G0_2_0 - 0.0551276864210886*G0_2_1 - 0.0178705039816149*G0_2_2; A[21] = 0.0214691349673985*G0_0_0 + 0.0551276864210886*G0_0_1 + 0.0214691349673986*G0_0_2 + 0.0214691349673985*G0_1_0 + 0.0551276864210886*G0_1_1 + 0.0214691349673985*G0_1_2 + 0.0214691349673985*G0_2_0 + 0.0551276864210885*G0_2_1 + 0.0214691349673985*G0_2_2; A[22] = -0.0155544887532734*G0_0_0 - 0.0388177200243168*G0_0_1 - 0.0155544887532734*G0_0_2 - 0.0155544887532734*G0_1_0 - 0.0388177200243168*G0_1_1 - 0.0155544887532734*G0_1_2 - 0.0155544887532734*G0_2_0 - 0.0388177200243167*G0_2_1 - 0.0155544887532734*G0_2_2; A[23] = 0.00480034930989795*G0_0_0 + 0.0153313684129654*G0_0_1 + 0.00480034930989797*G0_0_2 + 0.00480034930989798*G0_1_0 + 0.0153313684129655*G0_1_1 + 0.00480034930989799*G0_1_2 + 0.00480034930989797*G0_2_0 + 0.0153313684129654*G0_2_1 + 0.00480034930989799*G0_2_2; A[24] = -0.0551276864210885*G0_0_0 - 0.0178705039816148*G0_0_1 - 0.0178705039816149*G0_0_2 - 0.0551276864210885*G0_1_0 - 0.0178705039816148*G0_1_1 - 0.0178705039816148*G0_1_2 - 0.0551276864210885*G0_2_0 - 0.0178705039816149*G0_2_1 - 0.0178705039816149*G0_2_2; A[25] = 0.0551276864210884*G0_0_0 + 0.0214691349673985*G0_0_1 + 0.0214691349673985*G0_0_2 + 0.0551276864210884*G0_1_0 + 0.0214691349673985*G0_1_1 + 0.0214691349673985*G0_1_2 + 0.0551276864210884*G0_2_0 + 0.0214691349673985*G0_2_1 + 0.0214691349673985*G0_2_2; A[26] = -0.0388177200243167*G0_0_0 - 0.0155544887532732*G0_0_1 - 0.0155544887532732*G0_0_2 - 0.0388177200243167*G0_1_0 - 0.0155544887532732*G0_1_1 - 0.0155544887532732*G0_1_2 - 0.0388177200243166*G0_2_0 - 0.0155544887532732*G0_2_1 - 0.0155544887532732*G0_2_2; A[27] = 0.0153313684129654*G0_0_0 + 0.00480034930989779*G0_0_1 + 0.0048003493098978*G0_0_2 + 0.0153313684129654*G0_1_0 + 0.00480034930989778*G0_1_1 + 0.00480034930989779*G0_1_2 + 0.0153313684129654*G0_2_0 + 0.00480034930989781*G0_2_1 + 0.00480034930989782*G0_2_2; A[28] = -0.013742125287264*G0_0_0 - 0.0137421252872639*G0_0_1 - 0.0137421252872638*G0_0_2 - 0.013742125287264*G0_1_0 - 0.013742125287264*G0_1_1 - 0.0137421252872638*G0_1_2 - 0.013742125287264*G0_2_0 - 0.013742125287264*G0_2_1 - 0.0137421252872638*G0_2_2; A[29] = -0.00946499969937464*G0_0_0 - 0.00946499969937473*G0_0_1 - 0.00946499969937448*G0_0_2 - 0.00946499969937453*G0_1_0 - 0.00946499969937462*G0_1_1 - 0.00946499969937446*G0_1_2 - 0.00946499969937457*G0_2_0 - 0.0094649996993747*G0_2_1 - 0.00946499969937445*G0_2_2; A[30] = -0.013742125287264*G0_0_0 - 0.0137421252872638*G0_0_1 - 0.0137421252872641*G0_0_2 - 0.0137421252872641*G0_1_0 - 0.0137421252872639*G0_1_1 - 0.0137421252872641*G0_1_2 - 0.0137421252872641*G0_2_0 - 0.0137421252872639*G0_2_1 - 0.0137421252872641*G0_2_2; A[31] = -0.00946499969937515*G0_0_0 - 0.00946499969937499*G0_0_1 - 0.00946499969937518*G0_0_2 - 0.00946499969937512*G0_1_0 - 0.009464999699375*G0_1_1 - 0.00946499969937513*G0_1_2 - 0.00946499969937511*G0_2_0 - 0.00946499969937495*G0_2_1 - 0.00946499969937513*G0_2_2; A[32] = -0.00946499969937444*G0_0_0 - 0.00946499969937472*G0_0_1 - 0.00946499969937452*G0_0_2 - 0.00946499969937449*G0_1_0 - 0.00946499969937472*G0_1_1 - 0.00946499969937456*G0_1_2 - 0.00946499969937445*G0_2_0 - 0.00946499969937471*G0_2_1 - 0.00946499969937457*G0_2_2; A[33] = -0.013742125287264*G0_0_0 - 0.0137421252872641*G0_0_1 - 0.0137421252872641*G0_0_2 - 0.0137421252872641*G0_1_0 - 0.0137421252872641*G0_1_1 - 0.0137421252872641*G0_1_2 - 0.013742125287264*G0_2_0 - 0.0137421252872641*G0_2_1 - 0.0137421252872641*G0_2_2; A[34] = 0.0479930547204846*G0_0_0 + 0.0335985307773498*G0_0_1 + 0.0335985307773498*G0_0_2 + 0.0479930547204847*G0_1_0 + 0.0335985307773497*G0_1_1 + 0.0335985307773498*G0_1_2 + 0.0479930547204846*G0_2_0 + 0.0335985307773498*G0_2_1 + 0.0335985307773498*G0_2_2; A[35] = -0.0345719095719093*G0_0_0 - 0.0298472385060924*G0_0_1 - 0.0298472385060922*G0_0_2 - 0.0345719095719093*G0_1_0 - 0.0298472385060922*G0_1_1 - 0.0298472385060922*G0_1_2 - 0.0345719095719094*G0_2_0 - 0.0298472385060923*G0_2_1 - 0.0298472385060921*G0_2_2; A[36] = 0.013742125287264*G0_0_0 + 0.0189195610202555*G0_0_1 + 0.0189195610202552*G0_0_2 + 0.0137421252872641*G0_1_0 + 0.0189195610202554*G0_1_1 + 0.0189195610202552*G0_1_2 + 0.0137421252872641*G0_2_0 + 0.0189195610202555*G0_2_1 + 0.0189195610202553*G0_2_2; A[37] = -0.0345719095719091*G0_0_0 - 0.0298472385060924*G0_0_1 - 0.0298472385060923*G0_0_2 - 0.0345719095719092*G0_1_0 - 0.0298472385060925*G0_1_1 - 0.0298472385060924*G0_1_2 - 0.0345719095719091*G0_2_0 - 0.0298472385060924*G0_2_1 - 0.0298472385060923*G0_2_2; A[38] = 0.00946499969937441*G0_0_0 + 0.0117431758056755*G0_0_1 + 0.0117431758056757*G0_0_2 + 0.00946499969937447*G0_1_0 + 0.0117431758056755*G0_1_1 + 0.0117431758056757*G0_1_2 + 0.00946499969937442*G0_2_0 + 0.0117431758056755*G0_2_1 + 0.0117431758056756*G0_2_2; A[39] = 0.013742125287264*G0_0_0 + 0.0189195610202554*G0_0_1 + 0.0189195610202553*G0_0_2 + 0.0137421252872641*G0_1_0 + 0.0189195610202555*G0_1_1 + 0.0189195610202553*G0_1_2 + 0.013742125287264*G0_2_0 + 0.0189195610202554*G0_2_1 + 0.0189195610202553*G0_2_2; A[40] = 0.03359853077735*G0_0_0 + 0.0479930547204848*G0_0_1 + 0.0335985307773499*G0_0_2 + 0.03359853077735*G0_1_0 + 0.0479930547204849*G0_1_1 + 0.03359853077735*G0_1_2 + 0.03359853077735*G0_2_0 + 0.0479930547204849*G0_2_1 + 0.0335985307773499*G0_2_2; A[41] = -0.0298472385060922*G0_0_0 - 0.034571909571909*G0_0_1 - 0.0298472385060922*G0_0_2 - 0.0298472385060922*G0_1_0 - 0.034571909571909*G0_1_1 - 0.0298472385060922*G0_1_2 - 0.0298472385060923*G0_2_0 - 0.034571909571909*G0_2_1 - 0.0298472385060923*G0_2_2; A[42] = 0.0189195610202551*G0_0_0 + 0.013742125287264*G0_0_1 + 0.0189195610202552*G0_0_2 + 0.0189195610202551*G0_1_0 + 0.013742125287264*G0_1_1 + 0.0189195610202552*G0_1_2 + 0.0189195610202552*G0_2_0 + 0.013742125287264*G0_2_1 + 0.0189195610202553*G0_2_2; A[43] = -0.0298472385060927*G0_0_0 - 0.0345719095719094*G0_0_1 - 0.0298472385060925*G0_0_2 - 0.0298472385060927*G0_1_0 - 0.0345719095719094*G0_1_1 - 0.0298472385060927*G0_1_2 - 0.0298472385060927*G0_2_0 - 0.0345719095719094*G0_2_1 - 0.0298472385060926*G0_2_2; A[44] = 0.0117431758056757*G0_0_0 + 0.0094649996993749*G0_0_1 + 0.0117431758056757*G0_0_2 + 0.0117431758056757*G0_1_0 + 0.00946499969937491*G0_1_1 + 0.0117431758056757*G0_1_2 + 0.0117431758056757*G0_2_0 + 0.00946499969937486*G0_2_1 + 0.0117431758056757*G0_2_2; A[45] = 0.0189195610202556*G0_0_0 + 0.0137421252872641*G0_0_1 + 0.0189195610202554*G0_0_2 + 0.0189195610202556*G0_1_0 + 0.0137421252872642*G0_1_1 + 0.0189195610202555*G0_1_2 + 0.0189195610202556*G0_2_0 + 0.0137421252872642*G0_2_1 + 0.0189195610202554*G0_2_2; A[46] = 0.0335985307773497*G0_0_0 + 0.0335985307773497*G0_0_1 + 0.0479930547204845*G0_0_2 + 0.0335985307773497*G0_1_0 + 0.0335985307773497*G0_1_1 + 0.0479930547204846*G0_1_2 + 0.0335985307773498*G0_2_0 + 0.0335985307773498*G0_2_1 + 0.0479930547204846*G0_2_2; A[47] = -0.029847238506092*G0_0_0 - 0.0298472385060919*G0_0_1 - 0.0345719095719087*G0_0_2 - 0.0298472385060921*G0_1_0 - 0.0298472385060919*G0_1_1 - 0.0345719095719087*G0_1_2 - 0.0298472385060921*G0_2_0 - 0.0298472385060919*G0_2_1 - 0.0345719095719087*G0_2_2; A[48] = 0.018919561020255*G0_0_0 + 0.0189195610202551*G0_0_1 + 0.0137421252872637*G0_0_2 + 0.018919561020255*G0_1_0 + 0.018919561020255*G0_1_1 + 0.0137421252872638*G0_1_2 + 0.0189195610202551*G0_2_0 + 0.0189195610202551*G0_2_1 + 0.0137421252872638*G0_2_2; A[49] = -0.0298472385060922*G0_0_0 - 0.0298472385060925*G0_0_1 - 0.0345719095719093*G0_0_2 - 0.0298472385060922*G0_1_0 - 0.0298472385060925*G0_1_1 - 0.0345719095719094*G0_1_2 - 0.0298472385060922*G0_2_0 - 0.0298472385060926*G0_2_1 - 0.0345719095719094*G0_2_2; A[50] = 0.0117431758056755*G0_0_0 + 0.0117431758056754*G0_0_1 + 0.00946499969937455*G0_0_2 + 0.0117431758056756*G0_1_0 + 0.0117431758056754*G0_1_1 + 0.00946499969937452*G0_1_2 + 0.0117431758056755*G0_2_0 + 0.0117431758056753*G0_2_1 + 0.00946499969937451*G0_2_2; A[51] = 0.0189195610202554*G0_0_0 + 0.0189195610202556*G0_0_1 + 0.0137421252872641*G0_0_2 + 0.0189195610202553*G0_1_0 + 0.0189195610202556*G0_1_1 + 0.0137421252872642*G0_1_2 + 0.0189195610202554*G0_2_0 + 0.0189195610202557*G0_2_1 + 0.0137421252872642*G0_2_2; A[52] = -0.0782878387045041*G0_0_0 - 0.0782878387045042*G0_0_1 - 0.0782878387045041*G0_0_2 - 0.0782878387045041*G0_1_0 - 0.0782878387045045*G0_1_1 - 0.0782878387045042*G0_1_2 - 0.0782878387045041*G0_2_0 - 0.0782878387045044*G0_2_1 - 0.0782878387045042*G0_2_2; A[53] = 0.0440369092712835*G0_0_0 + 0.0440369092712838*G0_0_1 + 0.0440369092712839*G0_0_2 + 0.0440369092712835*G0_1_0 + 0.0440369092712837*G0_1_1 + 0.0440369092712838*G0_1_2 + 0.0440369092712835*G0_2_0 + 0.0440369092712838*G0_2_1 + 0.0440369092712838*G0_2_2; A[54] = 0.044036909271284*G0_0_0 + 0.0440369092712833*G0_0_1 + 0.0440369092712837*G0_0_2 + 0.0440369092712839*G0_1_0 + 0.0440369092712835*G0_1_1 + 0.0440369092712838*G0_1_2 + 0.044036909271284*G0_2_0 + 0.0440369092712834*G0_2_1 + 0.0440369092712839*G0_2_2; A[55] = 0.0440369092712843*G0_0_0 + 0.0440369092712841*G0_0_1 + 0.0440369092712837*G0_0_2 + 0.0440369092712844*G0_1_0 + 0.0440369092712842*G0_1_1 + 0.0440369092712838*G0_1_2 + 0.0440369092712843*G0_2_0 + 0.0440369092712841*G0_2_1 + 0.0440369092712838*G0_2_2; A[56] = -0.00277890512265504*G0_0_0 - 0.00277890512265504*G0_0_1 - 0.00277890512265504*G0_0_2; A[57] = 0.0262652567340064*G0_0_0; A[58] = 0.0027789051226551*G0_0_1; A[59] = 0.00277890512265508*G0_0_2; A[60] = 0.00480034930989799*G0_0_1 + 0.00480034930989799*G0_0_2; A[61] = 0.00336507226698188*G0_0_1 + 0.00336507226698186*G0_0_2; A[62] = 0.00336507226698192*G0_0_1 + 0.00336507226698197*G0_0_2; A[63] = 0.00480034930989783*G0_0_1 + 0.00480034930989782*G0_0_2; A[64] = -0.017870503981615*G0_0_0 + 0.0372571824394734*G0_0_2; A[65] = 0.0214691349673986*G0_0_0 - 0.0336585514536898*G0_0_2; A[66] = -0.0155544887532733*G0_0_0 + 0.0232632312710434*G0_0_2; A[67] = 0.00480034930989784*G0_0_0 - 0.0105310191030676*G0_0_2; A[68] = -0.017870503981615*G0_0_0 + 0.0372571824394735*G0_0_1; A[69] = 0.0214691349673987*G0_0_0 - 0.0336585514536899*G0_0_1; A[70] = -0.0155544887532734*G0_0_0 + 0.0232632312710435*G0_0_1; A[71] = 0.00480034930989801*G0_0_0 - 0.0105310191030675*G0_0_1; A[72] = -0.00480034930989802*G0_0_0 - 0.00480034930989803*G0_0_1; A[73] = -0.0033650722669817*G0_0_0 - 0.00336507226698171*G0_0_1; A[74] = -0.00336507226698207*G0_0_0 - 0.00336507226698205*G0_0_1; A[75] = -0.00480034930989782*G0_0_0 - 0.00480034930989783*G0_0_1; A[76] = -0.00480034930989791*G0_0_0 - 0.00480034930989792*G0_0_2; A[77] = -0.00336507226698202*G0_0_0 - 0.00336507226698199*G0_0_2; A[78] = -0.0033650722669818*G0_0_0 - 0.00336507226698181*G0_0_2; A[79] = -0.004800349309898*G0_0_0 - 0.004800349309898*G0_0_2; A[80] = 0.0153313684129653*G0_0_0 + 0.0105310191030675*G0_0_1 + 0.0105310191030674*G0_0_2; A[81] = -0.0388177200243165*G0_0_0 - 0.0232632312710432*G0_0_1 - 0.0232632312710432*G0_0_2; A[82] = 0.0551276864210883*G0_0_0 + 0.0336585514536897*G0_0_1 + 0.0336585514536897*G0_0_2; A[83] = -0.0551276864210884*G0_0_0 - 0.0372571824394735*G0_0_1 - 0.0372571824394735*G0_0_2; A[84] = 0.0479930547204848*G0_0_0 + 0.0143945239431349*G0_0_1 + 0.0143945239431348*G0_0_2; A[85] = -0.0345719095719092*G0_0_0 - 0.00472467106581686*G0_0_1 - 0.0047246710658168*G0_0_2; A[86] = 0.0137421252872641*G0_0_0 - 0.00517743573299118*G0_0_1 - 0.00517743573299106*G0_0_2; A[87] = -0.0345719095719092*G0_0_0 - 0.00472467106581681*G0_0_1 - 0.00472467106581688*G0_0_2; A[88] = 0.00946499969937466*G0_0_0 - 0.002278176106301*G0_0_1 - 0.00227817610630109*G0_0_2; A[89] = 0.013742125287264*G0_0_0 - 0.00517743573299122*G0_0_1 - 0.00517743573299114*G0_0_2; A[90] = -0.0137421252872639*G0_0_0; A[91] = -0.00946499969937475*G0_0_0; A[92] = -0.0137421252872642*G0_0_0; A[93] = -0.00946499969937492*G0_0_0; A[94] = -0.00946499969937454*G0_0_0; A[95] = -0.013742125287264*G0_0_0; A[96] = 0.0189195610202554*G0_0_0 + 0.00517743573299142*G0_0_1; A[97] = -0.0298472385060925*G0_0_0 + 0.00472467106581688*G0_0_1; A[98] = 0.0335985307773499*G0_0_0 - 0.0143945239431347*G0_0_1; A[99] = 0.0117431758056756*G0_0_0 + 0.00227817610630113*G0_0_1; A[100] = -0.0298472385060924*G0_0_0 + 0.00472467106581678*G0_0_1; A[101] = 0.0189195610202553*G0_0_0 + 0.00517743573299123*G0_0_1; A[102] = 0.0189195610202554*G0_0_0 + 0.00517743573299127*G0_0_2; A[103] = -0.0298472385060924*G0_0_0 + 0.00472467106581682*G0_0_2; A[104] = 0.03359853077735*G0_0_0 - 0.0143945239431347*G0_0_2; A[105] = 0.0117431758056757*G0_0_0 + 0.0022781761063012*G0_0_2; A[106] = -0.0298472385060924*G0_0_0 + 0.00472467106581675*G0_0_2; A[107] = 0.0189195610202552*G0_0_0 + 0.00517743573299114*G0_0_2; A[108] = 0.0440369092712838*G0_0_0; A[109] = -0.0782878387045047*G0_0_0; A[110] = 0.0440369092712839*G0_0_0; A[111] = 0.044036909271284*G0_0_0; A[112] = -0.0027789051226551*G0_1_0 - 0.00277890512265512*G0_1_1 - 0.0027789051226551*G0_1_2; A[113] = 0.0027789051226551*G0_1_0; A[114] = 0.0262652567340066*G0_1_1; A[115] = 0.00277890512265511*G0_1_2; A[116] = -0.0178705039816151*G0_1_1 + 0.0372571824394739*G0_1_2; A[117] = 0.0214691349673987*G0_1_1 - 0.0336585514536902*G0_1_2; A[118] = -0.0155544887532734*G0_1_1 + 0.0232632312710437*G0_1_2; A[119] = 0.00480034930989787*G0_1_1 - 0.0105310191030677*G0_1_2; A[120] = 0.00480034930989787*G0_1_0 + 0.00480034930989789*G0_1_2; A[121] = 0.00336507226698195*G0_1_0 + 0.00336507226698191*G0_1_2; A[122] = 0.00336507226698199*G0_1_0 + 0.00336507226698203*G0_1_2; A[123] = 0.00480034930989786*G0_1_0 + 0.00480034930989783*G0_1_2; A[124] = -0.0105310191030676*G0_1_0 + 0.0048003493098979*G0_1_1; A[125] = 0.0232632312710435*G0_1_0 - 0.0155544887532734*G0_1_1; A[126] = -0.03365855145369*G0_1_0 + 0.0214691349673989*G0_1_1; A[127] = 0.0372571824394739*G0_1_0 - 0.0178705039816151*G0_1_1; A[128] = -0.00480034930989786*G0_1_0 - 0.00480034930989787*G0_1_1; A[129] = -0.003365072266982*G0_1_0 - 0.00336507226698197*G0_1_1; A[130] = -0.00336507226698192*G0_1_0 - 0.00336507226698192*G0_1_1; A[131] = -0.00480034930989786*G0_1_0 - 0.00480034930989787*G0_1_1; A[132] = 0.0105310191030678*G0_1_0 + 0.0153313684129656*G0_1_1 + 0.0105310191030678*G0_1_2; A[133] = -0.0232632312710437*G0_1_0 - 0.0388177200243172*G0_1_1 - 0.0232632312710437*G0_1_2; A[134] = 0.0336585514536902*G0_1_0 + 0.055127686421089*G0_1_1 + 0.0336585514536902*G0_1_2; A[135] = -0.0372571824394739*G0_1_0 - 0.055127686421089*G0_1_1 - 0.0372571824394738*G0_1_2; A[136] = -0.00480034930989785*G0_1_1 - 0.00480034930989785*G0_1_2; A[137] = -0.00336507226698196*G0_1_1 - 0.00336507226698196*G0_1_2; A[138] = -0.00336507226698203*G0_1_1 - 0.00336507226698202*G0_1_2; A[139] = -0.0048003493098979*G0_1_1 - 0.00480034930989788*G0_1_2; A[140] = -0.00517743573299146*G0_1_0 + 0.013742125287264*G0_1_1 - 0.00517743573299144*G0_1_2; A[141] = -0.00472467106581678*G0_1_0 - 0.0345719095719095*G0_1_1 - 0.00472467106581675*G0_1_2; A[142] = 0.014394523943135*G0_1_0 + 0.0479930547204851*G0_1_1 + 0.0143945239431351*G0_1_2; A[143] = -0.0022781761063012*G0_1_0 + 0.00946499969937457*G0_1_1 - 0.00227817610630127*G0_1_2; A[144] = -0.00472467106581698*G0_1_0 - 0.0345719095719095*G0_1_1 - 0.00472467106581701*G0_1_2; A[145] = -0.00517743573299136*G0_1_0 + 0.013742125287264*G0_1_1 - 0.00517743573299131*G0_1_2; A[146] = 0.00517743573299139*G0_1_0 + 0.0189195610202554*G0_1_1; A[147] = 0.00472467106581695*G0_1_0 - 0.0298472385060925*G0_1_1; A[148] = -0.014394523943135*G0_1_0 + 0.03359853077735*G0_1_1; A[149] = 0.00227817610630109*G0_1_0 + 0.0117431758056757*G0_1_1; A[150] = 0.00472467106581697*G0_1_0 - 0.0298472385060924*G0_1_1; A[151] = 0.00517743573299137*G0_1_0 + 0.0189195610202553*G0_1_1; A[152] = -0.0137421252872641*G0_1_1; A[153] = -0.00946499969937482*G0_1_1; A[154] = -0.013742125287264*G0_1_1; A[155] = -0.00946499969937458*G0_1_1; A[156] = -0.00946499969937458*G0_1_1; A[157] = -0.013742125287264*G0_1_1; A[158] = 0.0189195610202552*G0_1_1 + 0.00517743573299129*G0_1_2; A[159] = 0.0117431758056758*G0_1_1 + 0.00227817610630098*G0_1_2; A[160] = 0.0189195610202555*G0_1_1 + 0.00517743573299143*G0_1_2; A[161] = -0.0298472385060923*G0_1_1 + 0.00472467106581704*G0_1_2; A[162] = -0.0298472385060927*G0_1_1 + 0.00472467106581684*G0_1_2; A[163] = 0.03359853077735*G0_1_1 - 0.014394523943135*G0_1_2; A[164] = 0.0440369092712843*G0_1_1; A[165] = 0.0440369092712844*G0_1_1; A[166] = -0.0782878387045052*G0_1_1; A[167] = 0.0440369092712839*G0_1_1; A[168] = -0.00277890512265511*G0_2_0 - 0.00277890512265512*G0_2_1 - 0.00277890512265512*G0_2_2; A[169] = 0.00277890512265508*G0_2_0; A[170] = 0.00277890512265511*G0_2_1; A[171] = 0.0262652567340067*G0_2_2; A[172] = -0.0105310191030677*G0_2_1 + 0.00480034930989792*G0_2_2; A[173] = 0.0232632312710438*G0_2_1 - 0.0155544887532734*G0_2_2; A[174] = -0.0336585514536903*G0_2_1 + 0.0214691349673989*G0_2_2; A[175] = 0.037257182439474*G0_2_1 - 0.0178705039816152*G0_2_2; A[176] = -0.0105310191030677*G0_2_0 + 0.00480034930989777*G0_2_2; A[177] = 0.0232632312710439*G0_2_0 - 0.0155544887532732*G0_2_2; A[178] = -0.0336585514536903*G0_2_0 + 0.0214691349673987*G0_2_2; A[179] = 0.0372571824394741*G0_2_0 - 0.017870503981615*G0_2_2; A[180] = 0.0048003493098978*G0_2_0 + 0.00480034930989777*G0_2_1; A[181] = 0.00336507226698204*G0_2_0 + 0.003365072266982*G0_2_1; A[182] = 0.00336507226698201*G0_2_0 + 0.00336507226698207*G0_2_1; A[183] = 0.00480034930989792*G0_2_0 + 0.00480034930989786*G0_2_1; A[184] = 0.0105310191030678*G0_2_0 + 0.0105310191030678*G0_2_1 + 0.0153313684129657*G0_2_2; A[185] = -0.0232632312710439*G0_2_0 - 0.0232632312710439*G0_2_1 - 0.0388177200243172*G0_2_2; A[186] = 0.0336585514536904*G0_2_0 + 0.0336585514536904*G0_2_1 + 0.0551276864210892*G0_2_2; A[187] = -0.0372571824394741*G0_2_0 - 0.0372571824394741*G0_2_1 - 0.0551276864210892*G0_2_2; A[188] = -0.00480034930989781*G0_2_0 - 0.00480034930989782*G0_2_2; A[189] = -0.00336507226698207*G0_2_0 - 0.00336507226698204*G0_2_2; A[190] = -0.00336507226698188*G0_2_0 - 0.00336507226698189*G0_2_2; A[191] = -0.00480034930989791*G0_2_0 - 0.00480034930989791*G0_2_2; A[192] = -0.00480034930989784*G0_2_1 - 0.00480034930989784*G0_2_2; A[193] = -0.00336507226698193*G0_2_1 - 0.00336507226698194*G0_2_2; A[194] = -0.00336507226698205*G0_2_1 - 0.00336507226698204*G0_2_2; A[195] = -0.00480034930989779*G0_2_1 - 0.00480034930989779*G0_2_2; A[196] = -0.00517743573299112*G0_2_0 - 0.00517743573299115*G0_2_1 + 0.013742125287264*G0_2_2; A[197] = -0.00227817610630123*G0_2_0 - 0.00227817610630128*G0_2_1 + 0.00946499969937477*G0_2_2; A[198] = -0.00517743573299118*G0_2_0 - 0.00517743573299111*G0_2_1 + 0.0137421252872641*G0_2_2; A[199] = -0.00472467106581698*G0_2_0 - 0.0047246710658167*G0_2_1 - 0.0345719095719093*G0_2_2; A[200] = -0.0047246710658167*G0_2_0 - 0.00472467106581696*G0_2_1 - 0.0345719095719095*G0_2_2; A[201] = 0.014394523943135*G0_2_0 + 0.0143945239431351*G0_2_1 + 0.0479930547204851*G0_2_2; A[202] = 0.00517743573299109*G0_2_0 + 0.0189195610202552*G0_2_2; A[203] = 0.00227817610630121*G0_2_0 + 0.0117431758056759*G0_2_2; A[204] = 0.00517743573299117*G0_2_0 + 0.0189195610202552*G0_2_2; A[205] = 0.00472467106581686*G0_2_0 - 0.0298472385060924*G0_2_2; A[206] = 0.00472467106581673*G0_2_0 - 0.0298472385060926*G0_2_2; A[207] = -0.0143945239431351*G0_2_0 + 0.0335985307773501*G0_2_2; A[208] = 0.00517743573299114*G0_2_1 + 0.0189195610202552*G0_2_2; A[209] = 0.0022781761063013*G0_2_1 + 0.0117431758056759*G0_2_2; A[210] = 0.00517743573299119*G0_2_1 + 0.0189195610202552*G0_2_2; A[211] = 0.00472467106581696*G0_2_1 - 0.0298472385060923*G0_2_2; A[212] = 0.00472467106581659*G0_2_1 - 0.0298472385060928*G0_2_2; A[213] = -0.0143945239431351*G0_2_1 + 0.03359853077735*G0_2_2; A[214] = -0.0137421252872641*G0_2_2; A[215] = -0.00946499969937474*G0_2_2; A[216] = -0.013742125287264*G0_2_2; A[217] = -0.00946499969937471*G0_2_2; A[218] = -0.00946499969937474*G0_2_2; A[219] = -0.0137421252872641*G0_2_2; A[220] = 0.044036909271284*G0_2_2; A[221] = 0.044036909271284*G0_2_2; A[222] = 0.0440369092712841*G0_2_2; A[223] = -0.0782878387045049*G0_2_2; A[224] = -0.00480034930989795*G0_1_0 - 0.00480034930989794*G0_1_1 - 0.00480034930989797*G0_1_2 - 0.00480034930989796*G0_2_0 - 0.00480034930989798*G0_2_1 - 0.00480034930989798*G0_2_2; A[225] = 0.00480034930989799*G0_1_0 + 0.00480034930989799*G0_2_0; A[226] = -0.0178705039816151*G0_1_1 + 0.0372571824394739*G0_2_1; A[227] = -0.0105310191030677*G0_1_2 + 0.00480034930989792*G0_2_2; A[228] = 0.179096479009672*G0_1_1 + 0.069911039963123*G0_1_2 + 0.069911039963123*G0_2_1 + 0.139822079926246*G0_2_2; A[229] = -0.147063705006412*G0_1_1 + 0.0263830016434184*G0_1_2 - 0.038726384212495*G0_2_1 - 0.108637424175618*G0_2_2; A[230] = 0.100717304493346*G0_1_1 - 0.0246345732456841*G0_1_2 + 0.018978276899284*G0_2_1 + 0.0788945694544652*G0_2_2; A[231] = -0.0328352243499812*G0_1_1 + 0.0209159009072203*G0_1_2 - 0.00537576492437605*G0_2_1 - 0.0328352243499813*G0_2_2; A[232] = -0.0107515298487521*G0_1_0 - 0.0053757649243761*G0_1_2 - 0.00537576492437613*G0_2_0 - 0.00537576492437598*G0_2_2; A[233] = -0.013974379208754*G0_1_0 - 0.0116844599266471*G0_1_2 - 0.00228991928210662*G0_2_0 - 0.00228991928210672*G0_2_2; A[234] = -0.0111690649885093*G0_1_0 - 0.00887914570640264*G0_1_2 - 0.0022899192821068*G0_2_0 - 0.00228991928210675*G0_2_2; A[235] = -0.0328352243499813*G0_1_0 - 0.0274594594256051*G0_1_2 - 0.00537576492437609*G0_2_0 - 0.00537576492437608*G0_2_2; A[236] = -0.0274594594256052*G0_1_0 - 0.00537576492437615*G0_1_1 - 0.0328352243499812*G0_2_0 - 0.00537576492437604*G0_2_1; A[237] = 0.0599162925551813*G0_1_0 + 0.0283728175438246*G0_1_1 + 0.0788945694544649*G0_2_0 + 0.0189782768992839*G0_2_1; A[238] = -0.0699110399631231*G0_1_0 - 0.0574176057031958*G0_1_1 - 0.108637424175618*G0_2_0 - 0.038726384212495*G0_2_1; A[239] = 0.069911039963123*G0_1_0 + 0.0895482395048363*G0_1_1 + 0.139822079926246*G0_2_0 + 0.069911039963123*G0_2_1; A[240] = 0.010751529848752*G0_1_0 + 0.010751529848752*G0_1_1 + 0.00537576492437624*G0_1_2 + 0.0053757649243763*G0_2_0 + 0.00537576492437627*G0_2_1; A[241] = 0.0139743792087539*G0_1_0 + 0.013974379208754*G0_1_1 + 0.00228991928210662*G0_1_2 + 0.00228991928210641*G0_2_0 + 0.00228991928210648*G0_2_1; A[242] = 0.0111690649885092*G0_1_0 + 0.0111690649885091*G0_1_1 + 0.00228991928210675*G0_1_2 + 0.00228991928210694*G0_2_0 + 0.00228991928210691*G0_2_1; A[243] = 0.0328352243499813*G0_1_0 + 0.0328352243499812*G0_1_1 + 0.00537576492437612*G0_1_2 + 0.00537576492437604*G0_2_0 + 0.00537576492437605*G0_2_1; A[244] = 0.0274594594256049*G0_1_0 + 0.022083694501229*G0_1_1 + 0.027459459425605*G0_1_2 + 0.0328352243499813*G0_2_0 + 0.0274594594256053*G0_2_1 + 0.0328352243499814*G0_2_2; A[245] = -0.059916292555181*G0_1_0 - 0.0315434750113564*G0_1_1 - 0.0599162925551809*G0_1_2 - 0.078894569454465*G0_2_0 - 0.0599162925551812*G0_2_1 - 0.078894569454465*G0_2_2; A[246] = 0.0699110399631228*G0_1_0 + 0.0124934342599269*G0_1_1 + 0.0699110399631228*G0_1_2 + 0.108637424175618*G0_2_0 + 0.0699110399631229*G0_2_1 + 0.108637424175618*G0_2_2; A[247] = -0.0699110399631229*G0_1_0 + 0.0196371995417134*G0_1_1 - 0.0699110399631229*G0_1_2 - 0.139822079926246*G0_2_0 - 0.0699110399631229*G0_2_1 - 0.139822079926246*G0_2_2; A[248] = 0.00537576492437596*G0_1_1 + 0.00537576492437602*G0_1_2 + 0.0053757649243762*G0_2_1 + 0.00537576492437626*G0_2_2; A[249] = 0.0022899192821069*G0_1_1 + 0.00228991928210685*G0_1_2 + 0.00228991928210681*G0_2_1 + 0.0022899192821068*G0_2_2; A[250] = 0.00228991928210693*G0_1_1 + 0.00228991928210694*G0_1_2 + 0.00228991928210691*G0_2_1 + 0.00228991928210695*G0_2_2; A[251] = 0.00537576492437601*G0_1_1 + 0.00537576492437604*G0_1_2 + 0.00537576492437589*G0_2_1 + 0.00537576492437596*G0_2_2; A[252] = 0.0425363923627816*G0_1_0 - 0.0187890812890808*G0_1_1 + 0.0212681961813907*G0_1_2 + 0.0118736555368503*G0_2_0 - 0.00939454064454043*G0_2_1 + 0.0118736555368498*G0_2_2; A[253] = -0.0845508658008655*G0_1_0 + 0.0439716694056967*G0_1_1 - 0.0422754329004323*G0_1_2 - 0.0429604514890973*G0_2_0 - 0.000685018588664596*G0_2_1 - 0.0429604514890964*G0_2_2; A[254] = 0.192588083213083*G0_1_0 - 0.0644569872000418*G0_1_1 + 0.0962940416065411*G0_1_2 + 0.124738623002512*G0_2_0 + 0.0284445813959708*G0_2_1 + 0.124738623002511*G0_2_2; A[255] = 0.0142875305635719*G0_1_0 - 0.0292600797158085*G0_1_1 + 0.00844856259352771*G0_1_2 + 0.00254435475789566*G0_2_0 - 0.00329461321214807*G0_2_1 + 0.00254435475789601*G0_2_2; A[256] = -0.0493213383838372*G0_1_0 + 0.127315597693202*G0_1_1 - 0.00704590548340516*G0_1_2 - 0.0429604514890968*G0_2_0 - 0.000685018588664574*G0_2_1 - 0.0429604514890976*G0_2_2; A[257] = 0.0477555816097483*G0_1_0 - 0.064130787872107*G0_1_1 + 0.0264873854283579*G0_1_2 + 0.01187365553685*G0_2_0 - 0.00939454064454082*G0_2_1 + 0.0118736555368501*G0_2_2; A[258] = -0.0425363923627816*G0_1_0 - 0.0613254736518624*G0_1_1 - 0.0212681961813908*G0_1_2 - 0.0118736555368501*G0_2_0 - 0.0212681961813909*G0_2_1; A[259] = 0.0845508658008659*G0_1_0 + 0.128522535206562*G0_1_1 + 0.042275432900433*G0_1_2 + 0.042960451489098*G0_2_0 + 0.0422754329004331*G0_2_1; A[260] = -0.192588083213083*G0_1_0 - 0.257045070413124*G0_1_1 - 0.0962940416065417*G0_1_2 - 0.124738623002512*G0_2_0 - 0.0962940416065416*G0_2_1; A[261] = -0.0142875305635721*G0_1_0 - 0.0435476102793803*G0_1_1 - 0.00583896797004431*G0_1_2 - 0.00254435475789594*G0_2_0 - 0.00583896797004385*G0_2_1; A[262] = 0.0493213383838374*G0_1_0 + 0.176636936077039*G0_1_1 + 0.0422754329004324*G0_1_2 + 0.0429604514890968*G0_2_0 + 0.0422754329004325*G0_2_1; A[263] = -0.0477555816097485*G0_1_0 - 0.111886369481855*G0_1_1 - 0.0212681961813905*G0_1_2 - 0.0118736555368501*G0_2_0 - 0.0212681961813909*G0_2_1; A[264] = 0.0187890812890808*G0_1_1 + 0.00939454064454048*G0_1_2 + 0.00939454064454038*G0_2_1; A[265] = 0.00658922642429634*G0_1_1 + 0.00329461321214796*G0_1_2 + 0.00329461321214811*G0_2_1; A[266] = 0.0187890812890809*G0_1_1 + 0.0093945406445401*G0_1_2 + 0.00939454064454045*G0_2_1; A[267] = 0.0292600797158085*G0_1_1 + 0.00329461321214784*G0_1_2 + 0.00329461321214815*G0_2_1; A[268] = 0.0292600797158086*G0_1_1 + 0.00329461321214792*G0_1_2 + 0.00329461321214811*G0_2_1; A[269] = 0.0641307878721068*G0_1_1 + 0.00939454064454088*G0_1_2 + 0.00939454064454076*G0_2_1; A[270] = -0.0306627368259311*G0_1_1 - 0.0212681961813906*G0_1_2 - 0.0212681961813909*G0_2_1 - 0.0118736555368498*G0_2_2; A[271] = -0.00913358118219294*G0_1_1 - 0.00583896797004425*G0_1_2 - 0.00583896797004471*G0_2_1 - 0.00254435475789644*G0_2_2; A[272] = -0.0306627368259313*G0_1_1 - 0.0212681961813908*G0_1_2 - 0.0212681961813905*G0_2_1 - 0.01187365553685*G0_2_2; A[273] = 0.0642612676032812*G0_1_1 + 0.0422754329004327*G0_1_2 + 0.0422754329004329*G0_2_1 + 0.0429604514890972*G0_2_2; A[274] = 0.0642612676032816*G0_1_1 + 0.0422754329004324*G0_1_2 + 0.0422754329004328*G0_2_1 + 0.0429604514890967*G0_2_2; A[275] = -0.128522535206562*G0_1_1 - 0.0962940416065409*G0_1_2 - 0.0962940416065412*G0_2_1 - 0.124738623002511*G0_2_2; A[276] = -0.0505608958299923*G0_1_1 - 0.00260959462348328*G0_1_2 - 0.0026095946234825*G0_2_1; A[277] = -0.0505608958299936*G0_1_1 - 0.00260959462348337*G0_1_2 - 0.00260959462348366*G0_2_1; A[278] = 0.0962288017409532*G0_1_1 - 0.0352295274170276*G0_1_2 - 0.0352295274170285*G0_2_1; A[279] = -0.15657567740901*G0_1_1 - 0.00260959462348427*G0_1_2 - 0.0026095946234836*G0_2_1; A[280] = -0.0033650722669818*G0_1_0 - 0.00336507226698183*G0_1_1 - 0.00336507226698182*G0_1_2 - 0.00336507226698178*G0_2_0 - 0.00336507226698181*G0_2_1 - 0.00336507226698182*G0_2_2; A[281] = 0.00336507226698188*G0_1_0 + 0.00336507226698186*G0_2_0; A[282] = 0.0214691349673987*G0_1_1 - 0.0336585514536902*G0_2_1; A[283] = 0.0232632312710438*G0_1_2 - 0.0155544887532734*G0_2_2; A[284] = -0.147063705006412*G0_1_1 - 0.038726384212495*G0_1_2 + 0.0263830016434184*G0_2_1 - 0.108637424175618*G0_2_2; A[285] = 0.304226541205706*G0_1_1 + 0.0781312630270952*G0_1_2 + 0.0781312630270951*G0_2_1 + 0.281001149056703*G0_2_2; A[286] = -0.204187731314467*G0_1_1 + 0.0153052724667312*G0_1_2 - 0.0364951808094165*G0_2_1 - 0.204187731314466*G0_2_2; A[287] = 0.078894569454465*G0_1_1 - 0.0246345732456847*G0_1_2 + 0.0189782768992835*G0_2_1 + 0.100717304493346*G0_2_2; A[288] = -0.013974379208754*G0_1_0 - 0.00228991928210673*G0_1_2 - 0.011684459926647*G0_2_0 - 0.00228991928210677*G0_2_2; A[289] = 0.0263047138047135*G0_1_0 + 0.0131523569023565*G0_1_2 + 0.0131523569023563*G0_2_0 + 0.0132175967679437*G0_2_2; A[290] = 0.00523223722008405*G0_1_0 + 0.00578025209101603*G0_1_2 - 0.000548014870931454*G0_2_0 - 0.00048277500534434*G0_2_2; A[291] = 0.078894569454465*G0_1_0 + 0.0599162925551808*G0_1_2 + 0.0189782768992835*G0_2_0 + 0.028372817543824*G0_2_2; A[292] = -0.00887914570640247*G0_1_0 - 0.0022899192821067*G0_1_1 - 0.0111690649885091*G0_2_0 - 0.00228991928210669*G0_2_1; A[293] = 0.00578025209101574*G0_1_0 - 0.00048277500534468*G0_1_1 + 0.00523223722008433*G0_2_0 - 0.000548014870931534*G0_2_1; A[294] = 0.00480165410720996*G0_1_0 + 0.00506261356955823*G0_1_1 + 0.00960330821441933*G0_2_0 + 0.00480165410720958*G0_2_1; A[295] = -0.0387263842124948*G0_1_0 - 0.0574176057031954*G0_1_1 - 0.108637424175618*G0_2_0 - 0.0699110399631225*G0_2_1; A[296] = 0.0139743792087539*G0_1_0 + 0.013974379208754*G0_1_1 + 0.0116844599266471*G0_1_2 + 0.0116844599266468*G0_2_0 + 0.0116844599266469*G0_2_1 + 0.00939454064454018*G0_2_2; A[297] = -0.0263047138047137*G0_1_0 - 0.0263047138047139*G0_1_1 - 0.0131523569023568*G0_1_2 - 0.0131523569023564*G0_2_0 - 0.0131523569023565*G0_2_1 + 6.52398655873568e-05*G0_2_2; A[298] = -0.00523223722008388*G0_1_0 - 0.00523223722008384*G0_1_1 + 0.000548014870931974*G0_1_2 + 0.00054801487093134*G0_2_0 + 0.000548014870931405*G0_2_1 + 6.52398655872155e-05*G0_2_2; A[299] = -0.078894569454465*G0_1_0 - 0.078894569454465*G0_1_1 - 0.0189782768992841*G0_1_2 - 0.0189782768992836*G0_2_0 - 0.0189782768992836*G0_2_1 + 0.00939454064454048*G0_2_2; A[300] = 0.0088791457064026*G0_1_0 + 0.00658922642429581*G0_1_1 + 0.00887914570640256*G0_1_2 + 0.011169064988509*G0_2_0 + 0.00887914570640231*G0_2_1 + 0.0111690649885089*G0_2_2; A[301] = -0.00578025209101579*G0_1_0 - 0.00626302709636057*G0_1_1 - 0.00578025209101578*G0_1_2 - 0.00523223722008387*G0_2_0 - 0.00578025209101554*G0_2_1 - 0.00523223722008382*G0_2_2; A[302] = -0.0048016541072096*G0_1_0 + 0.000260959462348528*G0_1_1 - 0.00480165410720957*G0_1_2 - 0.00960330821441949*G0_2_0 - 0.00480165410720995*G0_2_1 - 0.00960330821441939*G0_2_2; A[303] = 0.0387263842124949*G0_1_0 - 0.0186912214907006*G0_1_1 + 0.0387263842124949*G0_1_2 + 0.108637424175618*G0_2_0 + 0.0387263842124953*G0_2_1 + 0.108637424175618*G0_2_2; A[304] = 0.00228991928210679*G0_1_1 + 0.0022899192821067*G0_1_2 + 0.00228991928210648*G0_2_1 + 0.00228991928210638*G0_2_2; A[305] = 0.00178757231708631*G0_1_1 + 0.00178757231708635*G0_1_2 + 0.00178757231708609*G0_2_1 + 0.00178757231708608*G0_2_2; A[306] = 0.00178757231708591*G0_1_1 + 0.00178757231708593*G0_1_2 + 0.00178757231708616*G0_2_1 + 0.00178757231708613*G0_2_2; A[307] = 0.0022899192821068*G0_1_1 + 0.00228991928210674*G0_1_2 + 0.00228991928210681*G0_2_1 + 0.0022899192821067*G0_2_2; A[308] = 0.0403182369328191*G0_1_0 + 0.0148746893538555*G0_1_1 + 0.00123955744615442*G0_1_2 + 0.0540186087061077*G0_2_0 + 0.0149399292194429*G0_2_1 + 0.00117431758056796*G0_2_2; A[309] = -0.0808321934624*G0_1_0 - 0.0436454700777605*G0_1_1 - 0.00649136662591485*G0_1_2 - 0.108232937008976*G0_2_0 - 0.0338921101724905*G0_2_1 - 0.00352295274170265*G0_2_2; A[310] = 0.0109602974186291*G0_1_0 + 0.132306447410612*G0_1_1 - 0.0623693115012554*G0_1_2 + 0.146659217839771*G0_2_0 + 0.0733296089198848*G0_2_1 - 0.124738623002511*G0_2_2; A[311] = -0.0377738821749232*G0_1_0 + 0.0189848008858419*G0_1_1 - 0.0188869410874618*G0_1_2 - 0.00939454064453926*G0_2_0 + 0.00949240044292105*G0_2_1 - 0.0155923278753135*G0_2_2; A[312] = 0.167731694424402*G0_1_0 - 0.166948816037356*G0_1_1 + 0.0838658472122007*G0_1_2 + 0.0777006799142212*G0_2_0 - 0.00616516729797828*G0_2_1 + 0.182410664181497*G0_2_2; A[313] = -0.0823327103709047*G0_1_0 + 0.127087258163646*G0_1_1 - 0.0463855444324194*G0_1_2 + 0.00182671623643838*G0_2_0 + 0.0377738821749235*G0_2_1 - 0.0510175748891021*G0_2_2; A[314] = -0.0403182369328191*G0_1_0 - 0.0254435475789636*G0_1_1 - 0.0390786794866649*G0_1_2 - 0.0540186087061076*G0_2_0 - 0.0390786794866645*G0_2_1 - 0.0528442911255397*G0_2_2; A[315] = 0.0808321934624001*G0_1_0 + 0.0371867233846399*G0_1_1 + 0.0743408268364849*G0_1_2 + 0.108232937008977*G0_2_0 + 0.0743408268364856*G0_2_1 + 0.104709984267273*G0_2_2; A[316] = -0.0109602974186293*G0_1_0 + 0.121346149991982*G0_1_1 - 0.0733296089198849*G0_1_2 - 0.146659217839771*G0_2_0 - 0.0733296089198862*G0_2_1 - 0.271397840842282*G0_2_2; A[317] = 0.0377738821749219*G0_1_0 + 0.056758683060765*G0_1_1 + 0.0188869410874617*G0_1_2 + 0.00939454064453862*G0_2_0 + 0.0188869410874605*G0_2_1 - 0.00619778723077389*G0_2_2; A[318] = -0.167731694424402*G0_1_0 - 0.334680510461757*G0_1_1 - 0.0838658472122009*G0_1_2 - 0.077700679914221*G0_2_0 - 0.0838658472121995*G0_2_1 + 0.104709984267276*G0_2_2; A[319] = 0.0823327103709049*G0_1_0 + 0.209419968534551*G0_1_1 + 0.0359471659384856*G0_1_2 - 0.00182671623643835*G0_2_0 + 0.0359471659384852*G0_2_1 - 0.0528442911255404*G0_2_2; A[320] = -0.0148746893538556*G0_1_1 - 0.014939929219443*G0_1_2 - 0.0149399292194429*G0_2_1 - 0.0150051690850292*G0_2_2; A[321] = 0.00450155072550939*G0_1_1 + 0.001924576034819*G0_1_2 + 0.00192457603481966*G0_2_1 - 0.000652398655870633*G0_2_2; A[322] = -0.0148746893538556*G0_1_1 - 0.0149399292194425*G0_1_2 - 0.014939929219443*G0_2_1 - 0.0150051690850297*G0_2_2; A[323] = -0.0189848008858432*G0_1_1 - 0.00949240044292091*G0_1_2 - 0.00949240044292235*G0_2_1 - 0.000652398655871944*G0_2_2; A[324] = -0.0189848008858422*G0_1_1 - 0.00949240044292148*G0_1_2 - 0.00949240044292113*G0_2_1 - 0.000652398655871238*G0_2_2; A[325] = -0.127087258163646*G0_1_1 - 0.0377738821749235*G0_1_2 - 0.0377738821749235*G0_2_1 - 0.0150051690850292*G0_2_2; A[326] = -0.00130479731174155*G0_1_1 - 0.0012395574461542*G0_1_2 - 0.001239557446154*G0_2_1 - 0.00117431758056772*G0_2_2; A[327] = -0.0156575677409008*G0_1_1 - 0.0130805930502109*G0_1_2 - 0.0130805930502109*G0_2_1 - 0.0105036183595207*G0_2_2; A[328] = -0.00130479731174142*G0_1_1 - 0.00123955744615439*G0_1_2 - 0.00123955744615489*G0_2_1 - 0.00117431758056787*G0_2_2; A[329] = 0.00880738185425678*G0_1_1 + 0.00649136662591521*G0_1_2 + 0.00649136662591481*G0_2_1 + 0.00352295274170248*G0_2_2; A[330] = 0.00880738185425642*G0_1_1 + 0.00649136662591481*G0_1_2 + 0.00649136662591534*G0_2_1 + 0.00352295274170236*G0_2_2; A[331] = 0.0476251018785733*G0_1_1 + 0.0623693115012554*G0_1_2 + 0.0623693115012553*G0_2_1 + 0.124738623002511*G0_2_2; A[332] = 0.0391439193522505*G0_1_1 + 0.0319675341376703*G0_1_2 + 0.0319675341376703*G0_2_1 + 0.0260959462348327*G0_2_2; A[333] = 0.0391439193522519*G0_1_1 + 0.0319675341376728*G0_1_2 + 0.0319675341376711*G0_2_1 + 0.0260959462348342*G0_2_2; A[334] = -0.156575677409008*G0_1_1 - 0.0903572138381161*G0_1_2 - 0.0903572138381128*G0_2_1 - 0.1859336169232*G0_2_2; A[335] = 0.185933616923199*G0_1_1 + 0.0156575677409033*G0_1_2 + 0.0156575677409007*G0_2_1 + 0.0260959462348368*G0_2_2; A[336] = -0.00336507226698198*G0_1_0 - 0.00336507226698198*G0_1_1 - 0.00336507226698195*G0_1_2 - 0.00336507226698201*G0_2_0 - 0.00336507226698201*G0_2_1 - 0.00336507226698197*G0_2_2; A[337] = 0.00336507226698192*G0_1_0 + 0.00336507226698197*G0_2_0; A[338] = -0.0155544887532734*G0_1_1 + 0.0232632312710437*G0_2_1; A[339] = -0.0336585514536903*G0_1_2 + 0.0214691349673989*G0_2_2; A[340] = 0.100717304493346*G0_1_1 + 0.018978276899284*G0_1_2 - 0.024634573245684*G0_2_1 + 0.0788945694544652*G0_2_2; A[341] = -0.204187731314467*G0_1_1 - 0.0364951808094165*G0_1_2 + 0.0153052724667312*G0_2_1 - 0.204187731314466*G0_2_2; A[342] = 0.281001149056703*G0_1_1 + 0.0781312630270952*G0_1_2 + 0.0781312630270952*G0_2_1 + 0.304226541205706*G0_2_2; A[343] = -0.108637424175618*G0_1_1 + 0.0263830016434184*G0_1_2 - 0.0387263842124945*G0_2_1 - 0.147063705006412*G0_2_2; A[344] = -0.0111690649885092*G0_1_0 - 0.00228991928210689*G0_1_2 - 0.00887914570640276*G0_2_0 - 0.00228991928210686*G0_2_2; A[345] = 0.00523223722008408*G0_1_0 - 0.000548014870931441*G0_1_2 + 0.00578025209101653*G0_2_0 - 0.000482775005344011*G0_2_2; A[346] = 0.00960330821441958*G0_1_0 + 0.00480165410720959*G0_1_2 + 0.00480165410720929*G0_2_0 + 0.00506261356955782*G0_2_2; A[347] = -0.108637424175618*G0_1_0 - 0.0699110399631228*G0_1_2 - 0.0387263842124946*G0_2_0 - 0.0574176057031953*G0_2_2; A[348] = -0.0116844599266472*G0_1_0 - 0.0022899192821069*G0_1_1 - 0.0139743792087541*G0_2_0 - 0.00228991928210693*G0_2_1; A[349] = 0.0131523569023567*G0_1_0 + 0.0132175967679443*G0_1_1 + 0.0263047138047135*G0_2_0 + 0.013152356902357*G0_2_1; A[350] = -0.000548014870931745*G0_1_0 - 0.000482775005345022*G0_1_1 + 0.00523223722008435*G0_2_0 + 0.00578025209101554*G0_2_1; A[351] = 0.0189782768992838*G0_1_0 + 0.0283728175438247*G0_1_1 + 0.0788945694544649*G0_2_0 + 0.0599162925551814*G0_2_1; A[352] = 0.0111690649885091*G0_1_0 + 0.0111690649885091*G0_1_1 + 0.00887914570640245*G0_1_2 + 0.00887914570640292*G0_2_0 + 0.00887914570640297*G0_2_1 + 0.006589226424296*G0_2_2; A[353] = -0.00523223722008374*G0_1_0 - 0.00523223722008376*G0_1_1 - 0.00578025209101554*G0_1_2 - 0.00578025209101617*G0_2_0 - 0.00578025209101619*G0_2_1 - 0.00626302709636054*G0_2_2; A[354] = -0.00960330821441996*G0_1_0 - 0.00960330821441991*G0_1_1 - 0.00480165410721021*G0_1_2 - 0.00480165410720922*G0_2_0 - 0.00480165410720919*G0_2_1 + 0.00026095946234837*G0_2_2; A[355] = 0.108637424175618*G0_1_0 + 0.108637424175618*G0_1_1 + 0.0387263842124955*G0_1_2 + 0.0387263842124946*G0_2_0 + 0.0387263842124946*G0_2_1 - 0.0186912214907006*G0_2_2; A[356] = 0.0116844599266471*G0_1_0 + 0.0093945406445404*G0_1_1 + 0.0116844599266471*G0_1_2 + 0.0139743792087543*G0_2_0 + 0.0116844599266473*G0_2_1 + 0.0139743792087544*G0_2_2; A[357] = -0.0131523569023567*G0_1_0 + 6.52398655875264e-05*G0_1_1 - 0.0131523569023567*G0_1_2 - 0.0263047138047137*G0_2_0 - 0.0131523569023567*G0_2_1 - 0.0263047138047138*G0_2_2; A[358] = 0.000548014870931802*G0_1_0 + 6.52398655866833e-05*G0_1_1 + 0.000548014870931814*G0_1_2 - 0.00523223722008385*G0_2_0 + 0.000548014870931408*G0_2_1 - 0.00523223722008387*G0_2_2; A[359] = -0.0189782768992839*G0_1_0 + 0.00939454064454079*G0_1_1 - 0.0189782768992839*G0_1_2 - 0.078894569454465*G0_2_0 - 0.0189782768992837*G0_2_1 - 0.0788945694544649*G0_2_2; A[360] = 0.00228991928210658*G0_1_1 + 0.00228991928210665*G0_1_2 + 0.00228991928210696*G0_2_1 + 0.00228991928210705*G0_2_2; A[361] = 0.00178757231708622*G0_1_1 + 0.00178757231708615*G0_1_2 + 0.00178757231708629*G0_2_1 + 0.00178757231708625*G0_2_2; A[362] = 0.0017875723170862*G0_1_1 + 0.00178757231708613*G0_1_2 + 0.00178757231708633*G0_2_1 + 0.0017875723170863*G0_2_2; A[363] = 0.0022899192821068*G0_1_1 + 0.00228991928210686*G0_1_2 + 0.0022899192821068*G0_2_1 + 0.00228991928210689*G0_2_2; A[364] = 0.0540186087061083*G0_1_0 + 0.00117431758056772*G0_1_1 + 0.0149399292194434*G0_1_2 + 0.0403182369328204*G0_2_0 + 0.00123955744615503*G0_2_1 + 0.0148746893538558*G0_2_2; A[365] = -0.00939454064454107*G0_1_0 - 0.0155923278753142*G0_1_1 + 0.00949240044292055*G0_1_2 - 0.0377738821749247*G0_2_0 - 0.0188869410874628*G0_2_1 + 0.018984800885842*G0_2_2; A[366] = 0.00182671623643954*G0_1_0 - 0.0510175748891019*G0_1_1 + 0.0377738821749241*G0_1_2 - 0.082332710370903*G0_2_0 - 0.0463855444324182*G0_2_1 + 0.127087258163647*G0_2_2; A[367] = -0.108232937008977*G0_1_0 - 0.00352295274170229*G0_1_1 - 0.0338921101724919*G0_1_2 - 0.0808321934624015*G0_2_0 - 0.00649136662591462*G0_2_1 - 0.0436454700777614*G0_2_2; A[368] = 0.0777006799142205*G0_1_0 + 0.182410664181496*G0_1_1 - 0.00616516729797958*G0_1_2 + 0.167731694424401*G0_2_0 + 0.0838658472121997*G0_2_1 - 0.166948816037357*G0_2_2; A[369] = 0.146659217839772*G0_1_0 - 0.124738623002511*G0_1_1 + 0.0733296089198864*G0_1_2 + 0.0109602974186305*G0_2_0 - 0.0623693115012554*G0_2_1 + 0.132306447410613*G0_2_2; A[370] = -0.0540186087061086*G0_1_0 - 0.0528442911255407*G0_1_1 - 0.0390786794866649*G0_1_2 - 0.0403182369328202*G0_2_0 - 0.0390786794866657*G0_2_1 - 0.0254435475789647*G0_2_2; A[371] = 0.00939454064454087*G0_1_0 - 0.00619778723077316*G0_1_1 + 0.0188869410874614*G0_1_2 + 0.0377738821749243*G0_2_0 + 0.0188869410874624*G0_2_1 + 0.0567586830607663*G0_2_2; A[372] = -0.00182671623643962*G0_1_0 - 0.0528442911255415*G0_1_1 + 0.0359471659384845*G0_1_2 + 0.082332710370903*G0_2_0 + 0.0359471659384843*G0_2_1 + 0.209419968534549*G0_2_2; A[373] = 0.108232937008977*G0_1_0 + 0.104709984267274*G0_1_1 + 0.0743408268364853*G0_1_2 + 0.0808321934624011*G0_2_0 + 0.0743408268364856*G0_2_1 + 0.03718672338464*G0_2_2; A[374] = -0.0777006799142204*G0_1_0 + 0.104709984267276*G0_1_1 - 0.0838658472121997*G0_1_2 - 0.167731694424401*G0_2_0 - 0.0838658472122004*G0_2_1 - 0.334680510461758*G0_2_2; A[375] = -0.146659217839772*G0_1_0 - 0.271397840842283*G0_1_1 - 0.073329608919886*G0_1_2 - 0.0109602974186304*G0_2_0 - 0.073329608919886*G0_2_1 + 0.121346149991982*G0_2_2; A[376] = -0.00117431758056773*G0_1_1 - 0.00123955744615422*G0_1_2 - 0.00123955744615491*G0_2_1 - 0.00130479731174246*G0_2_2; A[377] = -0.0105036183595208*G0_1_1 - 0.0130805930502106*G0_1_2 - 0.0130805930502105*G0_2_1 - 0.0156575677409007*G0_2_2; A[378] = -0.00117431758056778*G0_1_1 - 0.00123955744615482*G0_1_2 - 0.00123955744615506*G0_2_1 - 0.00130479731174254*G0_2_2; A[379] = 0.0035229527417023*G0_1_1 + 0.00649136662591424*G0_1_2 + 0.00649136662591541*G0_2_1 + 0.00880738185425743*G0_2_2; A[380] = 0.00352295274170282*G0_1_1 + 0.00649136662591492*G0_1_2 + 0.00649136662591489*G0_2_1 + 0.00880738185425674*G0_2_2; A[381] = 0.124738623002511*G0_1_1 + 0.0623693115012562*G0_1_2 + 0.0623693115012553*G0_2_1 + 0.0476251018785733*G0_2_2; A[382] = -0.0150051690850301*G0_1_1 - 0.0149399292194435*G0_1_2 - 0.0149399292194434*G0_2_1 - 0.0148746893538558*G0_2_2; A[383] = -0.000652398655870863*G0_1_1 + 0.00192457603481936*G0_1_2 + 0.00192457603481875*G0_2_1 + 0.00450155072550905*G0_2_2; A[384] = -0.0150051690850303*G0_1_1 - 0.0149399292194434*G0_1_2 - 0.0149399292194431*G0_2_1 - 0.0148746893538558*G0_2_2; A[385] = -0.000652398655870448*G0_1_1 - 0.00949240044292062*G0_1_2 - 0.00949240044292039*G0_2_1 - 0.0189848008858418*G0_2_2; A[386] = -0.000652398655870539*G0_1_1 - 0.00949240044292072*G0_1_2 - 0.00949240044292081*G0_2_1 - 0.0189848008858418*G0_2_2; A[387] = -0.0150051690850306*G0_1_1 - 0.0377738821749241*G0_1_2 - 0.0377738821749245*G0_2_1 - 0.127087258163647*G0_2_2; A[388] = 0.0260959462348353*G0_1_1 + 0.0319675341376734*G0_1_2 + 0.0319675341376734*G0_2_1 + 0.0391439193522526*G0_2_2; A[389] = 0.0260959462348343*G0_1_1 + 0.0319675341376727*G0_1_2 + 0.0319675341376732*G0_2_1 + 0.0391439193522527*G0_2_2; A[390] = 0.0260959462348345*G0_1_1 + 0.0156575677409002*G0_1_2 + 0.0156575677408998*G0_2_1 + 0.185933616923199*G0_2_2; A[391] = -0.185933616923198*G0_1_1 - 0.0903572138381166*G0_1_2 - 0.0903572138381154*G0_2_1 - 0.15657567740901*G0_2_2; A[392] = -0.00480034930989791*G0_1_0 - 0.00480034930989794*G0_1_1 - 0.00480034930989794*G0_1_2 - 0.00480034930989785*G0_2_0 - 0.00480034930989788*G0_2_1 - 0.00480034930989788*G0_2_2; A[393] = 0.00480034930989783*G0_1_0 + 0.00480034930989782*G0_2_0; A[394] = 0.00480034930989787*G0_1_1 - 0.0105310191030677*G0_2_1; A[395] = 0.037257182439474*G0_1_2 - 0.0178705039816152*G0_2_2; A[396] = -0.0328352243499812*G0_1_1 - 0.00537576492437605*G0_1_2 + 0.0209159009072203*G0_2_1 - 0.0328352243499813*G0_2_2; A[397] = 0.078894569454465*G0_1_1 + 0.0189782768992835*G0_1_2 - 0.0246345732456847*G0_2_1 + 0.100717304493346*G0_2_2; A[398] = -0.108637424175618*G0_1_1 - 0.0387263842124945*G0_1_2 + 0.0263830016434184*G0_2_1 - 0.147063705006412*G0_2_2; A[399] = 0.139822079926246*G0_1_1 + 0.0699110399631223*G0_1_2 + 0.0699110399631223*G0_2_1 + 0.179096479009672*G0_2_2; A[400] = -0.0328352243499809*G0_1_0 - 0.00537576492437591*G0_1_2 - 0.0274594594256047*G0_2_0 - 0.00537576492437584*G0_2_2; A[401] = 0.0788945694544646*G0_1_0 + 0.0189782768992836*G0_1_2 + 0.0599162925551802*G0_2_0 + 0.0283728175438239*G0_2_2; A[402] = -0.108637424175618*G0_1_0 - 0.0387263842124948*G0_1_2 - 0.0699110399631224*G0_2_0 - 0.0574176057031955*G0_2_2; A[403] = 0.139822079926246*G0_1_0 + 0.0699110399631226*G0_1_2 + 0.0699110399631224*G0_2_0 + 0.089548239504836*G0_2_2; A[404] = -0.00537576492437595*G0_1_0 - 0.00537576492437593*G0_1_1 - 0.0107515298487518*G0_2_0 - 0.00537576492437581*G0_2_1; A[405] = -0.00228991928210664*G0_1_0 - 0.00228991928210687*G0_1_1 - 0.0139743792087539*G0_2_0 - 0.0116844599266474*G0_2_1; A[406] = -0.00228991928210666*G0_1_0 - 0.00228991928210639*G0_1_1 - 0.0111690649885095*G0_2_0 - 0.00887914570640242*G0_2_1; A[407] = -0.00537576492437597*G0_1_0 - 0.00537576492437618*G0_1_1 - 0.0328352243499812*G0_2_0 - 0.0274594594256053*G0_2_1; A[408] = 0.0328352243499812*G0_1_0 + 0.0328352243499813*G0_1_1 + 0.0274594594256052*G0_1_2 + 0.0274594594256048*G0_2_0 + 0.0274594594256049*G0_2_1 + 0.0220836945012288*G0_2_2; A[409] = -0.0788945694544649*G0_1_0 - 0.0788945694544652*G0_1_1 - 0.0599162925551814*G0_1_2 - 0.0599162925551807*G0_2_0 - 0.0599162925551809*G0_2_1 - 0.0315434750113564*G0_2_2; A[410] = 0.108637424175618*G0_1_0 + 0.108637424175618*G0_1_1 + 0.0699110399631235*G0_1_2 + 0.0699110399631223*G0_2_0 + 0.0699110399631224*G0_2_1 + 0.0124934342599271*G0_2_2; A[411] = -0.139822079926246*G0_1_0 - 0.139822079926246*G0_1_1 - 0.0699110399631234*G0_1_2 - 0.0699110399631223*G0_2_0 - 0.0699110399631223*G0_2_1 + 0.0196371995417135*G0_2_2; A[412] = 0.00537576492437624*G0_1_0 + 0.00537576492437616*G0_1_2 + 0.0107515298487521*G0_2_0 + 0.00537576492437613*G0_2_1 + 0.010751529848752*G0_2_2; A[413] = 0.00228991928210661*G0_1_0 + 0.00228991928210662*G0_1_2 + 0.0139743792087541*G0_2_0 + 0.00228991928210673*G0_2_1 + 0.0139743792087542*G0_2_2; A[414] = 0.00228991928210669*G0_1_0 + 0.00228991928210667*G0_1_2 + 0.011169064988509*G0_2_0 + 0.00228991928210666*G0_2_1 + 0.011169064988509*G0_2_2; A[415] = 0.00537576492437603*G0_1_0 + 0.00537576492437603*G0_1_2 + 0.0328352243499812*G0_2_0 + 0.00537576492437611*G0_2_1 + 0.0328352243499812*G0_2_2; A[416] = 0.00537576492437616*G0_1_1 + 0.00537576492437609*G0_1_2 + 0.00537576492437614*G0_2_1 + 0.00537576492437606*G0_2_2; A[417] = 0.00228991928210677*G0_1_1 + 0.0022899192821068*G0_1_2 + 0.00228991928210668*G0_2_1 + 0.0022899192821067*G0_2_2; A[418] = 0.0022899192821067*G0_1_1 + 0.00228991928210672*G0_1_2 + 0.00228991928210677*G0_2_1 + 0.00228991928210677*G0_2_2; A[419] = 0.00537576492437599*G0_1_1 + 0.00537576492437596*G0_1_2 + 0.00537576492437592*G0_2_1 + 0.00537576492437587*G0_2_2; A[420] = 0.0118736555368501*G0_1_0 + 0.0118736555368501*G0_1_1 - 0.00939454064454038*G0_1_2 + 0.0425363923627807*G0_2_0 + 0.0212681961813904*G0_2_1 - 0.0187890812890806*G0_2_2; A[421] = 0.00254435475789694*G0_1_0 + 0.00254435475789687*G0_1_1 - 0.00329461321214729*G0_1_2 + 0.0142875305635731*G0_2_0 + 0.00844856259352884*G0_2_1 - 0.0292600797158083*G0_2_2; A[422] = 0.0118736555368494*G0_1_0 + 0.0118736555368498*G0_1_1 - 0.00939454064454079*G0_1_2 + 0.0477555816097473*G0_2_0 + 0.0264873854283569*G0_2_1 - 0.0641307878721074*G0_2_2; A[423] = -0.0429604514890971*G0_1_0 - 0.0429604514890969*G0_1_1 - 0.000685018588664389*G0_1_2 - 0.0845508658008646*G0_2_0 - 0.0422754329004329*G0_2_1 + 0.0439716694056969*G0_2_2; A[424] = -0.0429604514890965*G0_1_0 - 0.0429604514890971*G0_1_1 - 0.000685018588664337*G0_1_2 - 0.0493213383838378*G0_2_0 - 0.00704590548340494*G0_2_1 + 0.127315597693202*G0_2_2; A[425] = 0.124738623002511*G0_1_0 + 0.124738623002511*G0_1_1 + 0.0284445813959699*G0_1_2 + 0.192588083213081*G0_2_0 + 0.0962940416065406*G0_2_1 - 0.0644569872000428*G0_2_2; A[426] = -0.0118736555368507*G0_1_0 - 0.021268196181391*G0_1_2 - 0.0425363923627814*G0_2_0 - 0.0212681961813908*G0_2_1 - 0.0613254736518623*G0_2_2; A[427] = -0.00254435475789594*G0_1_0 - 0.00583896797004371*G0_1_2 - 0.014287530563572*G0_2_0 - 0.00583896797004368*G0_2_1 - 0.0435476102793807*G0_2_2; A[428] = -0.0118736555368494*G0_1_0 - 0.0212681961813902*G0_1_2 - 0.0477555816097474*G0_2_0 - 0.0212681961813907*G0_2_1 - 0.111886369481854*G0_2_2; A[429] = 0.0429604514890964*G0_1_0 + 0.0422754329004327*G0_1_2 + 0.0845508658008641*G0_2_0 + 0.0422754329004326*G0_2_1 + 0.128522535206562*G0_2_2; A[430] = 0.0429604514890967*G0_1_0 + 0.0422754329004318*G0_1_2 + 0.0493213383838381*G0_2_0 + 0.0422754329004328*G0_2_1 + 0.176636936077039*G0_2_2; A[431] = -0.124738623002511*G0_1_0 - 0.0962940416065403*G0_1_2 - 0.192588083213081*G0_2_0 - 0.0962940416065408*G0_2_1 - 0.257045070413124*G0_2_2; A[432] = -0.0118736555368505*G0_1_1 - 0.0212681961813909*G0_1_2 - 0.0212681961813909*G0_2_1 - 0.0306627368259311*G0_2_2; A[433] = -0.00254435475789565*G0_1_1 - 0.00583896797004417*G0_1_2 - 0.00583896797004374*G0_2_1 - 0.00913358118219216*G0_2_2; A[434] = -0.0118736555368502*G0_1_1 - 0.0212681961813904*G0_1_2 - 0.0212681961813906*G0_2_1 - 0.0306627368259307*G0_2_2; A[435] = 0.0429604514890964*G0_1_1 + 0.0422754329004331*G0_1_2 + 0.0422754329004314*G0_2_1 + 0.0642612676032809*G0_2_2; A[436] = 0.0429604514890967*G0_1_1 + 0.0422754329004322*G0_1_2 + 0.0422754329004329*G0_2_1 + 0.064261267603281*G0_2_2; A[437] = -0.124738623002511*G0_1_1 - 0.0962940416065407*G0_1_2 - 0.0962940416065405*G0_2_1 - 0.128522535206562*G0_2_2; A[438] = 0.00939454064454008*G0_1_2 + 0.00939454064454026*G0_2_1 + 0.0187890812890805*G0_2_2; A[439] = 0.00329461321214829*G0_1_2 + 0.00329461321214827*G0_2_1 + 0.00658922642429669*G0_2_2; A[440] = 0.00939454064454027*G0_1_2 + 0.00939454064454035*G0_2_1 + 0.0187890812890805*G0_2_2; A[441] = 0.003294613212148*G0_1_2 + 0.00329461321214812*G0_2_1 + 0.029260079715809*G0_2_2; A[442] = 0.00329461321214745*G0_1_2 + 0.00329461321214759*G0_2_1 + 0.0292600797158082*G0_2_2; A[443] = 0.00939454064454076*G0_1_2 + 0.00939454064454078*G0_2_1 + 0.0641307878721075*G0_2_2; A[444] = -0.00260959462348392*G0_1_2 - 0.00260959462348336*G0_2_1 - 0.0505608958299934*G0_2_2; A[445] = -0.00260959462348377*G0_1_2 - 0.0026095946234849*G0_2_1 - 0.0505608958299935*G0_2_2; A[446] = -0.00260959462348371*G0_1_2 - 0.00260959462348277*G0_2_1 - 0.156575677409011*G0_2_2; A[447] = -0.0352295274170262*G0_1_2 - 0.0352295274170264*G0_2_1 + 0.0962288017409553*G0_2_2; A[448] = -0.00480034930989789*G0_0_0 - 0.00480034930989787*G0_0_1 - 0.00480034930989791*G0_0_2 - 0.00480034930989779*G0_2_0 - 0.00480034930989778*G0_2_1 - 0.00480034930989781*G0_2_2; A[449] = -0.017870503981615*G0_0_0 + 0.0372571824394734*G0_2_0; A[450] = 0.00480034930989787*G0_0_1 + 0.00480034930989789*G0_2_1; A[451] = -0.0105310191030677*G0_0_2 + 0.00480034930989777*G0_2_2; A[452] = -0.0107515298487521*G0_0_1 - 0.00537576492437613*G0_0_2 - 0.0053757649243761*G0_2_1 - 0.00537576492437598*G0_2_2; A[453] = -0.013974379208754*G0_0_1 - 0.011684459926647*G0_0_2 - 0.00228991928210673*G0_2_1 - 0.00228991928210677*G0_2_2; A[454] = -0.0111690649885092*G0_0_1 - 0.00887914570640276*G0_0_2 - 0.00228991928210689*G0_2_1 - 0.00228991928210686*G0_2_2; A[455] = -0.0328352243499809*G0_0_1 - 0.0274594594256047*G0_0_2 - 0.00537576492437591*G0_2_1 - 0.00537576492437584*G0_2_2; A[456] = 0.179096479009672*G0_0_0 + 0.0699110399631226*G0_0_2 + 0.0699110399631226*G0_2_0 + 0.139822079926244*G0_2_2; A[457] = -0.147063705006412*G0_0_0 + 0.0263830016434181*G0_0_2 - 0.0387263842124949*G0_2_0 - 0.108637424175617*G0_2_2; A[458] = 0.100717304493345*G0_0_0 - 0.0246345732456843*G0_0_2 + 0.0189782768992836*G0_2_0 + 0.078894569454464*G0_2_2; A[459] = -0.0328352243499811*G0_0_0 + 0.0209159009072203*G0_0_2 - 0.00537576492437599*G0_2_0 - 0.0328352243499807*G0_2_2; A[460] = 0.0895482395048357*G0_0_0 + 0.0699110399631227*G0_0_1 + 0.0699110399631223*G0_2_0 + 0.139822079926245*G0_2_1; A[461] = -0.0574176057031954*G0_0_0 - 0.069911039963123*G0_0_1 - 0.0387263842124948*G0_2_0 - 0.108637424175618*G0_2_1; A[462] = 0.028372817543824*G0_0_0 + 0.0599162925551811*G0_0_1 + 0.0189782768992835*G0_2_0 + 0.0788945694544648*G0_2_1; A[463] = -0.00537576492437616*G0_0_0 - 0.0274594594256054*G0_0_1 - 0.00537576492437598*G0_2_0 - 0.0328352243499812*G0_2_1; A[464] = 0.0107515298487521*G0_0_0 + 0.010751529848752*G0_0_1 + 0.0053757649243761*G0_0_2 + 0.0053757649243757*G0_2_0 + 0.00537576492437567*G0_2_1; A[465] = 0.013974379208754*G0_0_0 + 0.0139743792087542*G0_0_1 + 0.00228991928210687*G0_0_2 + 0.00228991928210729*G0_2_0 + 0.00228991928210742*G0_2_1; A[466] = 0.0111690649885092*G0_0_0 + 0.0111690649885091*G0_0_1 + 0.00228991928210653*G0_0_2 + 0.00228991928210633*G0_2_0 + 0.0022899192821063*G0_2_1; A[467] = 0.032835224349981*G0_0_0 + 0.032835224349981*G0_0_1 + 0.00537576492437623*G0_0_2 + 0.00537576492437597*G0_2_0 + 0.00537576492437596*G0_2_1; A[468] = 0.00537576492437617*G0_0_0 + 0.00537576492437613*G0_0_2 + 0.00537576492437599*G0_2_0 + 0.00537576492437594*G0_2_2; A[469] = 0.00228991928210675*G0_0_0 + 0.00228991928210669*G0_0_2 + 0.00228991928210679*G0_2_0 + 0.00228991928210682*G0_2_2; A[470] = 0.00228991928210635*G0_0_0 + 0.00228991928210643*G0_0_2 + 0.00228991928210669*G0_2_0 + 0.00228991928210672*G0_2_2; A[471] = 0.00537576492437616*G0_0_0 + 0.00537576492437615*G0_0_2 + 0.00537576492437599*G0_2_0 + 0.00537576492437598*G0_2_2; A[472] = 0.0220836945012289*G0_0_0 + 0.0274594594256049*G0_0_1 + 0.0274594594256048*G0_0_2 + 0.0274594594256047*G0_2_0 + 0.0328352243499806*G0_2_1 + 0.0328352243499805*G0_2_2; A[473] = -0.0315434750113565*G0_0_0 - 0.0599162925551806*G0_0_1 - 0.0599162925551806*G0_0_2 - 0.0599162925551802*G0_2_0 - 0.0788945694544636*G0_2_1 - 0.0788945694544637*G0_2_2; A[474] = 0.0124934342599271*G0_0_0 + 0.0699110399631224*G0_0_1 + 0.0699110399631224*G0_0_2 + 0.0699110399631219*G0_2_0 + 0.108637424175617*G0_2_1 + 0.108637424175617*G0_2_2; A[475] = 0.0196371995417133*G0_0_0 - 0.0699110399631226*G0_0_1 - 0.0699110399631226*G0_0_2 - 0.069911039963122*G0_2_0 - 0.139822079926244*G0_2_1 - 0.139822079926244*G0_2_2; A[476] = -0.0644569872000423*G0_0_0 + 0.192588083213081*G0_0_1 + 0.0962940416065404*G0_0_2 + 0.0284445813959697*G0_2_0 + 0.124738623002511*G0_2_1 + 0.12473862300251*G0_2_2; A[477] = 0.0439716694056962*G0_0_0 - 0.0845508658008652*G0_0_1 - 0.0422754329004329*G0_0_2 - 0.000685018588664345*G0_2_0 - 0.0429604514890971*G0_2_1 - 0.0429604514890969*G0_2_2; A[478] = -0.018789081289081*G0_0_0 + 0.0425363923627806*G0_0_1 + 0.0212681961813897*G0_0_2 - 0.00939454064454079*G0_2_0 + 0.0118736555368498*G0_2_1 + 0.0118736555368495*G0_2_2; A[479] = 0.127315597693201*G0_0_0 - 0.0493213383838382*G0_0_1 - 0.00704590548340516*G0_0_2 - 0.000685018588664266*G0_2_0 - 0.042960451489097*G0_2_1 - 0.0429604514890966*G0_2_2; A[480] = -0.0292600797158088*G0_0_0 + 0.0142875305635723*G0_0_1 + 0.00844856259352799*G0_0_2 - 0.00329461321214798*G0_2_0 + 0.00254435475789672*G0_2_1 + 0.00254435475789664*G0_2_2; A[481] = -0.0641307878721064*G0_0_0 + 0.0477555816097477*G0_0_1 + 0.0264873854283572*G0_0_2 - 0.00939454064454034*G0_2_0 + 0.01187365553685*G0_2_1 + 0.01187365553685*G0_2_2; A[482] = 0.0187890812890808*G0_0_0 + 0.00939454064454005*G0_0_2 + 0.00939454064454063*G0_2_0; A[483] = 0.00658922642429623*G0_0_0 + 0.00329461321214883*G0_0_2 + 0.00329461321214809*G0_2_0; A[484] = 0.0187890812890811*G0_0_0 + 0.00939454064454047*G0_0_2 + 0.00939454064454076*G0_2_0; A[485] = 0.0292600797158092*G0_0_0 + 0.00329461321214836*G0_0_2 + 0.00329461321214781*G0_2_0; A[486] = 0.0292600797158086*G0_0_0 + 0.00329461321214731*G0_0_2 + 0.00329461321214803*G0_2_0; A[487] = 0.0641307878721064*G0_0_0 + 0.00939454064454016*G0_0_2 + 0.0093945406445403*G0_2_0; A[488] = -0.0613254736518619*G0_0_0 - 0.0425363923627806*G0_0_1 - 0.0212681961813906*G0_0_2 - 0.0212681961813901*G0_2_0 - 0.0118736555368496*G0_2_1; A[489] = 0.128522535206561*G0_0_0 + 0.0845508658008638*G0_0_1 + 0.0422754329004321*G0_0_2 + 0.0422754329004322*G0_2_0 + 0.0429604514890965*G0_2_1; A[490] = -0.257045070413123*G0_0_0 - 0.192588083213081*G0_0_1 - 0.0962940416065406*G0_0_2 - 0.0962940416065403*G0_2_0 - 0.12473862300251*G0_2_1; A[491] = -0.043547610279381*G0_0_0 - 0.0142875305635726*G0_0_1 - 0.00583896797004438*G0_0_2 - 0.00583896797004472*G0_2_0 - 0.0025443547578963*G0_2_1; A[492] = 0.176636936077039*G0_0_0 + 0.0493213383838383*G0_0_1 + 0.0422754329004332*G0_0_2 + 0.0422754329004323*G0_2_0 + 0.0429604514890969*G0_2_1; A[493] = -0.111886369481854*G0_0_0 - 0.0477555816097478*G0_0_1 - 0.0212681961813905*G0_0_2 - 0.02126819618139*G0_2_0 - 0.01187365553685*G0_2_1; A[494] = -0.0306627368259313*G0_0_0 - 0.0212681961813905*G0_0_2 - 0.0212681961813906*G0_2_0 - 0.01187365553685*G0_2_2; A[495] = 0.0642612676032809*G0_0_0 + 0.0422754329004318*G0_0_2 + 0.0422754329004327*G0_2_0 + 0.0429604514890964*G0_2_2; A[496] = -0.128522535206561*G0_0_0 - 0.0962940416065401*G0_0_2 - 0.0962940416065404*G0_2_0 - 0.124738623002509*G0_2_2; A[497] = -0.0091335811821921*G0_0_0 - 0.00583896797004459*G0_0_2 - 0.00583896797004423*G0_2_0 - 0.00254435475789626*G0_2_2; A[498] = 0.0642612676032806*G0_0_0 + 0.0422754329004329*G0_0_2 + 0.0422754329004322*G0_2_0 + 0.0429604514890967*G0_2_2; A[499] = -0.0306627368259304*G0_0_0 - 0.0212681961813899*G0_0_2 - 0.0212681961813902*G0_2_0 - 0.0118736555368495*G0_2_2; A[500] = -0.0505608958299932*G0_0_0 - 0.00260959462348316*G0_0_2 - 0.0026095946234837*G0_2_0; A[501] = 0.0962288017409548*G0_0_0 - 0.0352295274170272*G0_0_2 - 0.0352295274170266*G0_2_0; A[502] = -0.0505608958299922*G0_0_0 - 0.00260959462348322*G0_0_2 - 0.00260959462348373*G0_2_0; A[503] = -0.15657567740901*G0_0_0 - 0.0026095946234834*G0_0_2 - 0.0026095946234836*G0_2_0; A[504] = -0.00336507226698191*G0_0_0 - 0.00336507226698194*G0_0_1 - 0.00336507226698191*G0_0_2 - 0.00336507226698209*G0_2_0 - 0.00336507226698211*G0_2_1 - 0.00336507226698208*G0_2_2; A[505] = 0.0214691349673986*G0_0_0 - 0.0336585514536898*G0_2_0; A[506] = 0.00336507226698195*G0_0_1 + 0.00336507226698191*G0_2_1; A[507] = 0.0232632312710439*G0_0_2 - 0.0155544887532732*G0_2_2; A[508] = -0.013974379208754*G0_0_1 - 0.00228991928210662*G0_0_2 - 0.0116844599266471*G0_2_1 - 0.00228991928210672*G0_2_2; A[509] = 0.0263047138047135*G0_0_1 + 0.0131523569023563*G0_0_2 + 0.0131523569023565*G0_2_1 + 0.0132175967679437*G0_2_2; A[510] = 0.00523223722008409*G0_0_1 + 0.00578025209101653*G0_0_2 - 0.00054801487093144*G0_2_1 - 0.000482775005344011*G0_2_2; A[511] = 0.0788945694544646*G0_0_1 + 0.0599162925551802*G0_0_2 + 0.0189782768992836*G0_2_1 + 0.0283728175438239*G0_2_2; A[512] = -0.147063705006412*G0_0_0 - 0.0387263842124949*G0_0_2 + 0.026383001643418*G0_2_0 - 0.108637424175617*G0_2_2; A[513] = 0.304226541205705*G0_0_0 + 0.0781312630270954*G0_0_2 + 0.0781312630270954*G0_2_0 + 0.281001149056701*G0_2_2; A[514] = -0.204187731314466*G0_0_0 + 0.015305272466731*G0_0_2 - 0.0364951808094164*G0_2_0 - 0.204187731314465*G0_2_2; A[515] = 0.0788945694544649*G0_0_0 - 0.0246345732456845*G0_0_2 + 0.0189782768992837*G0_2_0 + 0.100717304493345*G0_2_2; A[516] = -0.0574176057031952*G0_0_0 - 0.038726384212495*G0_0_1 - 0.0699110399631224*G0_2_0 - 0.108637424175617*G0_2_1; A[517] = 0.00506261356955806*G0_0_0 + 0.00480165410720992*G0_0_1 + 0.00480165410720966*G0_2_0 + 0.00960330821441922*G0_2_1; A[518] = -0.000482775005344125*G0_0_0 + 0.00578025209101597*G0_0_1 - 0.000548014870931273*G0_2_0 + 0.00523223722008425*G0_2_1; A[519] = -0.00228991928210663*G0_0_0 - 0.00887914570640222*G0_0_1 - 0.00228991928210674*G0_2_0 - 0.0111690649885089*G0_2_1; A[520] = 0.013974379208754*G0_0_0 + 0.0139743792087541*G0_0_1 + 0.0116844599266473*G0_0_2 + 0.0116844599266477*G0_2_0 + 0.0116844599266476*G0_2_1 + 0.00939454064454107*G0_2_2; A[521] = -0.0263047138047135*G0_0_0 - 0.0263047138047139*G0_0_1 - 0.0131523569023571*G0_0_2 - 0.0131523569023574*G0_2_0 - 0.0131523569023575*G0_2_1 + 6.52398655860218e-05*G0_2_2; A[522] = -0.0052322372200842*G0_0_0 - 0.00523223722008409*G0_0_1 + 0.00054801487093217*G0_0_2 + 0.000548014870932135*G0_2_0 + 0.000548014870932114*G0_2_1 + 6.52398655882619e-05*G0_2_2; A[523] = -0.0788945694544647*G0_0_0 - 0.0788945694544648*G0_0_1 - 0.0189782768992843*G0_0_2 - 0.0189782768992836*G0_2_0 - 0.0189782768992836*G0_2_1 + 0.00939454064453997*G0_2_2; A[524] = 0.00228991928210677*G0_0_0 + 0.00228991928210678*G0_0_2 + 0.00228991928210689*G0_2_0 + 0.00228991928210694*G0_2_2; A[525] = 0.0017875723170862*G0_0_0 + 0.00178757231708614*G0_0_2 + 0.00178757231708623*G0_2_0 + 0.00178757231708606*G0_2_2; A[526] = 0.00178757231708649*G0_0_0 + 0.00178757231708653*G0_0_2 + 0.00178757231708608*G0_2_0 + 0.00178757231708617*G0_2_2; A[527] = 0.00228991928210668*G0_0_0 + 0.00228991928210662*G0_0_2 + 0.00228991928210676*G0_2_0 + 0.00228991928210672*G0_2_2; A[528] = 0.00658922642429576*G0_0_0 + 0.00887914570640259*G0_0_1 + 0.00887914570640258*G0_0_2 + 0.00887914570640284*G0_2_0 + 0.0111690649885096*G0_2_1 + 0.0111690649885096*G0_2_2; A[529] = -0.00626302709636023*G0_0_0 - 0.005780252091016*G0_0_1 - 0.00578025209101598*G0_0_2 - 0.0057802520910164*G0_2_0 - 0.00523223722008497*G0_2_1 - 0.00523223722008483*G0_2_2; A[530] = 0.000260959462348105*G0_0_0 - 0.00480165410720968*G0_0_1 - 0.00480165410720969*G0_0_2 - 0.00480165410720908*G0_2_0 - 0.00960330821441859*G0_2_1 - 0.00960330821441865*G0_2_2; A[531] = -0.0186912214907004*G0_0_0 + 0.0387263842124951*G0_0_1 + 0.0387263842124951*G0_0_2 + 0.0387263842124945*G0_2_0 + 0.108637424175617*G0_2_1 + 0.108637424175617*G0_2_2; A[532] = 0.132306447410613*G0_0_0 + 0.0109602974186305*G0_0_1 - 0.0623693115012549*G0_0_2 + 0.0733296089198867*G0_2_0 + 0.146659217839772*G0_2_1 - 0.12473862300251*G0_2_2; A[533] = -0.0436454700777609*G0_0_0 - 0.0808321934624006*G0_0_1 - 0.00649136662591436*G0_0_2 - 0.0338921101724924*G0_2_0 - 0.108232937008977*G0_2_1 - 0.00352295274170252*G0_2_2; A[534] = 0.0148746893538553*G0_0_0 + 0.0403182369328194*G0_0_1 + 0.00123955744615501*G0_0_2 + 0.0149399292194428*G0_2_0 + 0.0540186087061075*G0_2_1 + 0.0011743175805679*G0_2_2; A[535] = -0.166948816037356*G0_0_0 + 0.167731694424401*G0_0_1 + 0.0838658472121997*G0_0_2 - 0.00616516729797981*G0_2_0 + 0.077700679914221*G0_2_1 + 0.182410664181495*G0_2_2; A[536] = 0.0189848008858428*G0_0_0 - 0.0377738821749234*G0_0_1 - 0.0188869410874624*G0_0_2 + 0.00949240044292135*G0_2_0 - 0.00939454064454096*G0_2_1 - 0.015592327875315*G0_2_2; A[537] = 0.127087258163646*G0_0_0 - 0.082332710370904*G0_0_1 - 0.0463855444324181*G0_0_2 + 0.037773882174923*G0_2_0 + 0.00182671623643801*G0_2_1 - 0.0510175748891019*G0_2_2; A[538] = -0.0148746893538556*G0_0_0 - 0.0149399292194425*G0_0_2 - 0.0149399292194431*G0_2_0 - 0.0150051690850305*G0_2_2; A[539] = 0.00450155072550939*G0_0_0 + 0.00192457603481873*G0_0_2 + 0.00192457603481923*G0_2_0 - 0.000652398655870831*G0_2_2; A[540] = -0.0148746893538554*G0_0_0 - 0.0149399292194427*G0_0_2 - 0.0149399292194429*G0_2_0 - 0.0150051690850297*G0_2_2; A[541] = -0.0189848008858435*G0_0_0 - 0.00949240044292223*G0_0_2 - 0.00949240044292147*G0_2_0 - 0.000652398655870446*G0_2_2; A[542] = -0.0189848008858426*G0_0_0 - 0.00949240044292155*G0_0_2 - 0.0094924004429212*G0_2_0 - 0.000652398655871597*G0_2_2; A[543] = -0.127087258163646*G0_0_0 - 0.0377738821749223*G0_0_2 - 0.037773882174923*G0_2_0 - 0.0150051690850298*G0_2_2; A[544] = -0.0254435475789642*G0_0_0 - 0.04031823693282*G0_0_1 - 0.0390786794866649*G0_0_2 - 0.0390786794866656*G0_2_0 - 0.0540186087061082*G0_2_1 - 0.0528442911255406*G0_2_2; A[545] = 0.0371867233846397*G0_0_0 + 0.0808321934624014*G0_0_1 + 0.0743408268364859*G0_0_2 + 0.0743408268364856*G0_2_0 + 0.108232937008977*G0_2_1 + 0.104709984267274*G0_2_2; A[546] = 0.121346149991982*G0_0_0 - 0.0109602974186309*G0_0_1 - 0.0733296089198858*G0_0_2 - 0.0733296089198859*G0_2_0 - 0.146659217839773*G0_2_1 - 0.271397840842282*G0_2_2; A[547] = 0.0567586830607662*G0_0_0 + 0.0377738821749232*G0_0_1 + 0.0188869410874616*G0_0_2 + 0.018886941087462*G0_2_0 + 0.00939454064453974*G0_2_1 - 0.00619778723077304*G0_2_2; A[548] = -0.334680510461758*G0_0_0 - 0.167731694424401*G0_0_1 - 0.0838658472122009*G0_0_2 - 0.0838658472121999*G0_2_0 - 0.0777006799142208*G0_2_1 + 0.104709984267276*G0_2_2; A[549] = 0.20941996853455*G0_0_0 + 0.0823327103709039*G0_0_1 + 0.0359471659384853*G0_0_2 + 0.0359471659384842*G0_2_0 - 0.00182671623643827*G0_2_1 - 0.0528442911255406*G0_2_2; A[550] = -0.00130479731174193*G0_0_0 - 0.00123955744615464*G0_0_2 - 0.00123955744615479*G0_2_0 - 0.00117431758056741*G0_2_2; A[551] = 0.00880738185425719*G0_0_0 + 0.00649136662591556*G0_0_2 + 0.00649136662591522*G0_2_0 + 0.00352295274170301*G0_2_2; A[552] = 0.0476251018785733*G0_0_0 + 0.0623693115012547*G0_0_2 + 0.0623693115012551*G0_2_0 + 0.124738623002509*G0_2_2; A[553] = -0.0156575677409007*G0_0_0 - 0.0130805930502104*G0_0_2 - 0.0130805930502108*G0_2_0 - 0.010503618359521*G0_2_2; A[554] = 0.00880738185425659*G0_0_0 + 0.00649136662591446*G0_0_2 + 0.00649136662591491*G0_2_0 + 0.00352295274170296*G0_2_2; A[555] = -0.00130479731174234*G0_0_0 - 0.00123955744615484*G0_0_2 - 0.00123955744615482*G0_2_0 - 0.00117431758056794*G0_2_2; A[556] = 0.039143919352252*G0_0_0 + 0.031967534137672*G0_0_2 + 0.0319675341376721*G0_2_0 + 0.0260959462348334*G0_2_2; A[557] = -0.15657567740901*G0_0_0 - 0.0903572138381148*G0_0_2 - 0.0903572138381158*G0_2_0 - 0.185933616923198*G0_2_2; A[558] = 0.0391439193522513*G0_0_0 + 0.0319675341376726*G0_0_2 + 0.0319675341376732*G0_2_0 + 0.0260959462348359*G0_2_2; A[559] = 0.1859336169232*G0_0_0 + 0.0156575677409009*G0_0_2 + 0.0156575677409011*G0_2_0 + 0.0260959462348358*G0_2_2; A[560] = -0.00336507226698208*G0_0_0 - 0.00336507226698207*G0_0_1 - 0.00336507226698206*G0_0_2 - 0.00336507226698189*G0_2_0 - 0.0033650722669819*G0_2_1 - 0.00336507226698191*G0_2_2; A[561] = -0.0155544887532733*G0_0_0 + 0.0232632312710434*G0_2_0; A[562] = 0.00336507226698199*G0_0_1 + 0.00336507226698204*G0_2_1; A[563] = -0.0336585514536903*G0_0_2 + 0.0214691349673987*G0_2_2; A[564] = -0.0111690649885093*G0_0_1 - 0.0022899192821068*G0_0_2 - 0.00887914570640264*G0_2_1 - 0.00228991928210676*G0_2_2; A[565] = 0.00523223722008405*G0_0_1 - 0.000548014870931451*G0_0_2 + 0.00578025209101603*G0_2_1 - 0.00048277500534434*G0_2_2; A[566] = 0.00960330821441959*G0_0_1 + 0.00480165410720929*G0_0_2 + 0.00480165410720959*G0_2_1 + 0.00506261356955782*G0_2_2; A[567] = -0.108637424175618*G0_0_1 - 0.0699110399631224*G0_0_2 - 0.0387263842124948*G0_2_1 - 0.0574176057031954*G0_2_2; A[568] = 0.100717304493345*G0_0_0 + 0.0189782768992836*G0_0_2 - 0.0246345732456843*G0_2_0 + 0.078894569454464*G0_2_2; A[569] = -0.204187731314466*G0_0_0 - 0.0364951808094164*G0_0_2 + 0.015305272466731*G0_2_0 - 0.204187731314465*G0_2_2; A[570] = 0.281001149056703*G0_0_0 + 0.0781312630270955*G0_0_2 + 0.0781312630270955*G0_2_0 + 0.304226541205705*G0_2_2; A[571] = -0.108637424175618*G0_0_0 + 0.0263830016434185*G0_0_2 - 0.0387263842124948*G0_2_0 - 0.147063705006412*G0_2_2; A[572] = 0.0283728175438238*G0_0_0 + 0.0189782768992836*G0_0_1 + 0.0599162925551804*G0_2_0 + 0.0788945694544641*G0_2_1; A[573] = -0.000482775005344368*G0_0_0 - 0.000548014870931732*G0_0_1 + 0.00578025209101615*G0_2_0 + 0.00523223722008436*G0_2_1; A[574] = 0.0132175967679437*G0_0_0 + 0.0131523569023569*G0_0_1 + 0.0131523569023565*G0_2_0 + 0.0263047138047139*G0_2_1; A[575] = -0.00228991928210674*G0_0_0 - 0.0116844599266475*G0_0_1 - 0.00228991928210668*G0_2_0 - 0.0139743792087544*G0_2_1; A[576] = 0.0111690649885095*G0_0_0 + 0.0111690649885094*G0_0_1 + 0.00887914570640277*G0_0_2 + 0.00887914570640245*G0_2_0 + 0.00887914570640247*G0_2_1 + 0.00658922642429554*G0_2_2; A[577] = -0.00523223722008457*G0_0_0 - 0.00523223722008426*G0_0_1 - 0.00578025209101601*G0_0_2 - 0.00578025209101566*G0_2_0 - 0.00578025209101558*G0_2_1 - 0.00626302709635984*G0_2_2; A[578] = -0.0096033082144192*G0_0_0 - 0.00960330821441933*G0_0_1 - 0.00480165410720987*G0_0_2 - 0.00480165410720982*G0_2_0 - 0.00480165410720983*G0_2_1 + 0.000260959462347796*G0_2_2; A[579] = 0.108637424175618*G0_0_0 + 0.108637424175618*G0_0_1 + 0.0387263842124954*G0_0_2 + 0.0387263842124948*G0_2_0 + 0.0387263842124948*G0_2_1 - 0.0186912214907003*G0_2_2; A[580] = 0.00228991928210676*G0_0_0 + 0.00228991928210684*G0_0_2 + 0.00228991928210676*G0_2_0 + 0.00228991928210678*G0_2_2; A[581] = 0.00178757231708622*G0_0_0 + 0.0017875723170862*G0_0_2 + 0.00178757231708596*G0_2_0 + 0.00178757231708605*G0_2_2; A[582] = 0.00178757231708609*G0_0_0 + 0.0017875723170861*G0_0_2 + 0.00178757231708641*G0_2_0 + 0.00178757231708639*G0_2_2; A[583] = 0.00228991928210673*G0_0_0 + 0.00228991928210674*G0_0_2 + 0.00228991928210668*G0_2_0 + 0.00228991928210667*G0_2_2; A[584] = 0.0093945406445407*G0_0_0 + 0.0116844599266473*G0_0_1 + 0.0116844599266474*G0_0_2 + 0.0116844599266471*G0_2_0 + 0.0139743792087539*G0_2_1 + 0.0139743792087539*G0_2_2; A[585] = 6.52398655867614e-05*G0_0_0 - 0.0131523569023568*G0_0_1 - 0.0131523569023569*G0_0_2 - 0.0131523569023565*G0_2_0 - 0.0263047138047132*G0_2_1 - 0.0263047138047134*G0_2_2; A[586] = 6.52398655876989e-05*G0_0_0 + 0.000548014870931609*G0_0_1 + 0.000548014870931627*G0_0_2 + 0.000548014870931454*G0_2_0 - 0.00523223722008497*G0_2_1 - 0.00523223722008488*G0_2_2; A[587] = 0.00939454064454014*G0_0_0 - 0.0189782768992837*G0_0_1 - 0.0189782768992836*G0_0_2 - 0.0189782768992835*G0_2_0 - 0.0788945694544641*G0_2_1 - 0.0788945694544641*G0_2_2; A[588] = -0.0510175748891027*G0_0_0 + 0.00182671623643804*G0_0_1 + 0.0377738821749225*G0_0_2 - 0.04638554443242*G0_2_0 - 0.0823327103709044*G0_2_1 + 0.127087258163645*G0_2_2; A[589] = -0.015592327875314*G0_0_0 - 0.00939454064454103*G0_0_1 + 0.00949240044292105*G0_0_2 - 0.0188869410874615*G0_2_0 - 0.0377738821749243*G0_2_1 + 0.0189848008858424*G0_2_2; A[590] = 0.00117431758056766*G0_0_0 + 0.0540186087061083*G0_0_1 + 0.0149399292194429*G0_0_2 + 0.00123955744615485*G0_2_0 + 0.0403182369328204*G0_2_1 + 0.0148746893538558*G0_2_2; A[591] = 0.182410664181496*G0_0_0 + 0.0777006799142213*G0_0_1 - 0.00616516729797903*G0_0_2 + 0.0838658472122011*G0_2_0 + 0.167731694424401*G0_2_1 - 0.166948816037356*G0_2_2; A[592] = -0.00352295274170358*G0_0_0 - 0.108232937008978*G0_0_1 - 0.0338921101724924*G0_0_2 - 0.00649136662591524*G0_2_0 - 0.0808321934624003*G0_2_1 - 0.0436454700777611*G0_2_2; A[593] = -0.12473862300251*G0_0_0 + 0.146659217839772*G0_0_1 + 0.0733296089198862*G0_0_2 - 0.0623693115012546*G0_2_0 + 0.0109602974186312*G0_2_1 + 0.132306447410614*G0_2_2; A[594] = -0.0011743175805672*G0_0_0 - 0.00123955744615471*G0_0_2 - 0.00123955744615452*G0_2_0 - 0.0013047973117414*G0_2_2; A[595] = -0.0105036183595209*G0_0_0 - 0.0130805930502107*G0_0_2 - 0.0130805930502105*G0_2_0 - 0.0156575677409005*G0_2_2; A[596] = -0.00117431758056757*G0_0_0 - 0.00123955744615444*G0_0_2 - 0.00123955744615479*G0_2_0 - 0.00130479731174191*G0_2_2; A[597] = 0.00352295274170329*G0_0_0 + 0.00649136662591566*G0_0_2 + 0.00649136662591557*G0_2_0 + 0.0088073818542562*G0_2_2; A[598] = 0.00352295274170329*G0_0_0 + 0.00649136662591481*G0_0_2 + 0.00649136662591504*G0_2_0 + 0.00880738185425644*G0_2_2; A[599] = 0.124738623002511*G0_0_0 + 0.062369311501255*G0_0_2 + 0.0623693115012548*G0_2_0 + 0.0476251018785741*G0_2_2; A[600] = -0.0528442911255405*G0_0_0 - 0.0540186087061078*G0_0_1 - 0.0390786794866654*G0_0_2 - 0.0390786794866649*G0_2_0 - 0.0403182369328198*G0_2_1 - 0.025443547578964*G0_2_2; A[601] = -0.00619778723077383*G0_0_0 + 0.00939454064453962*G0_0_1 + 0.0188869410874616*G0_0_2 + 0.0188869410874615*G0_2_0 + 0.0377738821749233*G0_2_1 + 0.0567586830607666*G0_2_2; A[602] = -0.0528442911255401*G0_0_0 - 0.00182671623643783*G0_0_1 + 0.0359471659384847*G0_0_2 + 0.0359471659384854*G0_2_0 + 0.0823327103709049*G0_2_1 + 0.20941996853455*G0_2_2; A[603] = 0.104709984267275*G0_0_0 + 0.108232937008978*G0_0_1 + 0.074340826836486*G0_0_2 + 0.0743408268364858*G0_2_0 + 0.0808321934624019*G0_2_1 + 0.0371867233846393*G0_2_2; A[604] = 0.104709984267275*G0_0_0 - 0.0777006799142211*G0_0_1 - 0.0838658472122003*G0_0_2 - 0.0838658472122012*G0_2_0 - 0.167731694424401*G0_2_1 - 0.334680510461758*G0_2_2; A[605] = -0.271397840842283*G0_0_0 - 0.146659217839772*G0_0_1 - 0.0733296089198865*G0_0_2 - 0.0733296089198856*G0_2_0 - 0.0109602974186312*G0_2_1 + 0.121346149991982*G0_2_2; A[606] = -0.0150051690850297*G0_0_0 - 0.0149399292194424*G0_0_2 - 0.0149399292194428*G0_2_0 - 0.0148746893538558*G0_2_2; A[607] = -0.000652398655871681*G0_0_0 - 0.00949240044292189*G0_0_2 - 0.00949240044292167*G0_2_0 - 0.0189848008858434*G0_2_2; A[608] = -0.0150051690850292*G0_0_0 - 0.0377738821749226*G0_0_2 - 0.0377738821749228*G0_2_0 - 0.127087258163644*G0_2_2; A[609] = -0.000652398655870874*G0_0_0 + 0.00192457603481922*G0_0_2 + 0.00192457603481911*G0_2_0 + 0.00450155072550924*G0_2_2; A[610] = -0.000652398655871126*G0_0_0 - 0.00949240044292108*G0_0_2 - 0.00949240044292125*G0_2_0 - 0.0189848008858427*G0_2_2; A[611] = -0.0150051690850299*G0_0_0 - 0.014939929219443*G0_0_2 - 0.014939929219443*G0_2_0 - 0.0148746893538557*G0_2_2; A[612] = 0.0260959462348351*G0_0_0 + 0.0319675341376735*G0_0_2 + 0.0319675341376731*G0_2_0 + 0.0391439193522542*G0_2_2; A[613] = 0.0260959462348351*G0_0_0 + 0.015657567740901*G0_0_2 + 0.0156575677409015*G0_2_0 + 0.185933616923199*G0_2_2; A[614] = 0.026095946234835*G0_0_0 + 0.0319675341376734*G0_0_2 + 0.0319675341376721*G0_2_0 + 0.0391439193522517*G0_2_2; A[615] = -0.1859336169232*G0_0_0 - 0.0903572138381174*G0_0_2 - 0.0903572138381167*G0_2_0 - 0.156575677409012*G0_2_2; A[616] = -0.00480034930989789*G0_0_0 - 0.00480034930989792*G0_0_1 - 0.00480034930989792*G0_0_2 - 0.00480034930989797*G0_2_0 - 0.00480034930989799*G0_2_1 - 0.00480034930989797*G0_2_2; A[617] = 0.00480034930989784*G0_0_0 - 0.0105310191030676*G0_2_0; A[618] = 0.00480034930989786*G0_0_1 + 0.00480034930989783*G0_2_1; A[619] = 0.0372571824394741*G0_0_2 - 0.017870503981615*G0_2_2; A[620] = -0.0328352243499813*G0_0_1 - 0.00537576492437609*G0_0_2 - 0.0274594594256051*G0_2_1 - 0.00537576492437608*G0_2_2; A[621] = 0.0788945694544651*G0_0_1 + 0.0189782768992835*G0_0_2 + 0.0599162925551808*G0_2_1 + 0.028372817543824*G0_2_2; A[622] = -0.108637424175618*G0_0_1 - 0.0387263842124946*G0_0_2 - 0.0699110399631228*G0_2_1 - 0.0574176057031953*G0_2_2; A[623] = 0.139822079926246*G0_0_1 + 0.0699110399631224*G0_0_2 + 0.0699110399631226*G0_2_1 + 0.089548239504836*G0_2_2; A[624] = -0.0328352243499811*G0_0_0 - 0.00537576492437599*G0_0_2 + 0.0209159009072203*G0_2_0 - 0.0328352243499807*G0_2_2; A[625] = 0.0788945694544649*G0_0_0 + 0.0189782768992837*G0_0_2 - 0.0246345732456845*G0_2_0 + 0.100717304493345*G0_2_2; A[626] = -0.108637424175618*G0_0_0 - 0.0387263842124948*G0_0_2 + 0.0263830016434185*G0_2_0 - 0.147063705006412*G0_2_2; A[627] = 0.139822079926246*G0_0_0 + 0.0699110399631227*G0_0_2 + 0.0699110399631227*G0_2_0 + 0.179096479009672*G0_2_2; A[628] = -0.00537576492437602*G0_0_0 - 0.00537576492437601*G0_0_1 - 0.027459459425605*G0_2_0 - 0.0328352243499807*G0_2_1; A[629] = -0.00228991928210664*G0_0_0 - 0.00228991928210682*G0_0_1 - 0.00887914570640251*G0_2_0 - 0.0111690649885096*G0_2_1; A[630] = -0.00228991928210669*G0_0_0 - 0.00228991928210646*G0_0_1 - 0.0116844599266473*G0_2_0 - 0.0139743792087539*G0_2_1; A[631] = -0.00537576492437601*G0_0_0 - 0.00537576492437619*G0_0_1 - 0.00537576492437602*G0_2_0 - 0.0107515298487521*G0_2_1; A[632] = 0.0328352243499813*G0_0_0 + 0.0328352243499814*G0_0_1 + 0.0274594594256053*G0_0_2 + 0.0274594594256052*G0_2_0 + 0.0274594594256052*G0_2_1 + 0.0220836945012294*G0_2_2; A[633] = -0.0788945694544652*G0_0_0 - 0.0788945694544654*G0_0_1 - 0.0599162925551816*G0_0_2 - 0.0599162925551813*G0_2_0 - 0.0599162925551815*G0_2_1 - 0.0315434750113573*G0_2_2; A[634] = 0.108637424175618*G0_0_0 + 0.108637424175618*G0_0_1 + 0.0699110399631237*G0_0_2 + 0.0699110399631231*G0_2_0 + 0.0699110399631231*G0_2_1 + 0.0124934342599278*G0_2_2; A[635] = -0.139822079926246*G0_0_0 - 0.139822079926246*G0_0_1 - 0.0699110399631235*G0_0_2 - 0.0699110399631226*G0_2_0 - 0.0699110399631227*G0_2_1 + 0.019637199541713*G0_2_2; A[636] = 0.00537576492437619*G0_0_0 + 0.00537576492437611*G0_0_2 + 0.00537576492437606*G0_2_0 + 0.00537576492437603*G0_2_2; A[637] = 0.00228991928210673*G0_0_0 + 0.00228991928210674*G0_0_2 + 0.00228991928210694*G0_2_0 + 0.00228991928210687*G0_2_2; A[638] = 0.00228991928210664*G0_0_0 + 0.00228991928210662*G0_0_2 + 0.00228991928210646*G0_2_0 + 0.00228991928210645*G0_2_2; A[639] = 0.00537576492437607*G0_0_0 + 0.00537576492437607*G0_0_2 + 0.00537576492437607*G0_2_0 + 0.00537576492437608*G0_2_2; A[640] = 0.00537576492437615*G0_0_1 + 0.00537576492437608*G0_0_2 + 0.00537576492437628*G0_2_0 + 0.0107515298487521*G0_2_1 + 0.0107515298487521*G0_2_2; A[641] = 0.00228991928210681*G0_0_1 + 0.00228991928210685*G0_0_2 + 0.00228991928210652*G0_2_0 + 0.013974379208754*G0_2_1 + 0.0139743792087541*G0_2_2; A[642] = 0.00228991928210668*G0_0_1 + 0.0022899192821067*G0_0_2 + 0.00228991928210691*G0_2_0 + 0.0111690649885096*G0_2_1 + 0.0111690649885095*G0_2_2; A[643] = 0.00537576492437608*G0_0_1 + 0.00537576492437604*G0_0_2 + 0.00537576492437585*G0_2_0 + 0.0328352243499808*G0_2_1 + 0.0328352243499808*G0_2_2; A[644] = 0.0118736555368501*G0_0_0 + 0.01187365553685*G0_0_1 - 0.00939454064454051*G0_0_2 + 0.0264873854283576*G0_2_0 + 0.0477555816097477*G0_2_1 - 0.0641307878721068*G0_2_2; A[645] = 0.00254435475789684*G0_0_0 + 0.00254435475789687*G0_0_1 - 0.00329461321214729*G0_0_2 + 0.0084485625935283*G0_2_0 + 0.014287530563573*G0_2_1 - 0.029260079715808*G0_2_2; A[646] = 0.0118736555368492*G0_0_0 + 0.0118736555368496*G0_0_1 - 0.00939454064454094*G0_0_2 + 0.0212681961813897*G0_2_0 + 0.0425363923627803*G0_2_1 - 0.0187890812890816*G0_2_2; A[647] = -0.0429604514890972*G0_0_0 - 0.0429604514890968*G0_0_1 - 0.000685018588664365*G0_0_2 - 0.00704590548340534*G0_2_0 - 0.0493213383838378*G0_2_1 + 0.127315597693201*G0_2_2; A[648] = -0.0429604514890967*G0_0_0 - 0.0429604514890973*G0_0_1 - 0.000685018588664521*G0_0_2 - 0.0422754329004329*G0_2_0 - 0.0845508658008658*G0_2_1 + 0.0439716694056963*G0_2_2; A[649] = 0.124738623002511*G0_0_0 + 0.124738623002511*G0_0_1 + 0.02844458139597*G0_0_2 + 0.0962940416065404*G0_2_0 + 0.192588083213082*G0_2_1 - 0.0644569872000429*G0_2_2; A[650] = -0.0118736555368505*G0_0_0 - 0.0212681961813909*G0_0_2 - 0.0212681961813907*G0_2_0 - 0.0306627368259314*G0_2_2; A[651] = -0.00254435475789623*G0_0_0 - 0.00583896797004395*G0_0_2 - 0.00583896797004431*G0_2_0 - 0.0091335811821921*G0_2_2; A[652] = -0.0118736555368493*G0_0_0 - 0.0212681961813902*G0_0_2 - 0.0212681961813898*G0_2_0 - 0.0306627368259305*G0_2_2; A[653] = 0.0429604514890964*G0_0_0 + 0.0422754329004327*G0_0_2 + 0.0422754329004319*G0_2_0 + 0.0642612676032814*G0_2_2; A[654] = 0.0429604514890969*G0_0_0 + 0.042275432900432*G0_0_2 + 0.042275432900433*G0_2_0 + 0.0642612676032806*G0_2_2; A[655] = -0.124738623002511*G0_0_0 - 0.0962940416065405*G0_0_2 - 0.0962940416065404*G0_2_0 - 0.128522535206562*G0_2_2; A[656] = -0.0118736555368504*G0_0_1 - 0.0212681961813909*G0_0_2 - 0.0212681961813908*G0_2_0 - 0.0425363923627812*G0_2_1 - 0.0613254736518624*G0_2_2; A[657] = -0.00254435475789559*G0_0_1 - 0.00583896797004414*G0_0_2 - 0.00583896797004411*G0_2_0 - 0.0142875305635719*G0_2_1 - 0.0435476102793812*G0_2_2; A[658] = -0.0118736555368501*G0_0_1 - 0.0212681961813905*G0_0_2 - 0.0212681961813907*G0_2_0 - 0.047755581609748*G0_2_1 - 0.111886369481855*G0_2_2; A[659] = 0.0429604514890966*G0_0_1 + 0.0422754329004332*G0_0_2 + 0.042275432900433*G0_2_0 + 0.0845508658008644*G0_2_1 + 0.128522535206563*G0_2_2; A[660] = 0.0429604514890966*G0_0_1 + 0.0422754329004321*G0_0_2 + 0.042275432900433*G0_2_0 + 0.0493213383838378*G0_2_1 + 0.176636936077039*G0_2_2; A[661] = -0.124738623002511*G0_0_1 - 0.096294041606541*G0_0_2 - 0.0962940416065416*G0_2_0 - 0.192588083213081*G0_2_1 - 0.257045070413124*G0_2_2; A[662] = 0.00939454064454032*G0_0_2 + 0.00939454064454065*G0_2_0 + 0.0187890812890812*G0_2_2; A[663] = 0.00329461321214826*G0_0_2 + 0.00329461321214786*G0_2_0 + 0.0292600797158091*G0_2_2; A[664] = 0.0093945406445404*G0_0_2 + 0.00939454064454047*G0_2_0 + 0.0641307878721064*G0_2_2; A[665] = 0.0032946132121478*G0_0_2 + 0.00329461321214793*G0_2_0 + 0.00658922642429579*G0_2_2; A[666] = 0.00329461321214746*G0_0_2 + 0.00329461321214769*G0_2_0 + 0.0292600797158083*G0_2_2; A[667] = 0.00939454064454091*G0_0_2 + 0.00939454064454079*G0_2_0 + 0.0187890812890814*G0_2_2; A[668] = -0.00260959462348415*G0_0_2 - 0.00260959462348383*G0_2_0 - 0.0505608958299942*G0_2_2; A[669] = -0.00260959462348375*G0_0_2 - 0.00260959462348314*G0_2_0 - 0.15657567740901*G0_2_2; A[670] = -0.00260959462348332*G0_0_2 - 0.00260959462348398*G0_2_0 - 0.050560895829992*G0_2_2; A[671] = -0.0352295274170263*G0_0_2 - 0.0352295274170267*G0_2_0 + 0.0962288017409554*G0_2_2; A[672] = -0.00480034930989781*G0_0_0 - 0.00480034930989777*G0_0_1 - 0.00480034930989782*G0_0_2 - 0.00480034930989782*G0_1_0 - 0.00480034930989781*G0_1_1 - 0.00480034930989784*G0_1_2; A[673] = -0.017870503981615*G0_0_0 + 0.0372571824394735*G0_1_0; A[674] = -0.0105310191030676*G0_0_1 + 0.0048003493098979*G0_1_1; A[675] = 0.0048003493098978*G0_0_2 + 0.00480034930989777*G0_1_2; A[676] = -0.0274594594256052*G0_0_1 - 0.0328352243499812*G0_0_2 - 0.00537576492437615*G0_1_1 - 0.00537576492437604*G0_1_2; A[677] = -0.00887914570640247*G0_0_1 - 0.0111690649885091*G0_0_2 - 0.0022899192821067*G0_1_1 - 0.00228991928210669*G0_1_2; A[678] = -0.0116844599266472*G0_0_1 - 0.0139743792087541*G0_0_2 - 0.0022899192821069*G0_1_1 - 0.00228991928210693*G0_1_2; A[679] = -0.00537576492437595*G0_0_1 - 0.0107515298487518*G0_0_2 - 0.00537576492437593*G0_1_1 - 0.00537576492437581*G0_1_2; A[680] = 0.0895482395048357*G0_0_0 + 0.0699110399631223*G0_0_2 + 0.0699110399631227*G0_1_0 + 0.139822079926245*G0_1_2; A[681] = -0.0574176057031952*G0_0_0 - 0.0699110399631224*G0_0_2 - 0.038726384212495*G0_1_0 - 0.108637424175617*G0_1_2; A[682] = 0.0283728175438238*G0_0_0 + 0.0599162925551804*G0_0_2 + 0.0189782768992836*G0_1_0 + 0.0788945694544641*G0_1_2; A[683] = -0.00537576492437602*G0_0_0 - 0.027459459425605*G0_0_2 - 0.00537576492437601*G0_1_0 - 0.0328352243499807*G0_1_2; A[684] = 0.179096479009671*G0_0_0 + 0.0699110399631223*G0_0_1 + 0.0699110399631223*G0_1_0 + 0.139822079926245*G0_1_1; A[685] = -0.147063705006412*G0_0_0 + 0.0263830016434178*G0_0_1 - 0.0387263842124949*G0_1_0 - 0.108637424175618*G0_1_1; A[686] = 0.100717304493345*G0_0_0 - 0.0246345732456839*G0_0_1 + 0.0189782768992834*G0_1_0 + 0.0788945694544648*G0_1_1; A[687] = -0.0328352243499812*G0_0_0 + 0.0209159009072197*G0_0_1 - 0.00537576492437604*G0_1_0 - 0.0328352243499813*G0_1_1; A[688] = 0.00537576492437581*G0_0_0 + 0.00537576492437581*G0_0_1 + 0.0053757649243756*G0_1_0 + 0.00537576492437558*G0_1_1; A[689] = 0.00228991928210707*G0_0_0 + 0.00228991928210719*G0_0_1 + 0.00228991928210741*G0_1_0 + 0.00228991928210754*G0_1_1; A[690] = 0.00228991928210627*G0_0_0 + 0.0022899192821062*G0_0_1 + 0.00228991928210624*G0_1_0 + 0.0022899192821062*G0_1_1; A[691] = 0.00537576492437597*G0_0_0 + 0.00537576492437599*G0_0_1 + 0.00537576492437599*G0_1_0 + 0.00537576492437598*G0_1_1; A[692] = 0.0107515298487519*G0_0_0 + 0.00537576492437597*G0_0_1 + 0.0107515298487518*G0_0_2 + 0.0053757649243759*G0_1_0 + 0.00537576492437584*G0_1_2; A[693] = 0.0139743792087543*G0_0_0 + 0.0022899192821067*G0_0_1 + 0.0139743792087543*G0_0_2 + 0.00228991928210692*G0_1_0 + 0.00228991928210695*G0_1_2; A[694] = 0.0111690649885088*G0_0_0 + 0.00228991928210676*G0_0_1 + 0.0111690649885089*G0_0_2 + 0.00228991928210654*G0_1_0 + 0.00228991928210657*G0_1_2; A[695] = 0.0328352243499812*G0_0_0 + 0.00537576492437597*G0_0_1 + 0.0328352243499812*G0_0_2 + 0.00537576492437605*G0_1_0 + 0.00537576492437604*G0_1_2; A[696] = 0.0220836945012287*G0_0_0 + 0.0274594594256046*G0_0_1 + 0.0274594594256046*G0_0_2 + 0.0274594594256048*G0_1_0 + 0.0328352243499805*G0_1_1 + 0.0328352243499804*G0_1_2; A[697] = -0.0315434750113562*G0_0_0 - 0.0599162925551805*G0_0_1 - 0.0599162925551804*G0_0_2 - 0.0599162925551803*G0_1_0 - 0.0788945694544637*G0_1_1 - 0.0788945694544637*G0_1_2; A[698] = 0.0124934342599268*G0_0_0 + 0.0699110399631222*G0_0_1 + 0.0699110399631222*G0_0_2 + 0.069911039963122*G0_1_0 + 0.108637424175617*G0_1_1 + 0.108637424175617*G0_1_2; A[699] = 0.0196371995417134*G0_0_0 - 0.0699110399631222*G0_0_1 - 0.0699110399631223*G0_0_2 - 0.0699110399631221*G0_1_0 - 0.139822079926245*G0_1_1 - 0.139822079926245*G0_1_2; A[700] = -0.0644569872000424*G0_0_0 + 0.0962940416065404*G0_0_1 + 0.192588083213081*G0_0_2 + 0.0284445813959696*G0_1_0 + 0.124738623002511*G0_1_1 + 0.12473862300251*G0_1_2; A[701] = 0.1273155976932*G0_0_0 - 0.00704590548340577*G0_0_1 - 0.0493213383838382*G0_0_2 - 0.000685018588664421*G0_1_0 - 0.0429604514890972*G0_1_1 - 0.0429604514890972*G0_1_2; A[702] = -0.064130787872107*G0_0_0 + 0.0264873854283573*G0_0_1 + 0.0477555816097469*G0_0_2 - 0.00939454064454083*G0_1_0 + 0.0118736555368497*G0_1_1 + 0.0118736555368492*G0_1_2; A[703] = 0.0439716694056962*G0_0_0 - 0.042275432900433*G0_0_1 - 0.084550865800865*G0_0_2 - 0.000685018588664221*G0_1_0 - 0.042960451489097*G0_1_1 - 0.0429604514890965*G0_1_2; A[704] = -0.0292600797158084*G0_0_0 + 0.00844856259352827*G0_0_1 + 0.0142875305635729*G0_0_2 - 0.0032946132121479*G0_1_0 + 0.00254435475789684*G0_1_1 + 0.00254435475789689*G0_1_2; A[705] = -0.0187890812890808*G0_0_0 + 0.02126819618139*G0_0_1 + 0.0425363923627803*G0_0_2 - 0.00939454064454038*G0_1_0 + 0.0118736555368499*G0_1_1 + 0.0118736555368498*G0_1_2; A[706] = 0.0187890812890809*G0_0_0 + 0.00939454064454064*G0_0_1 + 0.00939454064454076*G0_1_0; A[707] = 0.029260079715809*G0_0_0 + 0.00329461321214773*G0_0_1 + 0.00329461321214802*G0_1_0; A[708] = 0.0641307878721071*G0_0_0 + 0.00939454064454091*G0_0_1 + 0.0093945406445408*G0_1_0; A[709] = 0.00658922642429591*G0_0_0 + 0.00329461321214797*G0_0_1 + 0.0032946132121478*G0_1_0; A[710] = 0.0292600797158082*G0_0_0 + 0.00329461321214736*G0_0_1 + 0.00329461321214795*G0_1_0; A[711] = 0.0187890812890808*G0_0_0 + 0.00939454064454083*G0_0_1 + 0.00939454064454033*G0_1_0; A[712] = -0.0306627368259309*G0_0_0 - 0.0212681961813904*G0_0_1 - 0.02126819618139*G0_1_0 - 0.0118736555368496*G0_1_1; A[713] = 0.0642612676032808*G0_0_0 + 0.042275432900432*G0_0_1 + 0.0422754329004323*G0_1_0 + 0.0429604514890965*G0_1_1; A[714] = -0.128522535206561*G0_0_0 - 0.0962940416065399*G0_0_1 - 0.0962940416065405*G0_1_0 - 0.12473862300251*G0_1_1; A[715] = -0.0091335811821926*G0_0_0 - 0.00583896797004477*G0_0_1 - 0.00583896797004495*G0_1_0 - 0.00254435475789651*G0_1_1; A[716] = 0.0642612676032806*G0_0_0 + 0.042275432900433*G0_0_1 + 0.0422754329004325*G0_1_0 + 0.042960451489097*G0_1_1; A[717] = -0.03066273682593*G0_0_0 - 0.0212681961813901*G0_0_1 - 0.0212681961813898*G0_1_0 - 0.0118736555368499*G0_1_1; A[718] = -0.0613254736518621*G0_0_0 - 0.0212681961813903*G0_0_1 - 0.0425363923627811*G0_0_2 - 0.0212681961813906*G0_1_0 - 0.01187365553685*G0_1_2; A[719] = 0.128522535206562*G0_0_0 + 0.0422754329004325*G0_0_1 + 0.0845508658008645*G0_0_2 + 0.0422754329004329*G0_1_0 + 0.0429604514890964*G0_1_2; A[720] = -0.257045070413123*G0_0_0 - 0.0962940416065404*G0_0_1 - 0.19258808321308*G0_0_2 - 0.0962940416065406*G0_1_0 - 0.124738623002509*G0_1_2; A[721] = -0.0435476102793809*G0_0_0 - 0.00583896797004458*G0_0_1 - 0.0142875305635724*G0_0_2 - 0.00583896797004441*G0_1_0 - 0.0025443547578965*G0_1_2; A[722] = 0.176636936077038*G0_0_0 + 0.0422754329004322*G0_0_1 + 0.0493213383838378*G0_0_2 + 0.0422754329004323*G0_1_0 + 0.0429604514890969*G0_1_2; A[723] = -0.111886369481854*G0_0_0 - 0.0212681961813896*G0_0_1 - 0.0477555816097471*G0_0_2 - 0.02126819618139*G0_1_0 - 0.0118736555368493*G0_1_2; A[724] = -0.050560895829993*G0_0_0 - 0.00260959462348313*G0_0_1 - 0.00260959462348409*G0_1_0; A[725] = 0.0962288017409546*G0_0_0 - 0.035229527417027*G0_0_1 - 0.0352295274170262*G0_1_0; A[726] = -0.156575677409009*G0_0_0 - 0.00260959462348334*G0_0_1 - 0.00260959462348357*G0_1_0; A[727] = -0.050560895829992*G0_0_0 - 0.00260959462348355*G0_0_1 - 0.00260959462348363*G0_1_0; A[728] = -0.00336507226698188*G0_0_0 - 0.00336507226698195*G0_0_1 - 0.00336507226698191*G0_0_2 - 0.00336507226698182*G0_1_0 - 0.00336507226698183*G0_1_1 - 0.00336507226698183*G0_1_2; A[729] = 0.0214691349673987*G0_0_0 - 0.0336585514536899*G0_1_0; A[730] = 0.0232632312710435*G0_0_1 - 0.0155544887532734*G0_1_1; A[731] = 0.00336507226698204*G0_0_2 + 0.003365072266982*G0_1_2; A[732] = 0.0599162925551813*G0_0_1 + 0.0788945694544649*G0_0_2 + 0.0283728175438246*G0_1_1 + 0.0189782768992839*G0_1_2; A[733] = 0.00578025209101575*G0_0_1 + 0.00523223722008433*G0_0_2 - 0.00048277500534468*G0_1_1 - 0.000548014870931533*G0_1_2; A[734] = 0.0131523569023568*G0_0_1 + 0.0263047138047135*G0_0_2 + 0.0132175967679443*G0_1_1 + 0.013152356902357*G0_1_2; A[735] = -0.00228991928210664*G0_0_1 - 0.013974379208754*G0_0_2 - 0.00228991928210687*G0_1_1 - 0.0116844599266474*G0_1_2; A[736] = -0.0574176057031954*G0_0_0 - 0.0387263842124948*G0_0_2 - 0.069911039963123*G0_1_0 - 0.108637424175618*G0_1_2; A[737] = 0.00506261356955806*G0_0_0 + 0.00480165410720966*G0_0_2 + 0.00480165410720993*G0_1_0 + 0.0096033082144192*G0_1_2; A[738] = -0.000482775005344368*G0_0_0 + 0.00578025209101615*G0_0_2 - 0.000548014870931731*G0_1_0 + 0.00523223722008437*G0_1_2; A[739] = -0.00228991928210664*G0_0_0 - 0.00887914570640251*G0_0_2 - 0.00228991928210682*G0_1_0 - 0.0111690649885096*G0_1_2; A[740] = -0.147063705006412*G0_0_0 - 0.0387263842124949*G0_0_1 + 0.0263830016434179*G0_1_0 - 0.108637424175618*G0_1_1; A[741] = 0.304226541205705*G0_0_0 + 0.0781312630270957*G0_0_1 + 0.0781312630270957*G0_1_0 + 0.281001149056702*G0_1_1; A[742] = -0.204187731314465*G0_0_0 + 0.0153052724667305*G0_0_1 - 0.0364951808094163*G0_1_0 - 0.204187731314466*G0_1_1; A[743] = 0.0788945694544651*G0_0_0 - 0.0246345732456835*G0_0_1 + 0.0189782768992839*G0_1_0 + 0.100717304493346*G0_1_1; A[744] = 0.00228991928210691*G0_0_0 + 0.0022899192821069*G0_0_1 + 0.00228991928210696*G0_1_0 + 0.00228991928210702*G0_1_1; A[745] = 0.00178757231708581*G0_0_0 + 0.00178757231708578*G0_0_1 + 0.00178757231708572*G0_1_0 + 0.00178757231708563*G0_1_1; A[746] = 0.00178757231708664*G0_0_0 + 0.00178757231708672*G0_0_1 + 0.00178757231708651*G0_1_0 + 0.00178757231708658*G0_1_1; A[747] = 0.00228991928210665*G0_0_0 + 0.00228991928210665*G0_0_1 + 0.00228991928210683*G0_1_0 + 0.00228991928210686*G0_1_1; A[748] = 0.0139743792087541*G0_0_0 + 0.0116844599266472*G0_0_1 + 0.0139743792087541*G0_0_2 + 0.0116844599266471*G0_1_0 + 0.00939454064454013*G0_1_1 + 0.0116844599266472*G0_1_2; A[749] = -0.0263047138047141*G0_0_0 - 0.0131523569023569*G0_0_1 - 0.026304713804714*G0_0_2 - 0.013152356902357*G0_1_0 + 6.52398655874875e-05*G0_1_1 - 0.0131523569023569*G0_1_2; A[750] = -0.00523223722008363*G0_0_0 + 0.000548014870931806*G0_0_1 - 0.00523223722008369*G0_0_2 + 0.000548014870931901*G0_1_0 + 6.52398655869403e-05*G0_1_1 + 0.000548014870931827*G0_1_2; A[751] = -0.0788945694544651*G0_0_0 - 0.0189782768992838*G0_0_1 - 0.078894569454465*G0_0_2 - 0.0189782768992839*G0_1_0 + 0.00939454064454064*G0_1_1 - 0.0189782768992839*G0_1_2; A[752] = 0.00658922642429572*G0_0_0 + 0.0088791457064026*G0_0_1 + 0.00887914570640272*G0_0_2 + 0.0088791457064022*G0_1_0 + 0.0111690649885092*G0_1_1 + 0.0111690649885094*G0_1_2; A[753] = -0.00626302709636022*G0_0_0 - 0.00578025209101572*G0_0_1 - 0.00578025209101579*G0_0_2 - 0.00578025209101546*G0_1_0 - 0.0052322372200842*G0_1_1 - 0.00523223722008422*G0_1_2; A[754] = 0.000260959462348191*G0_0_0 - 0.00480165410720965*G0_0_1 - 0.00480165410720964*G0_0_2 - 0.00480165410720992*G0_1_0 - 0.00960330821441921*G0_1_1 - 0.00960330821441924*G0_1_2; A[755] = -0.0186912214907005*G0_0_0 + 0.0387263842124948*G0_0_1 + 0.0387263842124948*G0_0_2 + 0.0387263842124949*G0_1_0 + 0.108637424175617*G0_1_1 + 0.108637424175617*G0_1_2; A[756] = 0.132306447410613*G0_0_0 - 0.0623693115012549*G0_0_1 + 0.0109602974186311*G0_0_2 + 0.0733296089198868*G0_1_0 - 0.124738623002511*G0_1_1 + 0.146659217839772*G0_1_2; A[757] = -0.166948816037356*G0_0_0 + 0.0838658472122008*G0_0_1 + 0.167731694424401*G0_0_2 - 0.00616516729797969*G0_1_0 + 0.182410664181496*G0_1_1 + 0.0777006799142214*G0_1_2; A[758] = 0.127087258163647*G0_0_0 - 0.046385544432418*G0_0_1 - 0.0823327103709021*G0_0_2 + 0.0377738821749244*G0_1_0 - 0.0510175748891013*G0_1_1 + 0.00182671623643963*G0_1_2; A[759] = -0.0436454700777612*G0_0_0 - 0.00649136662591476*G0_0_1 - 0.0808321934624007*G0_0_2 - 0.0338921101724927*G0_1_0 - 0.00352295274170276*G0_1_1 - 0.108232937008978*G0_1_2; A[760] = 0.0189848008858422*G0_0_0 - 0.018886941087462*G0_0_1 - 0.037773882174924*G0_0_2 + 0.00949240044292155*G0_1_0 - 0.015592327875314*G0_1_1 - 0.00939454064454085*G0_1_2; A[761] = 0.0148746893538561*G0_0_0 + 0.00123955744615505*G0_0_1 + 0.0403182369328202*G0_0_2 + 0.0149399292194429*G0_1_0 + 0.00117431758056714*G0_1_1 + 0.0540186087061078*G0_1_2; A[762] = -0.0148746893538559*G0_0_0 - 0.0149399292194432*G0_0_1 - 0.0149399292194432*G0_1_0 - 0.0150051690850306*G0_1_1; A[763] = -0.018984800885843*G0_0_0 - 0.00949240044292076*G0_0_1 - 0.00949240044292142*G0_1_0 - 0.00065239865587058*G0_1_1; A[764] = -0.127087258163647*G0_0_0 - 0.0377738821749243*G0_0_1 - 0.0377738821749245*G0_1_0 - 0.0150051690850302*G0_1_1; A[765] = 0.00450155072550873*G0_0_0 + 0.00192457603481895*G0_0_1 + 0.00192457603481882*G0_1_0 - 0.000652398655870291*G0_1_1; A[766] = -0.0189848008858419*G0_0_0 - 0.00949240044292034*G0_0_1 - 0.00949240044292141*G0_1_0 - 0.00065239865587069*G0_1_1; A[767] = -0.0148746893538561*G0_0_0 - 0.0149399292194435*G0_0_1 - 0.014939929219443*G0_1_0 - 0.0150051690850308*G0_1_1; A[768] = -0.00130479731174145*G0_0_0 - 0.00123955744615445*G0_0_1 - 0.00123955744615442*G0_1_0 - 0.00117431758056732*G0_1_1; A[769] = 0.0088073818542565*G0_0_0 + 0.00649136662591581*G0_0_1 + 0.00649136662591478*G0_1_0 + 0.00352295274170322*G0_1_1; A[770] = 0.0476251018785733*G0_0_0 + 0.0623693115012547*G0_0_1 + 0.0623693115012556*G0_1_0 + 0.12473862300251*G0_1_1; A[771] = -0.0156575677409006*G0_0_0 - 0.0130805930502109*G0_0_1 - 0.0130805930502106*G0_1_0 - 0.0105036183595214*G0_1_1; A[772] = 0.00880738185425686*G0_0_0 + 0.00649136662591474*G0_0_1 + 0.00649136662591496*G0_1_0 + 0.0035229527417027*G0_1_1; A[773] = -0.00130479731174236*G0_0_0 - 0.00123955744615503*G0_0_1 - 0.00123955744615484*G0_1_0 - 0.00117431758056714*G0_1_1; A[774] = -0.0254435475789633*G0_0_0 - 0.0390786794866651*G0_0_1 - 0.0403182369328194*G0_0_2 - 0.0390786794866641*G0_1_0 - 0.0528442911255399*G0_1_1 - 0.0540186087061077*G0_1_2; A[775] = 0.0371867233846387*G0_0_0 + 0.0743408268364851*G0_0_1 + 0.0808321934624012*G0_0_2 + 0.0743408268364844*G0_1_0 + 0.104709984267274*G0_1_1 + 0.108232937008978*G0_1_2; A[776] = 0.121346149991982*G0_0_0 - 0.0733296089198859*G0_0_1 - 0.0109602974186314*G0_0_2 - 0.0733296089198853*G0_1_0 - 0.271397840842282*G0_1_1 - 0.146659217839772*G0_1_2; A[777] = 0.0567586830607658*G0_0_0 + 0.0188869410874621*G0_0_1 + 0.0377738821749238*G0_0_2 + 0.0188869410874615*G0_1_0 - 0.00619778723077403*G0_1_1 + 0.00939454064454077*G0_1_2; A[778] = -0.334680510461756*G0_0_0 - 0.0838658472121999*G0_0_1 - 0.167731694424401*G0_0_2 - 0.0838658472122002*G0_1_0 + 0.104709984267275*G0_1_1 - 0.0777006799142215*G0_1_2; A[779] = 0.209419968534549*G0_0_0 + 0.0359471659384838*G0_0_1 + 0.0823327103709023*G0_0_2 + 0.0359471659384844*G0_1_0 - 0.0528442911255408*G0_1_1 - 0.00182671623643967*G0_1_2; A[780] = 0.0391439193522521*G0_0_0 + 0.0319675341376711*G0_0_1 + 0.0319675341376731*G0_1_0 + 0.0260959462348338*G0_1_1; A[781] = -0.15657567740901*G0_0_0 - 0.0903572138381162*G0_0_1 - 0.0903572138381167*G0_1_0 - 0.185933616923199*G0_1_1; A[782] = 0.185933616923199*G0_0_0 + 0.0156575677409011*G0_0_1 + 0.015657567740901*G0_1_0 + 0.0260959462348346*G0_1_1; A[783] = 0.0391439193522523*G0_0_0 + 0.031967534137673*G0_0_1 + 0.0319675341376738*G0_1_0 + 0.0260959462348357*G0_1_1; A[784] = -0.00336507226698196*G0_0_0 - 0.00336507226698191*G0_0_1 - 0.00336507226698192*G0_0_2 - 0.00336507226698195*G0_1_0 - 0.00336507226698196*G0_1_1 - 0.00336507226698193*G0_1_2; A[785] = -0.0155544887532734*G0_0_0 + 0.0232632312710435*G0_1_0; A[786] = -0.03365855145369*G0_0_1 + 0.0214691349673989*G0_1_1; A[787] = 0.003365072266982*G0_0_2 + 0.00336507226698207*G0_1_2; A[788] = -0.0699110399631231*G0_0_1 - 0.108637424175618*G0_0_2 - 0.0574176057031958*G0_1_1 - 0.038726384212495*G0_1_2; A[789] = 0.00480165410720996*G0_0_1 + 0.00960330821441933*G0_0_2 + 0.00506261356955823*G0_1_1 + 0.00480165410720959*G0_1_2; A[790] = -0.000548014870931746*G0_0_1 + 0.00523223722008435*G0_0_2 - 0.000482775005345023*G0_1_1 + 0.00578025209101554*G0_1_2; A[791] = -0.00228991928210666*G0_0_1 - 0.0111690649885095*G0_0_2 - 0.00228991928210639*G0_1_1 - 0.00887914570640242*G0_1_2; A[792] = 0.028372817543824*G0_0_0 + 0.0189782768992835*G0_0_2 + 0.0599162925551811*G0_1_0 + 0.0788945694544648*G0_1_2; A[793] = -0.000482775005344125*G0_0_0 - 0.000548014870931271*G0_0_2 + 0.00578025209101597*G0_1_0 + 0.00523223722008425*G0_1_2; A[794] = 0.0132175967679437*G0_0_0 + 0.0131523569023565*G0_0_2 + 0.0131523569023569*G0_1_0 + 0.0263047138047139*G0_1_2; A[795] = -0.00228991928210669*G0_0_0 - 0.0116844599266473*G0_0_2 - 0.00228991928210646*G0_1_0 - 0.0139743792087539*G0_1_2; A[796] = 0.100717304493345*G0_0_0 + 0.0189782768992834*G0_0_1 - 0.0246345732456839*G0_1_0 + 0.0788945694544648*G0_1_1; A[797] = -0.204187731314465*G0_0_0 - 0.0364951808094163*G0_0_1 + 0.0153052724667305*G0_1_0 - 0.204187731314465*G0_1_1; A[798] = 0.281001149056702*G0_0_0 + 0.0781312630270954*G0_0_1 + 0.0781312630270954*G0_1_0 + 0.304226541205705*G0_1_1; A[799] = -0.108637424175618*G0_0_0 + 0.0263830016434176*G0_0_1 - 0.038726384212495*G0_1_0 - 0.147063705006412*G0_1_1; A[800] = 0.0022899192821067*G0_0_0 + 0.00228991928210678*G0_0_1 + 0.00228991928210685*G0_1_0 + 0.00228991928210683*G0_1_1; A[801] = 0.00178757231708627*G0_0_0 + 0.00178757231708623*G0_0_1 + 0.00178757231708623*G0_1_0 + 0.0017875723170863*G0_1_1; A[802] = 0.00178757231708606*G0_0_0 + 0.00178757231708605*G0_0_1 + 0.00178757231708628*G0_1_0 + 0.00178757231708624*G0_1_1; A[803] = 0.00228991928210671*G0_0_0 + 0.00228991928210669*G0_0_1 + 0.00228991928210646*G0_1_0 + 0.00228991928210641*G0_1_1; A[804] = 0.011169064988509*G0_0_0 + 0.00887914570640239*G0_0_1 + 0.011169064988509*G0_0_2 + 0.00887914570640267*G0_1_0 + 0.00658922642429587*G0_1_1 + 0.00887914570640269*G0_1_2; A[805] = -0.00523223722008346*G0_0_0 - 0.00578025209101551*G0_0_1 - 0.00523223722008367*G0_0_2 - 0.00578025209101569*G0_1_0 - 0.00626302709636047*G0_1_1 - 0.00578025209101582*G0_1_2; A[806] = -0.00960330821442*G0_0_0 - 0.00480165410720996*G0_0_1 - 0.00960330821441994*G0_0_2 - 0.0048016541072098*G0_1_0 + 0.000260959462348471*G0_1_1 - 0.00480165410720974*G0_1_2; A[807] = 0.108637424175618*G0_0_0 + 0.0387263842124951*G0_0_1 + 0.108637424175618*G0_0_2 + 0.0387263842124949*G0_1_0 - 0.0186912214907007*G0_1_1 + 0.0387263842124949*G0_1_2; A[808] = 0.00939454064454041*G0_0_0 + 0.0116844599266471*G0_0_1 + 0.0116844599266471*G0_0_2 + 0.0116844599266473*G0_1_0 + 0.0139743792087543*G0_1_1 + 0.0139743792087542*G0_1_2; A[809] = 6.5239865587249e-05*G0_0_0 - 0.0131523569023569*G0_0_1 - 0.0131523569023569*G0_0_2 - 0.0131523569023569*G0_1_0 - 0.0263047138047139*G0_1_1 - 0.026304713804714*G0_1_2; A[810] = 6.52398655871169e-05*G0_0_0 + 0.000548014870931754*G0_0_1 + 0.000548014870931648*G0_0_2 + 0.000548014870931701*G0_1_0 - 0.00523223722008412*G0_1_1 - 0.00523223722008416*G0_1_2; A[811] = 0.00939454064454055*G0_0_0 - 0.0189782768992834*G0_0_1 - 0.0189782768992834*G0_0_2 - 0.0189782768992837*G0_1_0 - 0.0788945694544647*G0_1_1 - 0.0788945694544647*G0_1_2; A[812] = -0.0510175748891019*G0_0_0 + 0.0377738821749234*G0_0_1 + 0.001826716236438*G0_0_2 - 0.0463855444324194*G0_1_0 + 0.127087258163646*G0_1_1 - 0.0823327103709039*G0_1_2; A[813] = 0.182410664181495*G0_0_0 - 0.00616516729797989*G0_0_1 + 0.0777006799142206*G0_0_2 + 0.0838658472122002*G0_1_0 - 0.166948816037357*G0_1_1 + 0.1677316944244*G0_1_2; A[814] = -0.124738623002512*G0_0_0 + 0.0733296089198849*G0_0_1 + 0.14665921783977*G0_0_2 - 0.0623693115012558*G0_1_0 + 0.132306447410612*G0_1_1 + 0.0109602974186302*G0_1_2; A[815] = -0.0155923278753138*G0_0_0 + 0.00949240044292169*G0_0_1 - 0.00939454064453995*G0_0_2 - 0.0188869410874608*G0_1_0 + 0.018984800885843*G0_1_1 - 0.0377738821749229*G0_1_2; A[816] = -0.0035229527417026*G0_0_0 - 0.0338921101724922*G0_0_1 - 0.108232937008978*G0_0_2 - 0.0064913666259159*G0_1_0 - 0.0436454700777618*G0_1_1 - 0.0808321934624012*G0_1_2; A[817] = 0.0011743175805671*G0_0_0 + 0.0149399292194426*G0_0_1 + 0.0540186087061078*G0_0_2 + 0.00123955744615469*G0_1_0 + 0.0148746893538564*G0_1_1 + 0.0403182369328203*G0_1_2; A[818] = -0.00117431758056738*G0_0_0 - 0.00123955744615428*G0_0_1 - 0.00123955744615409*G0_1_0 - 0.00130479731174135*G0_1_1; A[819] = 0.00352295274170251*G0_0_0 + 0.00649136662591432*G0_0_1 + 0.00649136662591491*G0_1_0 + 0.00880738185425623*G0_1_1; A[820] = 0.124738623002512*G0_0_0 + 0.0623693115012565*G0_0_1 + 0.0623693115012559*G0_1_0 + 0.0476251018785739*G0_1_1; A[821] = -0.0105036183595208*G0_0_0 - 0.0130805930502107*G0_0_1 - 0.0130805930502107*G0_1_0 - 0.0156575677409012*G0_1_1; A[822] = 0.00352295274170245*G0_0_0 + 0.00649136662591434*G0_0_1 + 0.00649136662591581*G0_1_0 + 0.00880738185425668*G0_1_1; A[823] = -0.00117431758056714*G0_0_0 - 0.00123955744615431*G0_0_1 - 0.00123955744615468*G0_1_0 - 0.00130479731174133*G0_1_1; A[824] = -0.0150051690850304*G0_0_0 - 0.0149399292194432*G0_0_1 - 0.0149399292194434*G0_1_0 - 0.014874689353856*G0_1_1; A[825] = -0.000652398655870518*G0_0_0 - 0.00949240044292135*G0_0_1 - 0.00949240044292078*G0_1_0 - 0.0189848008858427*G0_1_1; A[826] = -0.0150051690850298*G0_0_0 - 0.0377738821749232*G0_0_1 - 0.0377738821749238*G0_1_0 - 0.127087258163646*G0_1_1; A[827] = -0.000652398655870775*G0_0_0 + 0.00192457603481906*G0_0_1 + 0.00192457603481903*G0_1_0 + 0.00450155072550932*G0_1_1; A[828] = -0.000652398655871376*G0_0_0 - 0.00949240044292164*G0_0_1 - 0.00949240044292123*G0_1_0 - 0.0189848008858429*G0_1_1; A[829] = -0.0150051690850298*G0_0_0 - 0.0149399292194426*G0_0_1 - 0.0149399292194431*G0_1_0 - 0.0148746893538565*G0_1_1; A[830] = -0.0528442911255406*G0_0_0 - 0.0390786794866646*G0_0_1 - 0.054018608706108*G0_0_2 - 0.0390786794866659*G0_1_0 - 0.0254435475789643*G0_1_1 - 0.0403182369328198*G0_1_2; A[831] = -0.00619778723077277*G0_0_0 + 0.0188869410874618*G0_0_1 + 0.0093945406445404*G0_0_2 + 0.0188869410874628*G0_1_0 + 0.0567586830607665*G0_1_1 + 0.0377738821749232*G0_1_2; A[832] = -0.0528442911255406*G0_0_0 + 0.0359471659384847*G0_0_1 - 0.0018267162364379*G0_0_2 + 0.0359471659384843*G0_1_0 + 0.209419968534549*G0_1_1 + 0.0823327103709041*G0_1_2; A[833] = 0.104709984267274*G0_0_0 + 0.0743408268364847*G0_0_1 + 0.108232937008977*G0_0_2 + 0.0743408268364856*G0_1_0 + 0.0371867233846399*G0_1_1 + 0.0808321934624003*G0_1_2; A[834] = 0.104709984267274*G0_0_0 - 0.0838658472122005*G0_0_1 - 0.0777006799142208*G0_0_2 - 0.0838658472122004*G0_1_0 - 0.334680510461757*G0_1_1 - 0.1677316944244*G0_1_2; A[835] = -0.271397840842282*G0_0_0 - 0.073329608919885*G0_0_1 - 0.146659217839771*G0_0_2 - 0.0733296089198856*G0_1_0 + 0.121346149991982*G0_1_1 - 0.0109602974186302*G0_1_2; A[836] = 0.0260959462348351*G0_0_0 + 0.0319675341376736*G0_0_1 + 0.0319675341376719*G0_1_0 + 0.0391439193522525*G0_1_1; A[837] = 0.0260959462348343*G0_0_0 + 0.0156575677409012*G0_0_1 + 0.0156575677409017*G0_1_0 + 0.185933616923199*G0_1_1; A[838] = -0.185933616923198*G0_0_0 - 0.0903572138381154*G0_0_1 - 0.0903572138381152*G0_1_0 - 0.156575677409009*G0_1_1; A[839] = 0.0260959462348346*G0_0_0 + 0.0319675341376732*G0_0_1 + 0.0319675341376715*G0_1_0 + 0.0391439193522523*G0_1_1; A[840] = -0.00480034930989796*G0_0_0 - 0.00480034930989799*G0_0_1 - 0.00480034930989798*G0_0_2 - 0.00480034930989798*G0_1_0 - 0.00480034930989796*G0_1_1 - 0.004800349309898*G0_1_2; A[841] = 0.00480034930989801*G0_0_0 - 0.0105310191030675*G0_1_0; A[842] = 0.0372571824394739*G0_0_1 - 0.0178705039816151*G0_1_1; A[843] = 0.00480034930989792*G0_0_2 + 0.00480034930989786*G0_1_2; A[844] = 0.069911039963123*G0_0_1 + 0.139822079926246*G0_0_2 + 0.0895482395048363*G0_1_1 + 0.069911039963123*G0_1_2; A[845] = -0.0387263842124948*G0_0_1 - 0.108637424175618*G0_0_2 - 0.0574176057031954*G0_1_1 - 0.0699110399631225*G0_1_2; A[846] = 0.0189782768992839*G0_0_1 + 0.0788945694544649*G0_0_2 + 0.0283728175438247*G0_1_1 + 0.0599162925551814*G0_1_2; A[847] = -0.00537576492437597*G0_0_1 - 0.0328352243499812*G0_0_2 - 0.00537576492437618*G0_1_1 - 0.0274594594256053*G0_1_2; A[848] = -0.00537576492437616*G0_0_0 - 0.00537576492437598*G0_0_2 - 0.0274594594256054*G0_1_0 - 0.0328352243499812*G0_1_2; A[849] = -0.00228991928210663*G0_0_0 - 0.00228991928210674*G0_0_2 - 0.00887914570640222*G0_1_0 - 0.0111690649885089*G0_1_2; A[850] = -0.00228991928210674*G0_0_0 - 0.00228991928210668*G0_0_2 - 0.0116844599266475*G0_1_0 - 0.0139743792087544*G0_1_2; A[851] = -0.00537576492437601*G0_0_0 - 0.00537576492437602*G0_0_2 - 0.00537576492437619*G0_1_0 - 0.0107515298487521*G0_1_2; A[852] = -0.0328352243499812*G0_0_0 - 0.00537576492437604*G0_0_1 + 0.0209159009072197*G0_1_0 - 0.0328352243499813*G0_1_1; A[853] = 0.0788945694544651*G0_0_0 + 0.0189782768992839*G0_0_1 - 0.0246345732456835*G0_1_0 + 0.100717304493346*G0_1_1; A[854] = -0.108637424175618*G0_0_0 - 0.038726384212495*G0_0_1 + 0.0263830016434176*G0_1_0 - 0.147063705006412*G0_1_1; A[855] = 0.139822079926246*G0_0_0 + 0.0699110399631229*G0_0_1 + 0.0699110399631229*G0_1_0 + 0.179096479009672*G0_1_1; A[856] = 0.00537576492437622*G0_0_0 + 0.00537576492437619*G0_0_1 + 0.00537576492437608*G0_1_0 + 0.00537576492437611*G0_1_1; A[857] = 0.0022899192821064*G0_0_0 + 0.00228991928210647*G0_0_1 + 0.00228991928210654*G0_1_0 + 0.00228991928210653*G0_1_1; A[858] = 0.002289919282107*G0_0_0 + 0.00228991928210697*G0_0_1 + 0.0022899192821067*G0_1_0 + 0.0022899192821067*G0_1_1; A[859] = 0.00537576492437596*G0_0_0 + 0.00537576492437596*G0_0_1 + 0.00537576492437615*G0_1_0 + 0.00537576492437618*G0_1_1; A[860] = 0.0328352243499812*G0_0_0 + 0.0274594594256053*G0_0_1 + 0.0328352243499813*G0_0_2 + 0.0274594594256049*G0_1_0 + 0.0220836945012292*G0_1_1 + 0.027459459425605*G0_1_2; A[861] = -0.0788945694544649*G0_0_0 - 0.0599162925551812*G0_0_1 - 0.0788945694544649*G0_0_2 - 0.0599162925551808*G0_1_0 - 0.0315434750113566*G0_1_1 - 0.0599162925551809*G0_1_2; A[862] = 0.108637424175618*G0_0_0 + 0.069911039963123*G0_0_1 + 0.108637424175618*G0_0_2 + 0.0699110399631227*G0_1_0 + 0.012493434259927*G0_1_1 + 0.0699110399631227*G0_1_2; A[863] = -0.139822079926246*G0_0_0 - 0.069911039963123*G0_0_1 - 0.139822079926246*G0_0_2 - 0.0699110399631228*G0_1_0 + 0.0196371995417134*G0_1_1 - 0.0699110399631228*G0_1_2; A[864] = 0.00537576492437611*G0_0_1 + 0.00537576492437617*G0_0_2 + 0.00537576492437614*G0_1_0 + 0.0107515298487518*G0_1_1 + 0.0107515298487519*G0_1_2; A[865] = 0.00228991928210684*G0_0_1 + 0.00228991928210682*G0_0_2 + 0.00228991928210674*G0_1_0 + 0.0139743792087544*G0_1_1 + 0.0139743792087544*G0_1_2; A[866] = 0.00228991928210689*G0_0_1 + 0.00228991928210693*G0_0_2 + 0.0022899192821068*G0_1_0 + 0.0111690649885095*G0_1_1 + 0.0111690649885095*G0_1_2; A[867] = 0.00537576492437589*G0_0_1 + 0.00537576492437596*G0_0_2 + 0.00537576492437586*G0_1_0 + 0.0328352243499812*G0_1_1 + 0.0328352243499812*G0_1_2; A[868] = 0.0118736555368504*G0_0_0 - 0.00939454064454044*G0_0_1 + 0.0118736555368499*G0_0_2 + 0.0264873854283585*G0_1_0 - 0.0641307878721066*G0_1_1 + 0.0477555816097478*G0_1_2; A[869] = -0.0429604514890977*G0_0_0 - 0.000685018588664784*G0_0_1 - 0.0429604514890964*G0_0_2 - 0.00704590548340645*G0_1_0 + 0.127315597693201*G0_1_1 - 0.0493213383838373*G0_1_2; A[870] = 0.124738623002512*G0_0_0 + 0.0284445813959708*G0_0_1 + 0.124738623002511*G0_0_2 + 0.0962940416065418*G0_1_0 - 0.064456987200042*G0_1_1 + 0.192588083213081*G0_1_2; A[871] = 0.00254435475789558*G0_0_0 - 0.00329461321214806*G0_0_1 + 0.00254435475789578*G0_0_2 + 0.00844856259352671*G0_1_0 - 0.0292600797158086*G0_1_1 + 0.0142875305635719*G0_1_2; A[872] = -0.0429604514890967*G0_0_0 - 0.000685018588664817*G0_0_1 - 0.0429604514890976*G0_0_2 - 0.0422754329004317*G0_1_0 + 0.0439716694056967*G0_1_1 - 0.0845508658008655*G0_1_2; A[873] = 0.01187365553685*G0_0_0 - 0.00939454064454059*G0_0_1 + 0.0118736555368501*G0_0_2 + 0.0212681961813904*G0_1_0 - 0.0187890812890817*G0_1_1 + 0.0425363923627808*G0_1_2; A[874] = -0.01187365553685*G0_0_0 - 0.0212681961813908*G0_0_1 - 0.0212681961813911*G0_1_0 - 0.0306627368259315*G0_1_1; A[875] = 0.042960451489098*G0_0_0 + 0.0422754329004331*G0_0_1 + 0.0422754329004335*G0_1_0 + 0.0642612676032815*G0_1_1; A[876] = -0.124738623002512*G0_0_0 - 0.0962940416065416*G0_0_1 - 0.0962940416065418*G0_1_0 - 0.128522535206562*G0_1_1; A[877] = -0.00254435475789604*G0_0_0 - 0.005838967970044*G0_0_1 - 0.00583896797004406*G0_1_0 - 0.00913358118219159*G0_1_1; A[878] = 0.0429604514890968*G0_0_0 + 0.0422754329004324*G0_0_1 + 0.0422754329004318*G0_1_0 + 0.0642612676032804*G0_1_1; A[879] = -0.0118736555368501*G0_0_0 - 0.0212681961813908*G0_0_1 - 0.0212681961813906*G0_1_0 - 0.0306627368259314*G0_1_1; A[880] = 0.00939454064454044*G0_0_1 + 0.00939454064454066*G0_1_0 + 0.018789081289081*G0_1_1; A[881] = 0.00329461321214798*G0_0_1 + 0.0032946132121479*G0_1_0 + 0.0292600797158091*G0_1_1; A[882] = 0.00939454064454045*G0_0_1 + 0.00939454064454074*G0_1_0 + 0.0641307878721067*G0_1_1; A[883] = 0.00329461321214813*G0_0_1 + 0.00329461321214819*G0_1_0 + 0.00658922642429573*G0_1_1; A[884] = 0.0032946132121481*G0_0_1 + 0.00329461321214748*G0_1_0 + 0.0292600797158086*G0_1_1; A[885] = 0.00939454064454054*G0_0_1 + 0.00939454064454077*G0_1_0 + 0.0187890812890817*G0_1_1; A[886] = -0.0212681961813907*G0_0_1 - 0.0118736555368497*G0_0_2 - 0.0212681961813899*G0_1_0 - 0.0613254736518617*G0_1_1 - 0.0425363923627807*G0_1_2; A[887] = -0.00583896797004483*G0_0_1 - 0.00254435475789665*G0_0_2 - 0.00583896797004499*G0_1_0 - 0.0435476102793818*G0_1_1 - 0.0142875305635722*G0_1_2; A[888] = -0.0212681961813905*G0_0_1 - 0.01187365553685*G0_0_2 - 0.0212681961813898*G0_1_0 - 0.111886369481855*G0_1_1 - 0.0477555816097479*G0_1_2; A[889] = 0.042275432900433*G0_0_1 + 0.0429604514890974*G0_0_2 + 0.042275432900432*G0_1_0 + 0.128522535206562*G0_1_1 + 0.0845508658008653*G0_1_2; A[890] = 0.0422754329004329*G0_0_1 + 0.0429604514890967*G0_0_2 + 0.0422754329004324*G0_1_0 + 0.176636936077039*G0_1_1 + 0.0493213383838374*G0_1_2; A[891] = -0.0962940416065412*G0_0_1 - 0.124738623002511*G0_0_2 - 0.0962940416065404*G0_1_0 - 0.257045070413124*G0_1_1 - 0.192588083213081*G0_1_2; A[892] = -0.00260959462348265*G0_0_1 - 0.0026095946234826*G0_1_0 - 0.050560895829992*G0_1_1; A[893] = -0.00260959462348333*G0_0_1 - 0.00260959462348499*G0_1_0 - 0.15657567740901*G0_1_1; A[894] = -0.0352295274170284*G0_0_1 - 0.0352295274170272*G0_1_0 + 0.0962288017409529*G0_1_1; A[895] = -0.00260959462348333*G0_0_1 - 0.00260959462348264*G0_1_0 - 0.0505608958299922*G0_1_1; A[896] = -0.017870503981615*G0_0_0 - 0.017870503981615*G0_0_1 - 0.017870503981615*G0_0_2 - 0.017870503981615*G0_1_0 - 0.017870503981615*G0_1_1 - 0.017870503981615*G0_1_2 - 0.0551276864210887*G0_2_0 - 0.0551276864210887*G0_2_1 - 0.0551276864210887*G0_2_2; A[897] = -0.00480034930989802*G0_0_0 - 0.00480034930989804*G0_1_0; A[898] = -0.00480034930989786*G0_0_1 - 0.00480034930989787*G0_1_1; A[899] = 0.0105310191030678*G0_0_2 + 0.0105310191030678*G0_1_2 + 0.0153313684129657*G0_2_2; A[900] = 0.010751529848752*G0_0_1 + 0.0053757649243763*G0_0_2 + 0.010751529848752*G0_1_1 + 0.00537576492437627*G0_1_2 + 0.00537576492437624*G0_2_1; A[901] = 0.013974379208754*G0_0_1 + 0.0116844599266468*G0_0_2 + 0.013974379208754*G0_1_1 + 0.0116844599266469*G0_1_2 + 0.0116844599266471*G0_2_1 + 0.00939454064454018*G0_2_2; A[902] = 0.0111690649885091*G0_0_1 + 0.00887914570640292*G0_0_2 + 0.0111690649885091*G0_1_1 + 0.00887914570640297*G0_1_2 + 0.00887914570640245*G0_2_1 + 0.006589226424296*G0_2_2; A[903] = 0.0328352243499812*G0_0_1 + 0.0274594594256048*G0_0_2 + 0.0328352243499813*G0_1_1 + 0.0274594594256049*G0_1_2 + 0.0274594594256052*G0_2_1 + 0.0220836945012288*G0_2_2; A[904] = 0.0107515298487521*G0_0_0 + 0.0053757649243757*G0_0_2 + 0.010751529848752*G0_1_0 + 0.00537576492437568*G0_1_2 + 0.0053757649243761*G0_2_0; A[905] = 0.013974379208754*G0_0_0 + 0.0116844599266477*G0_0_2 + 0.0139743792087541*G0_1_0 + 0.0116844599266476*G0_1_2 + 0.0116844599266473*G0_2_0 + 0.00939454064454107*G0_2_2; A[906] = 0.0111690649885095*G0_0_0 + 0.00887914570640245*G0_0_2 + 0.0111690649885094*G0_1_0 + 0.00887914570640246*G0_1_2 + 0.00887914570640278*G0_2_0 + 0.00658922642429554*G0_2_2; A[907] = 0.0328352243499813*G0_0_0 + 0.0274594594256052*G0_0_2 + 0.0328352243499814*G0_1_0 + 0.0274594594256052*G0_1_2 + 0.0274594594256053*G0_2_0 + 0.0220836945012294*G0_2_2; A[908] = 0.00537576492437581*G0_0_0 + 0.0053757649243756*G0_0_1 + 0.00537576492437581*G0_1_0 + 0.00537576492437558*G0_1_1; A[909] = 0.00228991928210691*G0_0_0 + 0.00228991928210696*G0_0_1 + 0.0022899192821069*G0_1_0 + 0.00228991928210702*G0_1_1; A[910] = 0.0022899192821067*G0_0_0 + 0.00228991928210685*G0_0_1 + 0.00228991928210678*G0_1_0 + 0.00228991928210683*G0_1_1; A[911] = 0.00537576492437622*G0_0_0 + 0.00537576492437608*G0_0_1 + 0.00537576492437619*G0_1_0 + 0.00537576492437611*G0_1_1; A[912] = 0.179096479009672*G0_0_0 + 0.179096479009672*G0_0_1 + 0.10918543904655*G0_0_2 + 0.179096479009672*G0_1_0 + 0.179096479009672*G0_1_1 + 0.10918543904655*G0_1_2 + 0.10918543904655*G0_2_0 + 0.10918543904655*G0_2_1 + 0.179096479009672*G0_2_2; A[913] = -0.147063705006412*G0_0_0 - 0.147063705006412*G0_0_1 - 0.173446706649831*G0_0_2 - 0.147063705006412*G0_1_0 - 0.147063705006413*G0_1_1 - 0.173446706649831*G0_1_2 - 0.108337320793918*G0_2_0 - 0.108337320793918*G0_2_1 - 0.243357746612954*G0_2_2; A[914] = 0.100717304493346*G0_0_0 + 0.100717304493346*G0_0_1 + 0.12535187773903*G0_0_2 + 0.100717304493346*G0_1_0 + 0.100717304493346*G0_1_1 + 0.12535187773903*G0_1_2 + 0.0817390275940622*G0_2_0 + 0.0817390275940622*G0_2_1 + 0.185268170294211*G0_2_2; A[915] = -0.0328352243499812*G0_0_0 - 0.0328352243499812*G0_0_1 - 0.0537511252572016*G0_0_2 - 0.0328352243499813*G0_1_0 - 0.0328352243499813*G0_1_1 - 0.0537511252572016*G0_1_2 - 0.0274594594256052*G0_2_0 - 0.0274594594256052*G0_2_1 - 0.0812105846828068*G0_2_2; A[916] = 0.0895482395048358*G0_0_0 + 0.0196371995417134*G0_0_1 + 0.0895482395048359*G0_0_2 + 0.089548239504836*G0_1_0 + 0.0196371995417134*G0_1_1 + 0.089548239504836*G0_1_2 + 0.0196371995417134*G0_2_0 + 0.0895482395048358*G0_2_1 + 0.0196371995417133*G0_2_2; A[917] = -0.0574176057031953*G0_0_0 + 0.0124934342599272*G0_0_1 - 0.0574176057031954*G0_0_2 - 0.0574176057031954*G0_1_0 + 0.0124934342599272*G0_1_1 - 0.0574176057031955*G0_1_2 - 0.0186912214907005*G0_2_0 - 0.0574176057031954*G0_2_1 - 0.0186912214907005*G0_2_2; A[918] = 0.0283728175438244*G0_0_0 - 0.0315434750113565*G0_0_1 + 0.0283728175438245*G0_0_2 + 0.0283728175438244*G0_1_0 - 0.0315434750113565*G0_1_1 + 0.0283728175438245*G0_1_2 + 0.00939454064454084*G0_2_0 + 0.0283728175438242*G0_2_1 + 0.00939454064454088*G0_2_2; A[919] = -0.0053757649243762*G0_0_0 + 0.0220836945012289*G0_0_1 - 0.0053757649243762*G0_0_2 - 0.00537576492437616*G0_1_0 + 0.0220836945012289*G0_1_1 - 0.00537576492437617*G0_1_2 - 0.0053757649243759*G0_2_1; A[920] = 0.0196371995417134*G0_0_0 + 0.0895482395048358*G0_0_1 + 0.0895482395048358*G0_0_2 + 0.0196371995417133*G0_1_0 + 0.0895482395048359*G0_1_1 + 0.0895482395048358*G0_1_2 + 0.0895482395048357*G0_2_0 + 0.0196371995417133*G0_2_1 + 0.0196371995417133*G0_2_2; A[921] = 0.0124934342599272*G0_0_0 - 0.0574176057031952*G0_0_1 - 0.0574176057031952*G0_0_2 + 0.0124934342599273*G0_1_0 - 0.0574176057031952*G0_1_1 - 0.0574176057031952*G0_1_2 - 0.0574176057031951*G0_2_0 - 0.0186912214907006*G0_2_1 - 0.0186912214907006*G0_2_2; A[922] = -0.0315434750113568*G0_0_0 + 0.028372817543824*G0_0_1 + 0.028372817543824*G0_0_2 - 0.0315434750113569*G0_1_0 + 0.0283728175438241*G0_1_1 + 0.028372817543824*G0_1_2 + 0.028372817543824*G0_2_0 + 0.00939454064454064*G0_2_1 + 0.00939454064454065*G0_2_2; A[923] = 0.0220836945012292*G0_0_0 - 0.00537576492437562*G0_0_1 - 0.00537576492437563*G0_0_2 + 0.0220836945012293*G0_1_0 - 0.0053757649243756*G0_1_1 - 0.00537576492437561*G0_1_2 - 0.00537576492437582*G0_2_0; A[924] = 0.0187890812890812*G0_0_0 + 0.018789081289081*G0_0_1 + 0.00939454064454002*G0_0_2 + 0.0187890812890811*G0_1_0 + 0.0187890812890808*G0_1_1 + 0.00939454064453996*G0_1_2 + 0.00939454064454082*G0_2_0 + 0.00939454064454057*G0_2_1; A[925] = 0.00658922642429607*G0_0_0 + 0.00658922642429649*G0_0_1 + 0.00329461321214866*G0_0_2 + 0.00658922642429617*G0_1_0 + 0.00658922642429658*G0_1_1 + 0.00329461321214877*G0_1_2 + 0.00329461321214791*G0_2_0 + 0.0032946132121484*G0_2_1; A[926] = 0.0187890812890808*G0_0_0 + 0.0187890812890806*G0_0_1 + 0.00939454064454046*G0_0_2 + 0.0187890812890808*G0_1_0 + 0.0187890812890806*G0_1_1 + 0.00939454064454049*G0_1_2 + 0.0093945406445406*G0_2_0 + 0.00939454064454018*G0_2_1; A[927] = 0.0292600797158092*G0_0_0 + 0.0292600797158092*G0_0_1 + 0.0259654665036615*G0_0_2 + 0.0292600797158091*G0_1_0 + 0.0292600797158091*G0_1_1 + 0.0259654665036613*G0_1_2 + 0.0259654665036619*G0_2_0 + 0.0259654665036617*G0_2_1 + 0.0226708532915143*G0_2_2; A[928] = 0.0292600797158081*G0_0_0 + 0.0292600797158082*G0_0_1 + 0.0259654665036597*G0_0_2 + 0.0292600797158083*G0_1_0 + 0.0292600797158083*G0_1_1 + 0.0259654665036598*G0_1_2 + 0.0259654665036602*G0_2_0 + 0.0259654665036607*G0_2_1 + 0.0226708532915122*G0_2_2; A[929] = 0.0641307878721065*G0_0_0 + 0.064130787872107*G0_0_1 + 0.0547362472275664*G0_0_2 + 0.0641307878721067*G0_1_0 + 0.064130787872107*G0_1_1 + 0.0547362472275665*G0_1_2 + 0.0547362472275662*G0_2_0 + 0.0547362472275666*G0_2_1 + 0.0453417065830258*G0_2_2; A[930] = -0.0644569872000423*G0_0_0 - 0.257045070413124*G0_0_1 - 0.160751028806583*G0_0_2 - 0.0644569872000424*G0_1_0 - 0.257045070413124*G0_1_1 - 0.160751028806583*G0_1_2 - 0.0929015685960116*G0_2_0 - 0.160751028806583*G0_2_1 - 0.0644569872000417*G0_2_2; A[931] = 0.0439716694056967*G0_0_0 + 0.128522535206563*G0_0_1 + 0.086247102306129*G0_0_2 + 0.0439716694056967*G0_1_0 + 0.128522535206563*G0_1_1 + 0.086247102306129*G0_1_2 + 0.0446566879943614*G0_2_0 + 0.0862471023061294*G0_2_1 + 0.0439716694056964*G0_2_2; A[932] = -0.0187890812890809*G0_0_0 - 0.0613254736518626*G0_0_1 - 0.0400572774704714*G0_0_2 - 0.0187890812890809*G0_1_0 - 0.0613254736518625*G0_1_1 - 0.0400572774704715*G0_1_2 - 0.00939454064454072*G0_2_0 - 0.0400572774704723*G0_2_1 - 0.0187890812890811*G0_2_2; A[933] = 0.1273155976932*G0_0_0 + 0.176636936077038*G0_0_1 + 0.134361503176606*G0_0_2 + 0.1273155976932*G0_1_0 + 0.176636936077039*G0_1_1 + 0.134361503176606*G0_1_2 + 0.128000616281865*G0_2_0 + 0.134361503176606*G0_2_1 + 0.0920860702761732*G0_2_2; A[934] = -0.0292600797158081*G0_0_0 - 0.0435476102793801*G0_0_1 - 0.0377086423093363*G0_0_2 - 0.0292600797158083*G0_1_0 - 0.0435476102793803*G0_1_1 - 0.0377086423093364*G0_1_2 - 0.0259654665036602*G0_2_0 - 0.0377086423093357*G0_2_1 - 0.031869674339292*G0_2_2; A[935] = -0.0641307878721065*G0_0_0 - 0.111886369481855*G0_0_1 - 0.090618173300464*G0_0_2 - 0.0641307878721067*G0_1_0 - 0.111886369481855*G0_1_1 - 0.0906181733004642*G0_1_2 - 0.0547362472275662*G0_2_0 - 0.0906181733004645*G0_2_1 - 0.0693499771190735*G0_2_2; A[936] = -0.257045070413124*G0_0_0 - 0.0644569872000423*G0_0_1 - 0.160751028806583*G0_0_2 - 0.257045070413124*G0_1_0 - 0.0644569872000424*G0_1_1 - 0.160751028806583*G0_1_2 - 0.160751028806583*G0_2_0 - 0.0929015685960122*G0_2_1 - 0.0644569872000419*G0_2_2; A[937] = 0.128522535206562*G0_0_0 + 0.043971669405697*G0_0_1 + 0.0862471023061292*G0_0_2 + 0.128522535206562*G0_1_0 + 0.0439716694056969*G0_1_1 + 0.0862471023061291*G0_1_2 + 0.0862471023061294*G0_2_0 + 0.044656687994361*G0_2_1 + 0.0439716694056968*G0_2_2; A[938] = -0.061325473651862*G0_0_0 - 0.018789081289081*G0_0_1 - 0.040057277470472*G0_0_2 - 0.0613254736518621*G0_1_0 - 0.0187890812890809*G0_1_1 - 0.040057277470472*G0_1_2 - 0.0400572774704717*G0_2_0 - 0.00939454064454062*G0_2_1 - 0.0187890812890816*G0_2_2; A[939] = 0.176636936077039*G0_0_0 + 0.127315597693201*G0_0_1 + 0.134361503176606*G0_0_2 + 0.176636936077039*G0_1_0 + 0.1273155976932*G0_1_1 + 0.134361503176607*G0_1_2 + 0.134361503176607*G0_2_0 + 0.128000616281865*G0_2_1 + 0.0920860702761736*G0_2_2; A[940] = -0.0435476102793806*G0_0_0 - 0.029260079715809*G0_0_1 - 0.0377086423093361*G0_0_2 - 0.0435476102793805*G0_1_0 - 0.0292600797158089*G0_1_1 - 0.0377086423093361*G0_1_2 - 0.0377086423093363*G0_2_0 - 0.0259654665036615*G0_2_1 - 0.031869674339292*G0_2_2; A[941] = -0.111886369481855*G0_0_0 - 0.0641307878721071*G0_0_1 - 0.0906181733004646*G0_0_2 - 0.111886369481855*G0_1_0 - 0.0641307878721071*G0_1_1 - 0.0906181733004646*G0_1_2 - 0.090618173300465*G0_2_0 - 0.0547362472275666*G0_2_1 - 0.069349977119074*G0_2_2; A[942] = -0.128522535206562*G0_0_0 - 0.128522535206562*G0_0_1 - 0.032228493600021*G0_0_2 - 0.128522535206562*G0_1_0 - 0.128522535206562*G0_1_1 - 0.032228493600021*G0_1_2 - 0.0322284936000211*G0_2_0 - 0.0322284936000209*G0_2_1 - 0.0606730749959909*G0_2_2; A[943] = 0.0642612676032806*G0_0_0 + 0.0642612676032806*G0_0_1 + 0.0219858347028482*G0_0_2 + 0.0642612676032807*G0_1_0 + 0.0642612676032806*G0_1_1 + 0.0219858347028482*G0_1_2 + 0.0219858347028483*G0_2_0 + 0.021985834702848*G0_2_1 + 0.0226708532915122*G0_2_2; A[944] = -0.0306627368259307*G0_0_0 - 0.030662736825931*G0_0_1 - 0.00939454064454023*G0_0_2 - 0.0306627368259307*G0_1_0 - 0.0306627368259311*G0_1_1 - 0.00939454064454016*G0_1_2 - 0.0093945406445405*G0_2_0 - 0.00939454064454065*G0_2_1; A[945] = 0.0642612676032805*G0_0_0 + 0.0642612676032809*G0_0_1 + 0.0219858347028484*G0_0_2 + 0.0642612676032806*G0_1_0 + 0.064261267603281*G0_1_1 + 0.0219858347028485*G0_1_2 + 0.0219858347028484*G0_2_0 + 0.0219858347028487*G0_2_1 + 0.0226708532915132*G0_2_2; A[946] = -0.00913358118219212*G0_0_0 - 0.00913358118219224*G0_0_1 - 0.0032946132121484*G0_0_2 - 0.00913358118219218*G0_1_0 - 0.00913358118219226*G0_1_1 - 0.0032946132121485*G0_1_2 - 0.00329461321214781*G0_2_0 - 0.00329461321214746*G0_2_1; A[947] = -0.0306627368259312*G0_0_0 - 0.0306627368259311*G0_0_1 - 0.00939454064454066*G0_0_2 - 0.0306627368259313*G0_1_0 - 0.0306627368259311*G0_1_1 - 0.00939454064454068*G0_1_2 - 0.00939454064454099*G0_2_0 - 0.00939454064454139*G0_2_1; A[948] = 0.096228801740953*G0_0_0 + 0.0962288017409526*G0_0_1 + 0.13145832915798*G0_0_2 + 0.0962288017409528*G0_1_0 + 0.0962288017409527*G0_1_1 + 0.131458329157979*G0_1_2 + 0.131458329157979*G0_2_0 + 0.13145832915798*G0_2_1 + 0.166687856575007*G0_2_2; A[949] = -0.0505608958299919*G0_0_0 - 0.0505608958299934*G0_0_1 - 0.0479513012065092*G0_0_2 - 0.0505608958299916*G0_1_0 - 0.0505608958299934*G0_1_1 - 0.0479513012065091*G0_1_2 - 0.0479513012065085*G0_2_0 - 0.0479513012065096*G0_2_1 - 0.0453417065830264*G0_2_2; A[950] = -0.0505608958299927*G0_0_0 - 0.0505608958299913*G0_0_1 - 0.0479513012065083*G0_0_2 - 0.0505608958299929*G0_1_0 - 0.0505608958299914*G0_1_1 - 0.0479513012065085*G0_1_2 - 0.0479513012065093*G0_2_0 - 0.0479513012065078*G0_2_1 - 0.0453417065830252*G0_2_2; A[951] = -0.15657567740901*G0_0_0 - 0.156575677409009*G0_0_1 - 0.153966082785525*G0_0_2 - 0.156575677409009*G0_1_0 - 0.156575677409009*G0_1_1 - 0.153966082785525*G0_1_2 - 0.153966082785527*G0_2_0 - 0.153966082785526*G0_2_1 - 0.151356488162042*G0_2_2; A[952] = 0.0214691349673988*G0_0_0 + 0.0214691349673989*G0_0_1 + 0.0214691349673989*G0_0_2 + 0.0214691349673988*G0_1_0 + 0.0214691349673989*G0_1_1 + 0.0214691349673988*G0_1_2 + 0.0551276864210889*G0_2_0 + 0.0551276864210889*G0_2_1 + 0.0551276864210889*G0_2_2; A[953] = -0.0033650722669817*G0_0_0 - 0.0033650722669817*G0_1_0; A[954] = -0.003365072266982*G0_0_1 - 0.00336507226698197*G0_1_1; A[955] = -0.0232632312710438*G0_0_2 - 0.0232632312710439*G0_1_2 - 0.0388177200243172*G0_2_2; A[956] = 0.0139743792087539*G0_0_1 + 0.00228991928210641*G0_0_2 + 0.013974379208754*G0_1_1 + 0.00228991928210648*G0_1_2 + 0.00228991928210662*G0_2_1; A[957] = -0.0263047138047137*G0_0_1 - 0.0131523569023564*G0_0_2 - 0.0263047138047138*G0_1_1 - 0.0131523569023565*G0_1_2 - 0.0131523569023568*G0_2_1 + 6.52398655873567e-05*G0_2_2; A[958] = -0.00523223722008374*G0_0_1 - 0.00578025209101617*G0_0_2 - 0.00523223722008376*G0_1_1 - 0.00578025209101619*G0_1_2 - 0.00578025209101554*G0_2_1 - 0.00626302709636054*G0_2_2; A[959] = -0.0788945694544649*G0_0_1 - 0.0599162925551807*G0_0_2 - 0.0788945694544652*G0_1_1 - 0.0599162925551809*G0_1_2 - 0.0599162925551814*G0_2_1 - 0.0315434750113564*G0_2_2; A[960] = 0.013974379208754*G0_0_0 + 0.00228991928210729*G0_0_2 + 0.0139743792087543*G0_1_0 + 0.00228991928210742*G0_1_2 + 0.00228991928210687*G0_2_0; A[961] = -0.0263047138047135*G0_0_0 - 0.0131523569023574*G0_0_2 - 0.0263047138047139*G0_1_0 - 0.0131523569023575*G0_1_2 - 0.0131523569023571*G0_2_0 + 6.523986558602e-05*G0_2_2; A[962] = -0.00523223722008457*G0_0_0 - 0.00578025209101566*G0_0_2 - 0.00523223722008426*G0_1_0 - 0.00578025209101559*G0_1_2 - 0.005780252091016*G0_2_0 - 0.00626302709635984*G0_2_2; A[963] = -0.0788945694544652*G0_0_0 - 0.0599162925551813*G0_0_2 - 0.0788945694544654*G0_1_0 - 0.0599162925551815*G0_1_2 - 0.0599162925551816*G0_2_0 - 0.0315434750113573*G0_2_2; A[964] = 0.00228991928210707*G0_0_0 + 0.00228991928210741*G0_0_1 + 0.00228991928210719*G0_1_0 + 0.00228991928210753*G0_1_1; A[965] = 0.00178757231708581*G0_0_0 + 0.00178757231708572*G0_0_1 + 0.00178757231708578*G0_1_0 + 0.00178757231708563*G0_1_1; A[966] = 0.00178757231708627*G0_0_0 + 0.00178757231708623*G0_0_1 + 0.00178757231708623*G0_1_0 + 0.0017875723170863*G0_1_1; A[967] = 0.0022899192821064*G0_0_0 + 0.00228991928210654*G0_0_1 + 0.00228991928210647*G0_1_0 + 0.00228991928210653*G0_1_1; A[968] = -0.147063705006412*G0_0_0 - 0.147063705006412*G0_0_1 - 0.108337320793918*G0_0_2 - 0.147063705006412*G0_1_0 - 0.147063705006413*G0_1_1 - 0.108337320793918*G0_1_2 - 0.173446706649831*G0_2_0 - 0.173446706649831*G0_2_1 - 0.243357746612954*G0_2_2; A[969] = 0.304226541205706*G0_0_0 + 0.304226541205706*G0_0_1 + 0.22609527817861*G0_0_2 + 0.304226541205706*G0_1_0 + 0.304226541205706*G0_1_1 + 0.226095278178611*G0_1_2 + 0.22609527817861*G0_2_0 + 0.226095278178611*G0_2_1 + 0.428965164208218*G0_2_2; A[970] = -0.204187731314466*G0_0_0 - 0.204187731314466*G0_0_1 - 0.219493003781198*G0_0_2 - 0.204187731314467*G0_1_0 - 0.204187731314466*G0_1_1 - 0.219493003781198*G0_1_2 - 0.16769255050505*G0_2_0 - 0.16769255050505*G0_2_1 - 0.387185554286248*G0_2_2; A[971] = 0.0788945694544649*G0_0_0 + 0.0788945694544649*G0_0_1 + 0.10352914270015*G0_0_2 + 0.0788945694544652*G0_1_0 + 0.0788945694544652*G0_1_1 + 0.10352914270015*G0_1_2 + 0.0599162925551814*G0_2_0 + 0.0599162925551814*G0_2_1 + 0.185268170294212*G0_2_2; A[972] = -0.0574176057031956*G0_0_0 - 0.0186912214907008*G0_0_1 - 0.0574176057031956*G0_0_2 - 0.0574176057031957*G0_1_0 - 0.0186912214907008*G0_1_1 - 0.0574176057031957*G0_1_2 + 0.0124934342599272*G0_2_0 - 0.0574176057031956*G0_2_1 + 0.0124934342599272*G0_2_2; A[973] = 0.00506261356955818*G0_0_0 + 0.000260959462348434*G0_0_1 + 0.00506261356955821*G0_0_2 + 0.00506261356955819*G0_1_0 + 0.000260959462348439*G0_1_1 + 0.00506261356955822*G0_1_2 + 0.000260959462348326*G0_2_0 + 0.00506261356955806*G0_2_1 + 0.000260959462348301*G0_2_2; A[974] = -0.000482775005344646*G0_0_0 - 0.00626302709636024*G0_0_1 - 0.000482775005344639*G0_0_2 - 0.000482775005344613*G0_1_0 - 0.00626302709636024*G0_1_1 - 0.000482775005344607*G0_1_2 + 6.52398655869228e-05*G0_2_0 - 0.000482775005344573*G0_2_1 + 6.52398655868746e-05*G0_2_2; A[975] = -0.00228991928210645*G0_0_0 + 0.00658922642429566*G0_0_1 - 0.00228991928210649*G0_0_2 - 0.00228991928210652*G0_1_0 + 0.00658922642429564*G0_1_1 - 0.00228991928210656*G0_1_2 - 0.0022899192821068*G0_2_1; A[976] = -0.0186912214907007*G0_0_0 - 0.0574176057031955*G0_0_1 - 0.0574176057031955*G0_0_2 - 0.0186912214907007*G0_1_0 - 0.0574176057031955*G0_1_1 - 0.0574176057031955*G0_1_2 - 0.0574176057031955*G0_2_0 + 0.0124934342599273*G0_2_1 + 0.0124934342599273*G0_2_2; A[977] = 0.000260959462348357*G0_0_0 + 0.00506261356955774*G0_0_1 + 0.00506261356955777*G0_0_2 + 0.000260959462348199*G0_1_0 + 0.00506261356955763*G0_1_1 + 0.00506261356955767*G0_1_2 + 0.00506261356955759*G0_2_0 + 0.000260959462348373*G0_2_1 + 0.000260959462348388*G0_2_2; A[978] = -0.00626302709636009*G0_0_0 - 0.000482775005343967*G0_0_1 - 0.000482775005343968*G0_0_2 - 0.00626302709635992*G0_1_0 - 0.000482775005343899*G0_1_1 - 0.0004827750053439*G0_1_2 - 0.00048277500534411*G0_2_0 + 6.52398655872985e-05*G0_2_1 + 6.52398655872839e-05*G0_2_2; A[979] = 0.00658922642429538*G0_0_0 - 0.00228991928210741*G0_0_1 - 0.00228991928210742*G0_0_2 + 0.00658922642429531*G0_1_0 - 0.00228991928210754*G0_1_1 - 0.00228991928210755*G0_1_2 - 0.00228991928210715*G0_2_0; A[980] = -0.0148746893538559*G0_0_0 - 0.0148746893538561*G0_0_1 + 6.52398655876058e-05*G0_0_2 - 0.014874689353856*G0_1_0 - 0.0148746893538559*G0_1_1 + 6.52398655877952e-05*G0_1_2 + 6.52398655866321e-05*G0_2_0 + 6.52398655871592e-05*G0_2_1; A[981] = 0.00450155072550854*G0_0_0 + 0.00450155072550876*G0_0_1 + 0.00257697469068916*G0_0_2 + 0.00450155072550862*G0_1_0 + 0.00450155072550874*G0_1_1 + 0.00257697469068909*G0_1_2 + 0.00257697469069003*G0_2_0 + 0.0025769746906895*G0_2_1; A[982] = -0.0148746893538559*G0_0_0 - 0.014874689353856*G0_0_1 + 6.52398655867613e-05*G0_0_2 - 0.0148746893538559*G0_1_0 - 0.014874689353856*G0_1_1 + 6.52398655868125e-05*G0_1_2 + 6.52398655870016e-05*G0_2_0 + 6.52398655872746e-05*G0_2_1; A[983] = -0.0189848008858428*G0_0_0 - 0.018984800885843*G0_0_1 - 0.00949240044292169*G0_0_2 - 0.0189848008858424*G0_1_0 - 0.018984800885843*G0_1_1 - 0.00949240044292166*G0_1_2 - 0.00949240044292227*G0_2_0 - 0.00949240044292239*G0_2_1 - 0.000652398655872505*G0_2_2; A[984] = -0.0189848008858417*G0_0_0 - 0.0189848008858414*G0_0_1 - 0.00949240044292047*G0_0_2 - 0.018984800885842*G0_1_0 - 0.0189848008858415*G0_1_1 - 0.00949240044292056*G0_1_2 - 0.00949240044292078*G0_2_0 - 0.00949240044292091*G0_2_1 - 0.000652398655870131*G0_2_2; A[985] = -0.127087258163646*G0_0_0 - 0.127087258163646*G0_0_1 - 0.0893133759887224*G0_0_2 - 0.127087258163646*G0_1_0 - 0.127087258163647*G0_1_1 - 0.0893133759887226*G0_1_2 - 0.0893133759887225*G0_2_0 - 0.0893133759887231*G0_2_1 - 0.0665446628988292*G0_2_2; A[986] = 0.132306447410614*G0_0_0 + 0.121346149991983*G0_0_1 + 0.194675758911869*G0_0_2 + 0.132306447410614*G0_1_0 + 0.121346149991984*G0_1_1 + 0.194675758911869*G0_1_2 + 0.0589768384907261*G0_2_0 + 0.194675758911868*G0_2_1 - 0.0033924730105293*G0_2_2; A[987] = -0.0436454700777614*G0_0_0 + 0.0371867233846378*G0_0_1 - 0.0371541034518461*G0_0_2 - 0.0436454700777615*G0_1_0 + 0.0371867233846379*G0_1_1 - 0.0371541034518462*G0_1_2 - 0.00975335990526935*G0_2_0 - 0.0371541034518461*G0_2_1 - 0.00678494602105647*G0_2_2; A[988] = 0.0148746893538561*G0_0_0 - 0.0254435475789628*G0_0_1 + 0.0136351319077011*G0_0_2 + 0.0148746893538561*G0_1_0 - 0.0254435475789628*G0_1_1 + 0.0136351319077011*G0_1_2 - 6.52398655868755e-05*G0_2_0 + 0.0136351319077019*G0_2_1 - 0.000130479731174251*G0_2_2; A[989] = -0.166948816037355*G0_0_0 - 0.334680510461757*G0_0_1 - 0.250814663249557*G0_0_2 - 0.166948816037355*G0_1_0 - 0.334680510461758*G0_1_1 - 0.250814663249557*G0_1_2 - 0.160783648739376*G0_2_0 - 0.250814663249557*G0_2_1 - 0.0622388317700806*G0_2_2; A[990] = 0.0189848008858416*G0_0_0 + 0.056758683060765*G0_0_1 + 0.0378717419733041*G0_0_2 + 0.0189848008858419*G0_1_0 + 0.0567586830607651*G0_1_1 + 0.0378717419733042*G0_1_2 + 0.00949240044292077*G0_2_0 + 0.0378717419733032*G0_2_1 + 0.0127870136550688*G0_2_2; A[991] = 0.127087258163646*G0_0_0 + 0.20941996853455*G0_0_1 + 0.173472802596065*G0_0_2 + 0.127087258163646*G0_1_0 + 0.20941996853455*G0_1_1 + 0.173472802596065*G0_1_2 + 0.0893133759887226*G0_2_0 + 0.173472802596066*G0_2_1 + 0.084681345532039*G0_2_2; A[992] = 0.121346149991983*G0_0_0 + 0.132306447410614*G0_0_1 + 0.194675758911869*G0_0_2 + 0.121346149991983*G0_1_0 + 0.132306447410614*G0_1_1 + 0.194675758911869*G0_1_2 + 0.194675758911869*G0_2_0 + 0.0589768384907269*G0_2_1 - 0.00339247301052888*G0_2_2; A[993] = 0.0371867233846392*G0_0_0 - 0.043645470077762*G0_0_1 - 0.0371541034518467*G0_0_2 + 0.0371867233846392*G0_1_0 - 0.043645470077762*G0_1_1 - 0.0371541034518466*G0_1_2 - 0.0371541034518464*G0_2_0 - 0.0097533599052694*G0_2_1 - 0.00678494602105732*G0_2_2; A[994] = -0.0254435475789636*G0_0_0 + 0.0148746893538561*G0_0_1 + 0.0136351319077018*G0_0_2 - 0.0254435475789638*G0_1_0 + 0.0148746893538558*G0_1_1 + 0.0136351319077018*G0_1_2 + 0.0136351319077013*G0_2_0 - 6.52398655871659e-05*G0_2_1 - 0.00013047973117353*G0_2_2; A[995] = -0.334680510461758*G0_0_0 - 0.166948816037356*G0_0_1 - 0.250814663249557*G0_0_2 - 0.334680510461758*G0_1_0 - 0.166948816037356*G0_1_1 - 0.250814663249557*G0_1_2 - 0.250814663249558*G0_2_0 - 0.160783648739377*G0_2_1 - 0.0622388317700812*G0_2_2; A[996] = 0.0567586830607658*G0_0_0 + 0.0189848008858428*G0_0_1 + 0.0378717419733043*G0_0_2 + 0.056758683060766*G0_1_0 + 0.0189848008858428*G0_1_1 + 0.0378717419733042*G0_1_2 + 0.0378717419733043*G0_2_0 + 0.00949240044292239*G0_2_1 + 0.0127870136550691*G0_2_2; A[997] = 0.209419968534551*G0_0_0 + 0.127087258163646*G0_0_1 + 0.173472802596065*G0_0_2 + 0.209419968534551*G0_1_0 + 0.127087258163647*G0_1_1 + 0.173472802596066*G0_1_2 + 0.173472802596066*G0_2_0 + 0.0893133759887231*G0_2_1 + 0.0846813455320396*G0_2_2; A[998] = 0.0476251018785739*G0_0_0 + 0.0476251018785745*G0_0_1 - 0.0147442096226808*G0_0_2 + 0.047625101878574*G0_1_0 + 0.0476251018785745*G0_1_1 - 0.0147442096226809*G0_1_2 - 0.0147442096226817*G0_2_0 - 0.014744209622682*G0_2_1 + 0.0476251018785736*G0_2_2; A[999] = 0.0088073818542567*G0_0_0 + 0.00880738185425679*G0_0_1 + 0.0023160152283415*G0_0_2 + 0.00880738185425667*G0_1_0 + 0.0088073818542568*G0_1_1 + 0.0023160152283415*G0_1_2 + 0.00231601522834162*G0_2_0 + 0.00231601522834169*G0_2_1 - 0.000652398655870339*G0_2_2; A[1000] = -0.00130479731174214*G0_0_0 - 0.00130479731174187*G0_0_1 - 6.52398655873818e-05*G0_0_2 - 0.00130479731174221*G0_1_0 - 0.00130479731174184*G0_1_1 - 6.52398655875704e-05*G0_1_2 - 6.52398655873628e-05*G0_2_0 - 6.52398655869469e-05*G0_2_1; A[1001] = 0.00880738185425657*G0_0_0 + 0.00880738185425565*G0_0_1 + 0.00231601522834138*G0_0_2 + 0.0088073818542565*G0_1_0 + 0.00880738185425565*G0_1_1 + 0.00231601522834132*G0_1_2 + 0.0023160152283416*G0_2_0 + 0.00231601522834165*G0_2_1 - 0.000652398655871135*G0_2_2; A[1002] = -0.0156575677409006*G0_0_0 - 0.0156575677409005*G0_0_1 - 0.00257697469068927*G0_0_2 - 0.0156575677409005*G0_1_0 - 0.0156575677409005*G0_1_1 - 0.0025769746906892*G0_1_2 - 0.00257697469068973*G0_2_0 - 0.00257697469069004*G0_2_1; A[1003] = -0.00130479731174159*G0_0_0 - 0.00130479731174115*G0_0_1 - 6.52398655866954e-05*G0_0_2 - 0.00130479731174157*G0_1_0 - 0.00130479731174116*G0_1_1 - 6.52398655867464e-05*G0_1_2 - 6.52398655867362e-05*G0_2_0 - 6.5239865586591e-05*G0_2_1; A[1004] = -0.15657567740901*G0_0_0 - 0.156575677409009*G0_0_1 - 0.0662184635708927*G0_0_2 - 0.15657567740901*G0_1_0 - 0.156575677409009*G0_1_1 - 0.0662184635708926*G0_1_2 - 0.0662184635708919*G0_2_0 - 0.0662184635708924*G0_2_1 - 0.161794866655975*G0_2_2; A[1005] = 0.0391439193522517*G0_0_0 + 0.0391439193522531*G0_0_1 + 0.00717638521457972*G0_0_2 + 0.0391439193522517*G0_1_0 + 0.0391439193522531*G0_1_1 + 0.00717638521457969*G0_1_2 + 0.00717638521457911*G0_2_0 + 0.00717638521458012*G0_2_1 + 0.00130479731174273*G0_2_2; A[1006] = 0.0391439193522528*G0_0_0 + 0.0391439193522513*G0_0_1 + 0.00717638521457911*G0_0_2 + 0.0391439193522529*G0_1_0 + 0.0391439193522513*G0_1_1 + 0.00717638521457926*G0_1_2 + 0.00717638521457925*G0_2_0 + 0.00717638521457814*G0_2_1 + 0.00130479731174097*G0_2_2; A[1007] = 0.185933616923198*G0_0_0 + 0.185933616923197*G0_0_1 + 0.170276049182296*G0_0_2 + 0.185933616923197*G0_1_0 + 0.185933616923198*G0_1_1 + 0.170276049182297*G0_1_2 + 0.170276049182298*G0_2_0 + 0.170276049182298*G0_2_1 + 0.180714427676231*G0_2_2; A[1008] = -0.0155544887532735*G0_0_0 - 0.0155544887532735*G0_0_1 - 0.0155544887532735*G0_0_2 - 0.0155544887532735*G0_1_0 - 0.0155544887532735*G0_1_1 - 0.0155544887532735*G0_1_2 - 0.0388177200243171*G0_2_0 - 0.0388177200243171*G0_2_1 - 0.0388177200243171*G0_2_2; A[1009] = -0.00336507226698207*G0_0_0 - 0.00336507226698205*G0_1_0; A[1010] = -0.00336507226698192*G0_0_1 - 0.00336507226698192*G0_1_1; A[1011] = 0.0336585514536904*G0_0_2 + 0.0336585514536904*G0_1_2 + 0.0551276864210892*G0_2_2; A[1012] = 0.0111690649885092*G0_0_1 + 0.00228991928210694*G0_0_2 + 0.0111690649885091*G0_1_1 + 0.00228991928210691*G0_1_2 + 0.00228991928210675*G0_2_1; A[1013] = -0.00523223722008389*G0_0_1 + 0.000548014870931336*G0_0_2 - 0.00523223722008383*G0_1_1 + 0.000548014870931401*G0_1_2 + 0.000548014870931969*G0_2_1 + 6.52398655872172e-05*G0_2_2; A[1014] = -0.00960330821441997*G0_0_1 - 0.00480165410720922*G0_0_2 - 0.00960330821441992*G0_1_1 - 0.0048016541072092*G0_1_2 - 0.00480165410721021*G0_2_1 + 0.000260959462348364*G0_2_2; A[1015] = 0.108637424175618*G0_0_1 + 0.0699110399631223*G0_0_2 + 0.108637424175618*G0_1_1 + 0.0699110399631224*G0_1_2 + 0.0699110399631235*G0_2_1 + 0.0124934342599271*G0_2_2; A[1016] = 0.0111690649885092*G0_0_0 + 0.00228991928210633*G0_0_2 + 0.0111690649885091*G0_1_0 + 0.0022899192821063*G0_1_2 + 0.00228991928210653*G0_2_0; A[1017] = -0.0052322372200842*G0_0_0 + 0.000548014870932137*G0_0_2 - 0.00523223722008409*G0_1_0 + 0.000548014870932117*G0_1_2 + 0.00054801487093217*G0_2_0 + 6.52398655882603e-05*G0_2_2; A[1018] = -0.0096033082144192*G0_0_0 - 0.00480165410720981*G0_0_2 - 0.00960330821441933*G0_1_0 - 0.00480165410720982*G0_1_2 - 0.00480165410720987*G0_2_0 + 0.000260959462347809*G0_2_2; A[1019] = 0.108637424175618*G0_0_0 + 0.0699110399631231*G0_0_2 + 0.108637424175618*G0_1_0 + 0.0699110399631231*G0_1_2 + 0.0699110399631237*G0_2_0 + 0.0124934342599278*G0_2_2; A[1020] = 0.00228991928210627*G0_0_0 + 0.00228991928210624*G0_0_1 + 0.0022899192821062*G0_1_0 + 0.0022899192821062*G0_1_1; A[1021] = 0.00178757231708664*G0_0_0 + 0.00178757231708651*G0_0_1 + 0.00178757231708672*G0_1_0 + 0.00178757231708658*G0_1_1; A[1022] = 0.00178757231708606*G0_0_0 + 0.00178757231708629*G0_0_1 + 0.00178757231708605*G0_1_0 + 0.00178757231708624*G0_1_1; A[1023] = 0.002289919282107*G0_0_0 + 0.0022899192821067*G0_0_1 + 0.00228991928210697*G0_1_0 + 0.0022899192821067*G0_1_1; A[1024] = 0.100717304493346*G0_0_0 + 0.100717304493346*G0_0_1 + 0.0817390275940622*G0_0_2 + 0.100717304493346*G0_1_0 + 0.100717304493346*G0_1_1 + 0.0817390275940622*G0_1_2 + 0.12535187773903*G0_2_0 + 0.12535187773903*G0_2_1 + 0.185268170294211*G0_2_2; A[1025] = -0.204187731314466*G0_0_0 - 0.204187731314467*G0_0_1 - 0.16769255050505*G0_0_2 - 0.204187731314466*G0_1_0 - 0.204187731314466*G0_1_1 - 0.16769255050505*G0_1_2 - 0.219493003781198*G0_2_0 - 0.219493003781198*G0_2_1 - 0.387185554286248*G0_2_2; A[1026] = 0.281001149056703*G0_0_0 + 0.281001149056703*G0_0_1 + 0.202869886029608*G0_0_2 + 0.281001149056703*G0_1_0 + 0.281001149056703*G0_1_1 + 0.202869886029608*G0_1_2 + 0.202869886029608*G0_2_0 + 0.202869886029608*G0_2_1 + 0.428965164208219*G0_2_2; A[1027] = -0.108637424175618*G0_0_0 - 0.108637424175618*G0_0_1 - 0.135020425819037*G0_0_2 - 0.108637424175618*G0_1_0 - 0.108637424175618*G0_1_1 - 0.135020425819037*G0_1_2 - 0.0699110399631235*G0_2_0 - 0.0699110399631235*G0_2_1 - 0.243357746612955*G0_2_2; A[1028] = 0.0283728175438245*G0_0_0 + 0.0093945406445409*G0_0_1 + 0.0283728175438244*G0_0_2 + 0.0283728175438245*G0_1_0 + 0.0093945406445409*G0_1_1 + 0.0283728175438245*G0_1_2 - 0.0315434750113567*G0_2_0 + 0.0283728175438244*G0_2_1 - 0.0315434750113568*G0_2_2; A[1029] = -0.000482775005344749*G0_0_0 + 6.52398655868117e-05*G0_0_1 - 0.000482775005344805*G0_0_2 - 0.000482775005344758*G0_1_0 + 6.52398655867984e-05*G0_1_1 - 0.000482775005344815*G0_1_2 - 0.00626302709636047*G0_2_0 - 0.000482775005344551*G0_2_1 - 0.00626302709636044*G0_2_2; A[1030] = 0.013217596767944*G0_0_0 + 6.5239865587249e-05*G0_0_1 + 0.013217596767944*G0_0_2 + 0.0132175967679439*G0_1_0 + 6.52398655872637e-05*G0_1_1 + 0.013217596767944*G0_1_2 + 6.52398655872062e-05*G0_2_0 + 0.013217596767944*G0_2_1 + 6.52398655872749e-05*G0_2_2; A[1031] = -0.00228991928210693*G0_0_0 + 0.00939454064454052*G0_0_1 - 0.00228991928210696*G0_0_2 - 0.0022899192821069*G0_1_0 + 0.00939454064454052*G0_1_1 - 0.00228991928210694*G0_1_2 - 0.00228991928210676*G0_2_1; A[1032] = 0.00939454064454068*G0_0_0 + 0.0283728175438242*G0_0_1 + 0.0283728175438242*G0_0_2 + 0.00939454064454064*G0_1_0 + 0.0283728175438242*G0_1_1 + 0.0283728175438242*G0_1_2 + 0.0283728175438243*G0_2_0 - 0.0315434750113569*G0_2_1 - 0.0315434750113569*G0_2_2; A[1033] = 6.52398655872232e-05*G0_0_0 - 0.000482775005344218*G0_0_1 - 0.000482775005344229*G0_0_2 + 6.52398655872909e-05*G0_1_0 - 0.000482775005344215*G0_1_1 - 0.000482775005344228*G0_1_2 - 0.00048277500534416*G0_2_0 - 0.00626302709636035*G0_2_1 - 0.00626302709636035*G0_2_2; A[1034] = 6.5239865586992e-05*G0_0_0 + 0.0132175967679437*G0_0_1 + 0.0132175967679436*G0_0_2 + 6.52398655869223e-05*G0_1_0 + 0.0132175967679437*G0_1_1 + 0.0132175967679436*G0_1_2 + 0.0132175967679436*G0_2_0 + 6.52398655867543e-05*G0_2_1 + 6.52398655867505e-05*G0_2_2; A[1035] = 0.00939454064454067*G0_0_0 - 0.0022899192821063*G0_0_1 - 0.00228991928210628*G0_0_2 + 0.00939454064454067*G0_1_0 - 0.00228991928210627*G0_1_1 - 0.00228991928210625*G0_1_2 - 0.00228991928210636*G0_2_0; A[1036] = -0.00117431758056721*G0_0_0 - 0.00117431758056751*G0_0_1 + 6.52398655866151e-05*G0_0_2 - 0.00117431758056704*G0_1_0 - 0.00117431758056759*G0_1_1 + 6.5239865586612e-05*G0_1_2 + 6.52398655877632e-05*G0_2_0 + 6.5239865587224e-05*G0_2_1; A[1037] = -0.0105036183595211*G0_0_0 - 0.0105036183595211*G0_0_1 + 0.00257697469069056*G0_0_2 - 0.0105036183595213*G0_1_0 - 0.0105036183595211*G0_1_1 + 0.00257697469069059*G0_1_2 + 0.00257697469068973*G0_2_0 + 0.00257697469068996*G0_2_1; A[1038] = -0.00117431758056754*G0_0_0 - 0.00117431758056711*G0_0_1 + 6.52398655871521e-05*G0_0_2 - 0.00117431758056749*G0_1_0 - 0.00117431758056709*G0_1_1 + 6.52398655871335e-05*G0_1_2 + 6.5239865587498e-05*G0_2_0 + 6.52398655875674e-05*G0_2_1; A[1039] = 0.00352295274170269*G0_0_0 + 0.00352295274170358*G0_0_1 - 0.00296841388421186*G0_0_2 + 0.00352295274170248*G0_1_0 + 0.00352295274170355*G0_1_1 - 0.00296841388421189*G0_1_2 - 0.00296841388421213*G0_2_0 - 0.00296841388421156*G0_2_1 - 0.000652398655869814*G0_2_2; A[1040] = 0.00352295274170245*G0_0_0 + 0.00352295274170128*G0_0_1 - 0.0029684138842133*G0_0_2 + 0.00352295274170261*G0_1_0 + 0.00352295274170134*G0_1_1 - 0.00296841388421325*G0_1_2 - 0.00296841388421236*G0_2_0 - 0.00296841388421284*G0_2_1 - 0.000652398655870945*G0_2_2; A[1041] = 0.124738623002511*G0_0_0 + 0.124738623002511*G0_0_1 + 0.0623693115012552*G0_0_2 + 0.124738623002511*G0_1_0 + 0.124738623002511*G0_1_1 + 0.0623693115012553*G0_1_2 + 0.0623693115012558*G0_2_0 + 0.0623693115012563*G0_2_1 + 0.0476251018785738*G0_2_2; A[1042] = -0.0510175748891029*G0_0_0 - 0.0528442911255416*G0_0_1 - 0.0887914570640259*G0_0_2 - 0.0510175748891029*G0_1_0 - 0.0528442911255416*G0_1_1 - 0.088791457064026*G0_1_2 - 0.00463203045668278*G0_2_0 - 0.0887914570640259*G0_2_1 + 0.08468134553204*G0_2_2; A[1043] = -0.0155923278753132*G0_0_0 - 0.00619778723077192*G0_0_1 - 0.0250847283182344*G0_0_2 - 0.0155923278753132*G0_1_0 - 0.00619778723077206*G0_1_1 - 0.0250847283182343*G0_1_2 + 0.00329461321214766*G0_2_0 - 0.0250847283182352*G0_2_1 + 0.0127870136550687*G0_2_2; A[1044] = 0.00117431758056736*G0_0_0 - 0.0528442911255415*G0_0_1 - 0.0137656116388754*G0_0_2 + 0.00117431758056732*G0_1_0 - 0.0528442911255414*G0_1_1 - 0.0137656116388754*G0_1_2 - 6.52398655876238e-05*G0_2_0 - 0.0137656116388759*G0_2_1 - 0.000130479731174418*G0_2_2; A[1045] = 0.182410664181496*G0_0_0 + 0.104709984267275*G0_0_1 + 0.188575831479476*G0_0_2 + 0.182410664181496*G0_1_0 + 0.104709984267275*G0_1_1 + 0.188575831479475*G0_1_2 + 0.0985448169692952*G0_2_0 + 0.188575831479476*G0_2_1 - 0.0622388317700818*G0_2_2; A[1046] = -0.00352295274170237*G0_0_0 + 0.104709984267275*G0_0_1 + 0.0303691574307886*G0_0_2 - 0.00352295274170254*G0_1_0 + 0.104709984267275*G0_1_1 + 0.0303691574307885*G0_1_2 + 0.00296841388421241*G0_2_0 + 0.0303691574307899*G0_2_1 - 0.0067849460210568*G0_2_2; A[1047] = -0.124738623002511*G0_0_0 - 0.271397840842283*G0_0_1 - 0.198068231922396*G0_0_2 - 0.124738623002511*G0_1_0 - 0.271397840842284*G0_1_1 - 0.198068231922396*G0_1_2 - 0.062369311501256*G0_2_0 - 0.198068231922398*G0_2_1 - 0.00339247301052844*G0_2_2; A[1048] = -0.0528442911255409*G0_0_0 - 0.0510175748891024*G0_0_1 - 0.0887914570640257*G0_0_2 - 0.0528442911255409*G0_1_0 - 0.0510175748891024*G0_1_1 - 0.0887914570640257*G0_1_2 - 0.0887914570640264*G0_2_0 - 0.00463203045668323*G0_2_1 + 0.0846813455320397*G0_2_2; A[1049] = -0.00619778723077363*G0_0_0 - 0.0155923278753138*G0_0_1 - 0.0250847283182351*G0_0_2 - 0.00619778723077357*G0_1_0 - 0.0155923278753138*G0_1_1 - 0.0250847283182351*G0_1_2 - 0.025084728318235*G0_2_0 + 0.00329461321214766*G0_2_1 + 0.0127870136550693*G0_2_2; A[1050] = -0.0528442911255405*G0_0_0 + 0.00117431758056751*G0_0_1 - 0.013765611638876*G0_0_2 - 0.0528442911255404*G0_1_0 + 0.0011743175805676*G0_1_1 - 0.013765611638876*G0_1_2 - 0.0137656116388754*G0_2_0 - 6.52398655871891e-05*G0_2_1 - 0.000130479731174694*G0_2_2; A[1051] = 0.104709984267275*G0_0_0 + 0.182410664181496*G0_0_1 + 0.188575831479476*G0_0_2 + 0.104709984267275*G0_1_0 + 0.182410664181496*G0_1_1 + 0.188575831479476*G0_1_2 + 0.188575831479476*G0_2_0 + 0.0985448169692959*G0_2_1 - 0.0622388317700815*G0_2_2; A[1052] = 0.104709984267275*G0_0_0 - 0.00352295274170352*G0_0_1 + 0.0303691574307892*G0_0_2 + 0.104709984267275*G0_1_0 - 0.00352295274170347*G0_1_1 + 0.0303691574307892*G0_1_2 + 0.0303691574307891*G0_2_0 + 0.00296841388421147*G0_2_1 - 0.00678494602105718*G0_2_2; A[1053] = -0.271397840842284*G0_0_0 - 0.124738623002511*G0_0_1 - 0.198068231922397*G0_0_2 - 0.271397840842284*G0_1_0 - 0.124738623002511*G0_1_1 - 0.198068231922397*G0_1_2 - 0.198068231922398*G0_2_0 - 0.0623693115012564*G0_2_1 - 0.00339247301052888*G0_2_2; A[1054] = -0.01500516908503*G0_0_0 - 0.0150051690850304*G0_0_1 + 0.022768713089893*G0_0_2 - 0.0150051690850301*G0_1_0 - 0.0150051690850304*G0_1_1 + 0.0227687130898931*G0_1_2 + 0.0227687130898937*G0_2_0 + 0.0227687130898937*G0_2_1 - 0.066544662898829*G0_2_2; A[1055] = -0.000652398655871408*G0_0_0 - 0.000652398655871259*G0_0_1 + 0.0088400017870501*G0_0_2 - 0.000652398655871342*G0_1_0 - 0.000652398655871195*G0_1_1 + 0.00884000178705013*G0_1_2 + 0.00884000178705014*G0_2_0 + 0.00884000178705025*G0_2_1 - 0.000652398655871468*G0_2_2; A[1056] = -0.0150051690850293*G0_0_0 - 0.01500516908503*G0_0_1 - 6.5239865586706e-05*G0_0_2 - 0.0150051690850293*G0_1_0 - 0.0150051690850301*G0_1_1 - 6.52398655867045e-05*G0_1_2 - 6.52398655867008e-05*G0_2_0 - 6.52398655872469e-05*G0_2_1; A[1057] = -0.000652398655870663*G0_0_0 - 0.000652398655870351*G0_0_1 + 0.00884000178705053*G0_0_2 - 0.000652398655870577*G0_1_0 - 0.0006523986558704*G0_1_1 + 0.00884000178705056*G0_1_2 + 0.00884000178705028*G0_2_0 + 0.00884000178705022*G0_2_1 - 0.000652398655870989*G0_2_2; A[1058] = -0.000652398655871171*G0_0_0 - 0.000652398655871029*G0_0_1 - 0.00257697469069051*G0_0_2 - 0.000652398655871327*G0_1_0 - 0.000652398655871055*G0_1_1 - 0.00257697469069054*G0_1_2 - 0.00257697469069012*G0_2_0 - 0.00257697469068988*G0_2_1; A[1059] = -0.0150051690850301*G0_0_0 - 0.0150051690850301*G0_0_1 - 6.52398655872029e-05*G0_0_2 - 0.01500516908503*G0_1_0 - 0.01500516908503*G0_1_1 - 6.52398655871811e-05*G0_1_2 - 6.52398655872863e-05*G0_2_0 - 6.52398655871975e-05*G0_2_1; A[1060] = 0.0260959462348355*G0_0_0 + 0.0260959462348346*G0_0_1 + 0.0104383784939341*G0_0_2 + 0.0260959462348354*G0_1_0 + 0.0260959462348348*G0_1_1 + 0.0104383784939341*G0_1_2 + 0.0104383784939325*G0_2_0 + 0.0104383784939327*G0_2_1 + 0.180714427676231*G0_2_2; A[1061] = 0.0260959462348347*G0_0_0 + 0.0260959462348347*G0_0_1 - 0.00587158790283795*G0_0_2 + 0.0260959462348346*G0_1_0 + 0.0260959462348347*G0_1_1 - 0.00587158790283795*G0_1_2 - 0.00587158790283747*G0_2_0 - 0.00587158790283786*G0_2_1 + 0.00130479731174129*G0_2_2; A[1062] = 0.0260959462348344*G0_0_0 + 0.0260959462348348*G0_0_1 - 0.0058715879028371*G0_0_2 + 0.0260959462348345*G0_1_0 + 0.0260959462348346*G0_1_1 - 0.00587158790283719*G0_1_2 - 0.00587158790283738*G0_2_0 - 0.00587158790283699*G0_2_1 + 0.00130479731174213*G0_2_2; A[1063] = -0.185933616923199*G0_0_0 - 0.185933616923197*G0_0_1 - 0.095576403085083*G0_0_2 - 0.185933616923198*G0_1_0 - 0.185933616923197*G0_1_1 - 0.0955764030850831*G0_1_2 - 0.0955764030850831*G0_2_0 - 0.0955764030850829*G0_2_1 - 0.161794866655976*G0_2_2; A[1064] = 0.00480034930989788*G0_0_0 + 0.00480034930989791*G0_0_1 + 0.00480034930989791*G0_0_2 + 0.00480034930989788*G0_1_0 + 0.00480034930989791*G0_1_1 + 0.00480034930989791*G0_1_2 + 0.0153313684129656*G0_2_0 + 0.0153313684129656*G0_2_1 + 0.0153313684129656*G0_2_2; A[1065] = -0.00480034930989782*G0_0_0 - 0.00480034930989783*G0_1_0; A[1066] = -0.00480034930989786*G0_0_1 - 0.00480034930989787*G0_1_1; A[1067] = -0.0372571824394741*G0_0_2 - 0.0372571824394741*G0_1_2 - 0.0551276864210892*G0_2_2; A[1068] = 0.0328352243499812*G0_0_1 + 0.00537576492437604*G0_0_2 + 0.0328352243499812*G0_1_1 + 0.00537576492437605*G0_1_2 + 0.00537576492437612*G0_2_1; A[1069] = -0.078894569454465*G0_0_1 - 0.0189782768992836*G0_0_2 - 0.078894569454465*G0_1_1 - 0.0189782768992836*G0_1_2 - 0.0189782768992842*G0_2_1 + 0.00939454064454049*G0_2_2; A[1070] = 0.108637424175618*G0_0_1 + 0.0387263842124946*G0_0_2 + 0.108637424175618*G0_1_1 + 0.0387263842124946*G0_1_2 + 0.0387263842124955*G0_2_1 - 0.0186912214907006*G0_2_2; A[1071] = -0.139822079926246*G0_0_1 - 0.0699110399631223*G0_0_2 - 0.139822079926246*G0_1_1 - 0.0699110399631223*G0_1_2 - 0.0699110399631234*G0_2_1 + 0.0196371995417135*G0_2_2; A[1072] = 0.032835224349981*G0_0_0 + 0.00537576492437597*G0_0_2 + 0.032835224349981*G0_1_0 + 0.00537576492437596*G0_1_2 + 0.00537576492437623*G0_2_0; A[1073] = -0.0788945694544647*G0_0_0 - 0.0189782768992836*G0_0_2 - 0.0788945694544648*G0_1_0 - 0.0189782768992836*G0_1_2 - 0.0189782768992843*G0_2_0 + 0.00939454064453997*G0_2_2; A[1074] = 0.108637424175618*G0_0_0 + 0.0387263842124948*G0_0_2 + 0.108637424175618*G0_1_0 + 0.0387263842124948*G0_1_2 + 0.0387263842124954*G0_2_0 - 0.0186912214907003*G0_2_2; A[1075] = -0.139822079926246*G0_0_0 - 0.0699110399631226*G0_0_2 - 0.139822079926246*G0_1_0 - 0.0699110399631227*G0_1_2 - 0.0699110399631235*G0_2_0 + 0.019637199541713*G0_2_2; A[1076] = 0.00537576492437597*G0_0_0 + 0.00537576492437599*G0_0_1 + 0.00537576492437599*G0_1_0 + 0.00537576492437598*G0_1_1; A[1077] = 0.00228991928210665*G0_0_0 + 0.00228991928210683*G0_0_1 + 0.00228991928210665*G0_1_0 + 0.00228991928210686*G0_1_1; A[1078] = 0.00228991928210671*G0_0_0 + 0.00228991928210646*G0_0_1 + 0.00228991928210669*G0_1_0 + 0.00228991928210641*G0_1_1; A[1079] = 0.00537576492437596*G0_0_0 + 0.00537576492437615*G0_0_1 + 0.00537576492437596*G0_1_0 + 0.00537576492437618*G0_1_1; A[1080] = -0.0328352243499812*G0_0_0 - 0.0328352243499813*G0_0_1 - 0.0274594594256052*G0_0_2 - 0.0328352243499812*G0_1_0 - 0.0328352243499813*G0_1_1 - 0.0274594594256052*G0_1_2 - 0.0537511252572017*G0_2_0 - 0.0537511252572016*G0_2_1 - 0.0812105846828068*G0_2_2; A[1081] = 0.0788945694544649*G0_0_0 + 0.0788945694544652*G0_0_1 + 0.0599162925551814*G0_0_2 + 0.0788945694544649*G0_1_0 + 0.0788945694544652*G0_1_1 + 0.0599162925551814*G0_1_2 + 0.10352914270015*G0_2_0 + 0.10352914270015*G0_2_1 + 0.185268170294212*G0_2_2; A[1082] = -0.108637424175618*G0_0_0 - 0.108637424175618*G0_0_1 - 0.0699110399631235*G0_0_2 - 0.108637424175618*G0_1_0 - 0.108637424175618*G0_1_1 - 0.0699110399631235*G0_1_2 - 0.135020425819037*G0_2_0 - 0.135020425819037*G0_2_1 - 0.243357746612955*G0_2_2; A[1083] = 0.139822079926246*G0_0_0 + 0.139822079926246*G0_0_1 + 0.0699110399631234*G0_0_2 + 0.139822079926246*G0_1_0 + 0.139822079926246*G0_1_1 + 0.0699110399631234*G0_1_2 + 0.0699110399631234*G0_2_0 + 0.0699110399631234*G0_2_1 + 0.179096479009673*G0_2_2; A[1084] = -0.0053757649243762*G0_0_0 - 0.00537576492437612*G0_0_2 - 0.0053757649243762*G0_1_0 - 0.00537576492437612*G0_1_2 + 0.022083694501229*G0_2_0 - 0.00537576492437599*G0_2_1 + 0.0220836945012291*G0_2_2; A[1085] = -0.00228991928210665*G0_0_0 - 0.00228991928210666*G0_0_2 - 0.00228991928210664*G0_1_0 - 0.00228991928210665*G0_1_2 + 0.00658922642429601*G0_2_0 - 0.0022899192821067*G0_2_1 + 0.00658922642429597*G0_2_2; A[1086] = -0.00228991928210673*G0_0_0 - 0.0022899192821067*G0_0_2 - 0.00228991928210671*G0_1_0 - 0.00228991928210668*G0_1_2 + 0.00939454064454041*G0_2_0 - 0.00228991928210692*G0_2_1 + 0.00939454064454037*G0_2_2; A[1087] = -0.00537576492437601*G0_0_0 - 0.00537576492437602*G0_0_2 - 0.00537576492437602*G0_1_0 - 0.00537576492437602*G0_1_2 - 0.00537576492437595*G0_2_1; A[1088] = -0.00537576492437611*G0_0_1 - 0.00537576492437604*G0_0_2 - 0.0053757649243761*G0_1_1 - 0.00537576492437603*G0_1_2 - 0.00537576492437592*G0_2_0 + 0.0220836945012292*G0_2_1 + 0.0220836945012292*G0_2_2; A[1089] = -0.00228991928210684*G0_0_1 - 0.00228991928210687*G0_0_2 - 0.00228991928210685*G0_1_1 - 0.00228991928210689*G0_1_2 - 0.00228991928210698*G0_2_0 + 0.00658922642429577*G0_2_1 + 0.00658922642429579*G0_2_2; A[1090] = -0.00228991928210667*G0_0_1 - 0.00228991928210669*G0_0_2 - 0.00228991928210664*G0_1_1 - 0.00228991928210666*G0_1_2 - 0.00228991928210661*G0_2_0 + 0.00939454064454079*G0_2_1 + 0.00939454064454078*G0_2_2; A[1091] = -0.00537576492437606*G0_0_1 - 0.00537576492437602*G0_0_2 - 0.00537576492437605*G0_1_1 - 0.00537576492437601*G0_1_2 - 0.00537576492437618*G0_2_0; A[1092] = -0.0118736555368499*G0_0_0 - 0.0118736555368499*G0_0_1 + 0.00939454064454054*G0_0_2 - 0.01187365553685*G0_1_0 - 0.01187365553685*G0_1_1 + 0.00939454064454051*G0_1_2 + 0.00939454064454027*G0_2_0 + 0.00939454064454049*G0_2_1; A[1093] = -0.0025443547578969*G0_0_0 - 0.00254435475789682*G0_0_1 + 0.00329461321214731*G0_0_2 - 0.00254435475789687*G0_1_0 - 0.00254435475789674*G0_1_1 + 0.00329461321214734*G0_1_2 + 0.00329461321214797*G0_2_0 + 0.00329461321214815*G0_2_1; A[1094] = -0.0118736555368494*G0_0_0 - 0.0118736555368497*G0_0_1 + 0.00939454064454082*G0_0_2 - 0.0118736555368494*G0_1_0 - 0.0118736555368498*G0_1_1 + 0.00939454064454077*G0_1_2 + 0.0093945406445403*G0_2_0 + 0.00939454064454001*G0_2_1; A[1095] = 0.0429604514890971*G0_0_0 + 0.0429604514890969*G0_0_1 + 0.000685018588664486*G0_0_2 + 0.0429604514890972*G0_1_0 + 0.0429604514890969*G0_1_1 + 0.000685018588664485*G0_1_2 + 0.000685018588664579*G0_2_0 + 0.000685018588664057*G0_2_1 + 0.0226708532915126*G0_2_2; A[1096] = 0.0429604514890967*G0_0_0 + 0.0429604514890973*G0_0_1 + 0.000685018588664434*G0_0_2 + 0.0429604514890966*G0_1_0 + 0.0429604514890973*G0_1_1 + 0.000685018588664418*G0_1_2 + 0.000685018588664066*G0_2_0 + 0.000685018588664572*G0_2_1 + 0.0226708532915127*G0_2_2; A[1097] = -0.124738623002511*G0_0_0 - 0.124738623002511*G0_0_1 - 0.0284445813959698*G0_0_2 - 0.124738623002511*G0_1_0 - 0.124738623002511*G0_1_1 - 0.0284445813959698*G0_1_2 - 0.0284445813959704*G0_2_0 - 0.0284445813959705*G0_2_1 - 0.0606730749959914*G0_2_2; A[1098] = 0.0118736555368504*G0_0_0 + 0.0212681961813909*G0_0_2 + 0.0118736555368505*G0_1_0 + 0.0212681961813909*G0_1_2 - 0.0146137298915075*G0_2_0 + 0.0212681961813906*G0_2_1 - 0.069349977119074*G0_2_2; A[1099] = 0.00254435475789599*G0_0_0 + 0.0058389679700438*G0_0_2 + 0.00254435475789599*G0_1_0 + 0.00583896797004378*G0_1_2 - 0.00590420783563141*G0_2_0 + 0.00583896797004422*G0_2_1 - 0.0318696743392922*G0_2_2; A[1100] = 0.0118736555368495*G0_0_0 + 0.0212681961813903*G0_0_2 + 0.0118736555368495*G0_1_0 + 0.0212681961813903*G0_1_2 - 0.00939454064454024*G0_2_0 + 0.0212681961813907*G0_2_1 - 0.0187890812890809*G0_2_2; A[1101] = -0.0429604514890963*G0_0_0 - 0.0422754329004326*G0_0_2 - 0.0429604514890963*G0_1_0 - 0.0422754329004326*G0_1_2 - 0.0359145460056917*G0_2_0 - 0.0422754329004326*G0_2_1 + 0.0920860702761739*G0_2_2; A[1102] = -0.0429604514890969*G0_0_0 - 0.0422754329004319*G0_0_2 - 0.0429604514890968*G0_1_0 - 0.0422754329004319*G0_1_2 - 0.00068501858866411*G0_2_0 - 0.0422754329004329*G0_2_1 + 0.0439716694056968*G0_2_2; A[1103] = 0.124738623002511*G0_0_0 + 0.0962940416065403*G0_0_2 + 0.124738623002511*G0_1_0 + 0.0962940416065403*G0_1_2 + 0.0284445813959706*G0_2_0 + 0.0962940416065415*G0_2_1 - 0.0644569872000423*G0_2_2; A[1104] = 0.0118736555368503*G0_0_1 + 0.0212681961813908*G0_0_2 + 0.0118736555368503*G0_1_1 + 0.0212681961813908*G0_1_2 + 0.0212681961813906*G0_2_0 - 0.0146137298915076*G0_2_1 - 0.0693499771190741*G0_2_2; A[1105] = 0.00254435475789574*G0_0_1 + 0.00583896797004424*G0_0_2 + 0.0025443547578958*G0_1_1 + 0.00583896797004429*G0_1_2 + 0.00583896797004448*G0_2_0 - 0.00590420783563126*G0_2_1 - 0.0318696743392922*G0_2_2; A[1106] = 0.01187365553685*G0_0_1 + 0.0212681961813904*G0_0_2 + 0.0118736555368501*G0_1_1 + 0.0212681961813904*G0_1_2 + 0.0212681961813904*G0_2_0 - 0.00939454064454052*G0_2_1 - 0.018789081289081*G0_2_2; A[1107] = -0.0429604514890963*G0_0_1 - 0.042275432900433*G0_0_2 - 0.0429604514890963*G0_1_1 - 0.042275432900433*G0_1_2 - 0.0422754329004329*G0_2_0 - 0.0359145460056919*G0_2_1 + 0.092086070276174*G0_2_2; A[1108] = -0.0429604514890967*G0_0_1 - 0.0422754329004322*G0_0_2 - 0.0429604514890967*G0_1_1 - 0.0422754329004322*G0_1_2 - 0.0422754329004325*G0_2_0 - 0.000685018588663913*G0_2_1 + 0.0439716694056971*G0_2_2; A[1109] = 0.124738623002511*G0_0_1 + 0.0962940416065407*G0_0_2 + 0.124738623002511*G0_1_1 + 0.0962940416065407*G0_1_2 + 0.0962940416065415*G0_2_0 + 0.0284445813959706*G0_2_1 - 0.0644569872000422*G0_2_2; A[1110] = -0.00939454064454029*G0_0_2 - 0.00939454064454024*G0_1_2 - 0.00939454064454073*G0_2_0 - 0.00939454064454069*G0_2_1 + 0.0453417065830257*G0_2_2; A[1111] = -0.00329461321214815*G0_0_2 - 0.00329461321214815*G0_1_2 - 0.00329461321214767*G0_2_0 - 0.00329461321214783*G0_2_1 + 0.0226708532915132*G0_2_2; A[1112] = -0.00939454064454043*G0_0_2 - 0.00939454064454039*G0_1_2 - 0.00939454064454082*G0_2_0 - 0.00939454064454055*G0_2_1; A[1113] = -0.00329461321214789*G0_0_2 - 0.00329461321214793*G0_1_2 - 0.00329461321214793*G0_2_0 - 0.00329461321214792*G0_2_1 + 0.0226708532915129*G0_2_2; A[1114] = -0.00329461321214748*G0_0_2 - 0.0032946132121475*G0_1_2 - 0.003294613212148*G0_2_0 - 0.00329461321214791*G0_2_1; A[1115] = -0.0093945406445408*G0_0_2 - 0.00939454064454075*G0_1_2 - 0.00939454064454027*G0_2_0 - 0.00939454064454058*G0_2_1; A[1116] = 0.00260959462348422*G0_0_2 + 0.00260959462348423*G0_1_2 + 0.00260959462348408*G0_2_0 + 0.00260959462348423*G0_2_1 - 0.151356488162042*G0_2_2; A[1117] = 0.00260959462348353*G0_0_2 + 0.00260959462348353*G0_1_2 + 0.00260959462348321*G0_2_0 + 0.0026095946234832*G0_2_1 - 0.0453417065830259*G0_2_2; A[1118] = 0.00260959462348349*G0_0_2 + 0.00260959462348355*G0_1_2 + 0.00260959462348345*G0_2_0 + 0.00260959462348341*G0_2_1 - 0.0453417065830256*G0_2_2; A[1119] = 0.035229527417026*G0_0_2 + 0.035229527417026*G0_1_2 + 0.035229527417027*G0_2_0 + 0.0352295274170271*G0_2_1 + 0.166687856575008*G0_2_2; A[1120] = -0.0178705039816149*G0_0_0 - 0.0178705039816149*G0_0_1 - 0.0178705039816149*G0_0_2 - 0.0551276864210886*G0_1_0 - 0.0551276864210886*G0_1_1 - 0.0551276864210886*G0_1_2 - 0.0178705039816149*G0_2_0 - 0.0178705039816149*G0_2_1 - 0.0178705039816149*G0_2_2; A[1121] = -0.00480034930989791*G0_0_0 - 0.00480034930989792*G0_2_0; A[1122] = 0.0105310191030678*G0_0_1 + 0.0153313684129656*G0_1_1 + 0.0105310191030678*G0_2_1; A[1123] = -0.00480034930989782*G0_0_2 - 0.00480034930989782*G0_2_2; A[1124] = 0.0274594594256049*G0_0_1 + 0.0328352243499813*G0_0_2 + 0.022083694501229*G0_1_1 + 0.0274594594256053*G0_1_2 + 0.027459459425605*G0_2_1 + 0.0328352243499814*G0_2_2; A[1125] = 0.00887914570640259*G0_0_1 + 0.011169064988509*G0_0_2 + 0.00658922642429581*G0_1_1 + 0.00887914570640231*G0_1_2 + 0.00887914570640256*G0_2_1 + 0.0111690649885089*G0_2_2; A[1126] = 0.0116844599266471*G0_0_1 + 0.0139743792087543*G0_0_2 + 0.0093945406445404*G0_1_1 + 0.0116844599266473*G0_1_2 + 0.0116844599266472*G0_2_1 + 0.0139743792087544*G0_2_2; A[1127] = 0.00537576492437624*G0_0_1 + 0.0107515298487521*G0_0_2 + 0.00537576492437613*G0_1_2 + 0.00537576492437616*G0_2_1 + 0.010751529848752*G0_2_2; A[1128] = 0.00537576492437617*G0_0_0 + 0.00537576492437599*G0_0_2 + 0.00537576492437613*G0_2_0 + 0.00537576492437594*G0_2_2; A[1129] = 0.00228991928210677*G0_0_0 + 0.00228991928210689*G0_0_2 + 0.00228991928210678*G0_2_0 + 0.00228991928210694*G0_2_2; A[1130] = 0.00228991928210676*G0_0_0 + 0.00228991928210676*G0_0_2 + 0.00228991928210684*G0_2_0 + 0.00228991928210678*G0_2_2; A[1131] = 0.00537576492437619*G0_0_0 + 0.00537576492437606*G0_0_2 + 0.00537576492437611*G0_2_0 + 0.00537576492437603*G0_2_2; A[1132] = 0.0107515298487519*G0_0_0 + 0.0053757649243759*G0_0_1 + 0.00537576492437597*G0_1_0 + 0.0107515298487518*G0_2_0 + 0.00537576492437584*G0_2_1; A[1133] = 0.0139743792087541*G0_0_0 + 0.0116844599266471*G0_0_1 + 0.0116844599266472*G0_1_0 + 0.00939454064454013*G0_1_1 + 0.0139743792087541*G0_2_0 + 0.0116844599266472*G0_2_1; A[1134] = 0.011169064988509*G0_0_0 + 0.00887914570640267*G0_0_1 + 0.00887914570640239*G0_1_0 + 0.00658922642429587*G0_1_1 + 0.011169064988509*G0_2_0 + 0.00887914570640269*G0_2_1; A[1135] = 0.0328352243499812*G0_0_0 + 0.0274594594256049*G0_0_1 + 0.0274594594256053*G0_1_0 + 0.0220836945012292*G0_1_1 + 0.0328352243499813*G0_2_0 + 0.027459459425605*G0_2_1; A[1136] = 0.0895482395048358*G0_0_0 + 0.089548239504836*G0_0_1 + 0.0196371995417134*G0_0_2 + 0.0196371995417134*G0_1_0 + 0.0196371995417134*G0_1_1 + 0.0895482395048358*G0_1_2 + 0.0895482395048359*G0_2_0 + 0.089548239504836*G0_2_1 + 0.0196371995417133*G0_2_2; A[1137] = -0.0574176057031956*G0_0_0 - 0.0574176057031957*G0_0_1 + 0.0124934342599272*G0_0_2 - 0.0186912214907008*G0_1_0 - 0.0186912214907008*G0_1_1 - 0.0574176057031956*G0_1_2 - 0.0574176057031956*G0_2_0 - 0.0574176057031957*G0_2_1 + 0.0124934342599272*G0_2_2; A[1138] = 0.0283728175438245*G0_0_0 + 0.0283728175438245*G0_0_1 - 0.0315434750113567*G0_0_2 + 0.0093945406445409*G0_1_0 + 0.0093945406445409*G0_1_1 + 0.0283728175438244*G0_1_2 + 0.0283728175438244*G0_2_0 + 0.0283728175438245*G0_2_1 - 0.0315434750113568*G0_2_2; A[1139] = -0.0053757649243762*G0_0_0 - 0.0053757649243762*G0_0_1 + 0.022083694501229*G0_0_2 - 0.005375764924376*G0_1_2 - 0.00537576492437612*G0_2_0 - 0.00537576492437612*G0_2_1 + 0.0220836945012291*G0_2_2; A[1140] = 0.179096479009672*G0_0_0 + 0.109185439046549*G0_0_1 + 0.179096479009672*G0_0_2 + 0.109185439046549*G0_1_0 + 0.179096479009672*G0_1_1 + 0.109185439046549*G0_1_2 + 0.179096479009672*G0_2_0 + 0.109185439046549*G0_2_1 + 0.179096479009672*G0_2_2; A[1141] = -0.147063705006411*G0_0_0 - 0.17344670664983*G0_0_1 - 0.147063705006412*G0_0_2 - 0.108337320793917*G0_1_0 - 0.243357746612952*G0_1_1 - 0.108337320793917*G0_1_2 - 0.147063705006412*G0_2_0 - 0.17344670664983*G0_2_1 - 0.147063705006412*G0_2_2; A[1142] = 0.100717304493345*G0_0_0 + 0.125351877739029*G0_0_1 + 0.100717304493345*G0_0_2 + 0.0817390275940618*G0_1_0 + 0.18526817029421*G0_1_1 + 0.0817390275940619*G0_1_2 + 0.100717304493345*G0_2_0 + 0.125351877739029*G0_2_1 + 0.100717304493346*G0_2_2; A[1143] = -0.0328352243499812*G0_0_0 - 0.0537511252572013*G0_0_1 - 0.0328352243499812*G0_0_2 - 0.0274594594256053*G0_1_0 - 0.0812105846828062*G0_1_1 - 0.0274594594256053*G0_1_2 - 0.0328352243499813*G0_2_0 - 0.0537511252572013*G0_2_1 - 0.0328352243499813*G0_2_2; A[1144] = 0.0196371995417133*G0_0_0 + 0.0895482395048358*G0_0_1 + 0.0895482395048358*G0_0_2 + 0.0895482395048356*G0_1_0 + 0.0196371995417133*G0_1_1 + 0.0196371995417133*G0_1_2 + 0.0196371995417132*G0_2_0 + 0.0895482395048359*G0_2_1 + 0.0895482395048358*G0_2_2; A[1145] = 0.0124934342599272*G0_0_0 - 0.0574176057031951*G0_0_1 - 0.0574176057031951*G0_0_2 - 0.0574176057031952*G0_1_0 - 0.0186912214907004*G0_1_1 - 0.0186912214907004*G0_1_2 + 0.0124934342599273*G0_2_0 - 0.0574176057031952*G0_2_1 - 0.0574176057031952*G0_2_2; A[1146] = -0.0315434750113568*G0_0_0 + 0.0283728175438242*G0_0_1 + 0.0283728175438242*G0_0_2 + 0.0283728175438242*G0_1_0 + 0.00939454064454079*G0_1_1 + 0.00939454064454078*G0_1_2 - 0.0315434750113568*G0_2_0 + 0.0283728175438242*G0_2_1 + 0.0283728175438242*G0_2_2; A[1147] = 0.0220836945012291*G0_0_0 - 0.00537576492437585*G0_0_1 - 0.00537576492437588*G0_0_2 - 0.00537576492437602*G0_1_0 + 0.0220836945012291*G0_2_0 - 0.00537576492437579*G0_2_1 - 0.00537576492437583*G0_2_2; A[1148] = 0.0187890812890812*G0_0_0 + 0.00939454064454064*G0_0_1 + 0.0187890812890806*G0_0_2 + 0.00939454064454071*G0_1_0 + 0.00939454064454018*G0_1_2 + 0.0187890812890812*G0_2_0 + 0.00939454064454057*G0_2_1 + 0.0187890812890805*G0_2_2; A[1149] = 0.0292600797158086*G0_0_0 + 0.0259654665036611*G0_0_1 + 0.0292600797158089*G0_0_2 + 0.0259654665036606*G0_1_0 + 0.0226708532915129*G0_1_1 + 0.0259654665036604*G0_1_2 + 0.0292600797158086*G0_2_0 + 0.0259654665036611*G0_2_1 + 0.029260079715809*G0_2_2; A[1150] = 0.0641307878721065*G0_0_0 + 0.0547362472275656*G0_0_1 + 0.0641307878721061*G0_0_2 + 0.0547362472275662*G0_1_0 + 0.0453417065830254*G0_1_1 + 0.0547362472275662*G0_1_2 + 0.0641307878721066*G0_2_0 + 0.0547362472275657*G0_2_1 + 0.0641307878721064*G0_2_2; A[1151] = 0.00658922642429628*G0_0_0 + 0.00329461321214832*G0_0_1 + 0.00658922642429651*G0_0_2 + 0.00329461321214902*G0_1_0 + 0.0032946132121492*G0_1_2 + 0.00658922642429631*G0_2_0 + 0.00329461321214847*G0_2_1 + 0.00658922642429655*G0_2_2; A[1152] = 0.0292600797158083*G0_0_0 + 0.0259654665036604*G0_0_1 + 0.029260079715808*G0_0_2 + 0.0259654665036604*G0_1_0 + 0.0226708532915128*G0_1_1 + 0.0259654665036606*G0_1_2 + 0.0292600797158082*G0_2_0 + 0.0259654665036604*G0_2_1 + 0.0292600797158079*G0_2_2; A[1153] = 0.0187890812890809*G0_0_0 + 0.00939454064454057*G0_0_1 + 0.0187890812890811*G0_0_2 + 0.00939454064454046*G0_1_0 + 0.00939454064454051*G0_1_2 + 0.0187890812890809*G0_2_0 + 0.00939454064454056*G0_2_1 + 0.0187890812890812*G0_2_2; A[1154] = -0.0644569872000424*G0_0_0 - 0.160751028806583*G0_0_1 - 0.257045070413124*G0_0_2 - 0.0929015685960119*G0_1_0 - 0.0644569872000419*G0_1_1 - 0.160751028806583*G0_1_2 - 0.0644569872000425*G0_2_0 - 0.160751028806583*G0_2_1 - 0.257045070413124*G0_2_2; A[1155] = 0.127315597693201*G0_0_0 + 0.134361503176607*G0_0_1 + 0.176636936077038*G0_0_2 + 0.128000616281866*G0_1_0 + 0.0920860702761736*G0_1_1 + 0.134361503176606*G0_1_2 + 0.127315597693201*G0_2_0 + 0.134361503176607*G0_2_1 + 0.176636936077038*G0_2_2; A[1156] = -0.0641307878721066*G0_0_0 - 0.0906181733004647*G0_0_1 - 0.111886369481855*G0_0_2 - 0.0547362472275663*G0_1_0 - 0.0693499771190742*G0_1_1 - 0.0906181733004644*G0_1_2 - 0.0641307878721066*G0_2_0 - 0.0906181733004647*G0_2_1 - 0.111886369481855*G0_2_2; A[1157] = 0.0439716694056968*G0_0_0 + 0.0862471023061292*G0_0_1 + 0.128522535206562*G0_0_2 + 0.0446566879943613*G0_1_0 + 0.0439716694056969*G0_1_1 + 0.0862471023061294*G0_1_2 + 0.0439716694056968*G0_2_0 + 0.0862471023061292*G0_2_1 + 0.128522535206562*G0_2_2; A[1158] = -0.0292600797158082*G0_0_0 - 0.0377086423093363*G0_0_1 - 0.0435476102793806*G0_0_2 - 0.0259654665036603*G0_1_0 - 0.031869674339292*G0_1_1 - 0.0377086423093363*G0_1_2 - 0.0292600797158082*G0_2_0 - 0.0377086423093363*G0_2_1 - 0.0435476102793808*G0_2_2; A[1159] = -0.018789081289081*G0_0_0 - 0.0400572774704715*G0_0_1 - 0.0613254736518623*G0_0_2 - 0.00939454064454056*G0_1_0 - 0.0187890812890812*G0_1_1 - 0.0400572774704718*G0_1_2 - 0.018789081289081*G0_2_0 - 0.0400572774704715*G0_2_1 - 0.0613254736518622*G0_2_2; A[1160] = -0.128522535206562*G0_0_0 - 0.0322284936000213*G0_0_1 - 0.128522535206562*G0_0_2 - 0.0322284936000212*G0_1_0 - 0.0606730749959912*G0_1_1 - 0.0322284936000212*G0_1_2 - 0.128522535206562*G0_2_0 - 0.0322284936000214*G0_2_1 - 0.128522535206562*G0_2_2; A[1161] = 0.0642612676032807*G0_0_0 + 0.0219858347028488*G0_0_1 + 0.0642612676032807*G0_0_2 + 0.0219858347028482*G0_1_0 + 0.0226708532915128*G0_1_1 + 0.0219858347028482*G0_1_2 + 0.0642612676032807*G0_2_0 + 0.0219858347028488*G0_2_1 + 0.0642612676032808*G0_2_2; A[1162] = -0.0306627368259311*G0_0_0 - 0.00939454064454075*G0_0_1 - 0.0306627368259315*G0_0_2 - 0.00939454064454062*G0_1_0 - 0.00939454064454101*G0_1_2 - 0.030662736825931*G0_2_0 - 0.00939454064454068*G0_2_1 - 0.0306627368259315*G0_2_2; A[1163] = 0.0642612676032811*G0_0_0 + 0.0219858347028486*G0_0_1 + 0.0642612676032814*G0_0_2 + 0.0219858347028488*G0_1_0 + 0.0226708532915132*G0_1_1 + 0.0219858347028487*G0_1_2 + 0.0642612676032811*G0_2_0 + 0.0219858347028486*G0_2_1 + 0.0642612676032814*G0_2_2; A[1164] = -0.00913358118219222*G0_0_0 - 0.00329461321214808*G0_0_1 - 0.0091335811821919*G0_0_2 - 0.00329461321214791*G0_1_0 - 0.00329461321214767*G0_1_2 - 0.0091335811821923*G0_2_0 - 0.00329461321214823*G0_2_1 - 0.00913358118219195*G0_2_2; A[1165] = -0.0306627368259312*G0_0_0 - 0.0093945406445407*G0_0_1 - 0.0306627368259314*G0_0_2 - 0.00939454064454099*G0_1_0 - 0.00939454064454091*G0_1_2 - 0.0306627368259312*G0_2_0 - 0.00939454064454069*G0_2_1 - 0.0306627368259314*G0_2_2; A[1166] = -0.257045070413123*G0_0_0 - 0.160751028806583*G0_0_1 - 0.0644569872000417*G0_0_2 - 0.160751028806582*G0_1_0 - 0.0644569872000419*G0_1_1 - 0.0929015685960117*G0_1_2 - 0.257045070413123*G0_2_0 - 0.160751028806583*G0_2_1 - 0.0644569872000419*G0_2_2; A[1167] = 0.128522535206561*G0_0_0 + 0.0862471023061283*G0_0_1 + 0.0439716694056962*G0_0_2 + 0.0862471023061288*G0_1_0 + 0.0439716694056956*G0_1_1 + 0.0446566879943604*G0_1_2 + 0.128522535206561*G0_2_0 + 0.0862471023061283*G0_2_1 + 0.0439716694056963*G0_2_2; A[1168] = -0.0613254736518617*G0_0_0 - 0.0400572774704714*G0_0_1 - 0.0187890812890807*G0_0_2 - 0.0400572774704713*G0_1_0 - 0.018789081289081*G0_1_1 - 0.00939454064454019*G0_1_2 - 0.0613254736518616*G0_2_0 - 0.0400572774704714*G0_2_1 - 0.0187890812890807*G0_2_2; A[1169] = 0.176636936077038*G0_0_0 + 0.134361503176606*G0_0_1 + 0.127315597693201*G0_0_2 + 0.134361503176606*G0_1_0 + 0.092086070276174*G0_1_1 + 0.128000616281866*G0_1_2 + 0.176636936077038*G0_2_0 + 0.134361503176606*G0_2_1 + 0.127315597693201*G0_2_2; A[1170] = -0.0435476102793802*G0_0_0 - 0.0377086423093358*G0_0_1 - 0.0292600797158086*G0_0_2 - 0.037708642309336*G0_1_0 - 0.0318696743392911*G0_1_1 - 0.0259654665036605*G0_1_2 - 0.0435476102793803*G0_2_0 - 0.0377086423093358*G0_2_1 - 0.0292600797158087*G0_2_2; A[1171] = -0.111886369481854*G0_0_0 - 0.0906181733004642*G0_0_1 - 0.0641307878721062*G0_0_2 - 0.0906181733004643*G0_1_0 - 0.0693499771190745*G0_1_1 - 0.0547362472275662*G0_1_2 - 0.111886369481855*G0_2_0 - 0.0906181733004644*G0_2_1 - 0.0641307878721065*G0_2_2; A[1172] = 0.0962288017409533*G0_0_0 + 0.13145832915798*G0_0_1 + 0.096228801740953*G0_0_2 + 0.13145832915798*G0_1_0 + 0.166687856575008*G0_1_1 + 0.13145832915798*G0_1_2 + 0.0962288017409535*G0_2_0 + 0.13145832915798*G0_2_1 + 0.0962288017409532*G0_2_2; A[1173] = -0.0505608958299922*G0_0_0 - 0.0479513012065096*G0_0_1 - 0.0505608958299924*G0_0_2 - 0.047951301206509*G0_1_0 - 0.0453417065830257*G0_1_1 - 0.0479513012065096*G0_1_2 - 0.0505608958299923*G0_2_0 - 0.0479513012065096*G0_2_1 - 0.0505608958299924*G0_2_2; A[1174] = -0.15657567740901*G0_0_0 - 0.153966082785525*G0_0_1 - 0.156575677409009*G0_0_2 - 0.153966082785526*G0_1_0 - 0.151356488162042*G0_1_1 - 0.153966082785526*G0_1_2 - 0.15657567740901*G0_2_0 - 0.153966082785525*G0_2_1 - 0.156575677409009*G0_2_2; A[1175] = -0.0505608958299931*G0_0_0 - 0.0479513012065089*G0_0_1 - 0.0505608958299926*G0_0_2 - 0.0479513012065103*G0_1_0 - 0.045341706583026*G0_1_1 - 0.047951301206509*G0_1_2 - 0.0505608958299931*G0_2_0 - 0.0479513012065088*G0_2_1 - 0.0505608958299927*G0_2_2; A[1176] = 0.0214691349673985*G0_0_0 + 0.0214691349673985*G0_0_1 + 0.0214691349673985*G0_0_2 + 0.0551276864210886*G0_1_0 + 0.0551276864210886*G0_1_1 + 0.0551276864210885*G0_1_2 + 0.0214691349673985*G0_2_0 + 0.0214691349673985*G0_2_1 + 0.0214691349673985*G0_2_2; A[1177] = -0.00336507226698202*G0_0_0 - 0.00336507226698199*G0_2_0; A[1178] = -0.0232632312710437*G0_0_1 - 0.0388177200243172*G0_1_1 - 0.0232632312710437*G0_2_1; A[1179] = -0.00336507226698207*G0_0_2 - 0.00336507226698204*G0_2_2; A[1180] = -0.059916292555181*G0_0_1 - 0.078894569454465*G0_0_2 - 0.0315434750113564*G0_1_1 - 0.0599162925551812*G0_1_2 - 0.0599162925551809*G0_2_1 - 0.078894569454465*G0_2_2; A[1181] = -0.00578025209101579*G0_0_1 - 0.00523223722008388*G0_0_2 - 0.00626302709636058*G0_1_1 - 0.00578025209101554*G0_1_2 - 0.00578025209101578*G0_2_1 - 0.00523223722008381*G0_2_2; A[1182] = -0.0131523569023567*G0_0_1 - 0.0263047138047137*G0_0_2 + 6.52398655875267e-05*G0_1_1 - 0.0131523569023567*G0_1_2 - 0.0131523569023567*G0_2_1 - 0.0263047138047138*G0_2_2; A[1183] = 0.00228991928210661*G0_0_1 + 0.0139743792087541*G0_0_2 + 0.00228991928210673*G0_1_2 + 0.00228991928210662*G0_2_1 + 0.0139743792087542*G0_2_2; A[1184] = 0.00228991928210675*G0_0_0 + 0.00228991928210679*G0_0_2 + 0.00228991928210669*G0_2_0 + 0.00228991928210682*G0_2_2; A[1185] = 0.0017875723170862*G0_0_0 + 0.00178757231708623*G0_0_2 + 0.00178757231708614*G0_2_0 + 0.00178757231708606*G0_2_2; A[1186] = 0.00178757231708622*G0_0_0 + 0.00178757231708596*G0_0_2 + 0.0017875723170862*G0_2_0 + 0.00178757231708605*G0_2_2; A[1187] = 0.00228991928210673*G0_0_0 + 0.00228991928210694*G0_0_2 + 0.00228991928210674*G0_2_0 + 0.00228991928210687*G0_2_2; A[1188] = 0.0139743792087543*G0_0_0 + 0.00228991928210692*G0_0_1 + 0.00228991928210669*G0_1_0 + 0.0139743792087543*G0_2_0 + 0.00228991928210695*G0_2_1; A[1189] = -0.0263047138047141*G0_0_0 - 0.013152356902357*G0_0_1 - 0.0131523569023569*G0_1_0 + 6.52398655874874e-05*G0_1_1 - 0.026304713804714*G0_2_0 - 0.0131523569023569*G0_2_1; A[1190] = -0.00523223722008345*G0_0_0 - 0.0057802520910157*G0_0_1 - 0.00578025209101551*G0_1_0 - 0.00626302709636047*G0_1_1 - 0.00523223722008368*G0_2_0 - 0.00578025209101582*G0_2_1; A[1191] = -0.0788945694544649*G0_0_0 - 0.0599162925551808*G0_0_1 - 0.0599162925551812*G0_1_0 - 0.0315434750113566*G0_1_1 - 0.0788945694544649*G0_2_0 - 0.0599162925551809*G0_2_1; A[1192] = -0.0574176057031953*G0_0_0 - 0.0574176057031954*G0_0_1 - 0.0186912214907005*G0_0_2 + 0.0124934342599271*G0_1_0 + 0.0124934342599271*G0_1_1 - 0.0574176057031954*G0_1_2 - 0.0574176057031954*G0_2_0 - 0.0574176057031955*G0_2_1 - 0.0186912214907005*G0_2_2; A[1193] = 0.00506261356955818*G0_0_0 + 0.00506261356955819*G0_0_1 + 0.000260959462348325*G0_0_2 + 0.000260959462348436*G0_1_0 + 0.000260959462348441*G0_1_1 + 0.00506261356955806*G0_1_2 + 0.00506261356955821*G0_2_0 + 0.00506261356955822*G0_2_1 + 0.000260959462348301*G0_2_2; A[1194] = -0.000482775005344748*G0_0_0 - 0.000482775005344759*G0_0_1 - 0.00626302709636047*G0_0_2 + 6.52398655868123e-05*G0_1_0 + 6.52398655867977e-05*G0_1_1 - 0.000482775005344555*G0_1_2 - 0.000482775005344805*G0_2_0 - 0.000482775005344815*G0_2_1 - 0.00626302709636045*G0_2_2; A[1195] = -0.00228991928210665*G0_0_0 - 0.00228991928210664*G0_0_1 + 0.00658922642429602*G0_0_2 - 0.0022899192821067*G0_1_2 - 0.00228991928210666*G0_2_0 - 0.00228991928210665*G0_2_1 + 0.00658922642429598*G0_2_2; A[1196] = -0.147063705006411*G0_0_0 - 0.108337320793917*G0_0_1 - 0.147063705006412*G0_0_2 - 0.17344670664983*G0_1_0 - 0.243357746612952*G0_1_1 - 0.17344670664983*G0_1_2 - 0.147063705006412*G0_2_0 - 0.108337320793917*G0_2_1 - 0.147063705006412*G0_2_2; A[1197] = 0.304226541205704*G0_0_0 + 0.226095278178609*G0_0_1 + 0.304226541205704*G0_0_2 + 0.226095278178609*G0_1_0 + 0.428965164208215*G0_1_1 + 0.226095278178609*G0_1_2 + 0.304226541205704*G0_2_0 + 0.226095278178609*G0_2_1 + 0.304226541205704*G0_2_2; A[1198] = -0.204187731314465*G0_0_0 - 0.219493003781196*G0_0_1 - 0.204187731314465*G0_0_2 - 0.167692550505049*G0_1_0 - 0.387185554286245*G0_1_1 - 0.167692550505049*G0_1_2 - 0.204187731314466*G0_2_0 - 0.219493003781196*G0_2_1 - 0.204187731314466*G0_2_2; A[1199] = 0.0788945694544648*G0_0_0 + 0.103529142700149*G0_0_1 + 0.0788945694544648*G0_0_2 + 0.0599162925551811*G0_1_0 + 0.18526817029421*G0_1_1 + 0.0599162925551811*G0_1_2 + 0.0788945694544648*G0_2_0 + 0.103529142700149*G0_2_1 + 0.0788945694544648*G0_2_2; A[1200] = -0.0186912214907005*G0_0_0 - 0.0574176057031954*G0_0_1 - 0.0574176057031953*G0_0_2 - 0.0574176057031953*G0_1_0 + 0.0124934342599271*G0_1_1 + 0.0124934342599271*G0_1_2 - 0.0186912214907005*G0_2_0 - 0.0574176057031954*G0_2_1 - 0.0574176057031954*G0_2_2; A[1201] = 0.000260959462348391*G0_0_0 + 0.00506261356955801*G0_0_1 + 0.00506261356955798*G0_0_2 + 0.00506261356955796*G0_1_0 + 0.000260959462348567*G0_1_1 + 0.000260959462348558*G0_1_2 + 0.000260959462348317*G0_2_0 + 0.00506261356955807*G0_2_1 + 0.00506261356955803*G0_2_2; A[1202] = -0.00626302709636033*G0_0_0 - 0.000482775005344765*G0_0_1 - 0.000482775005344668*G0_0_2 - 0.000482775005344573*G0_1_0 + 6.5239865586554e-05*G0_1_1 + 6.52398655865736e-05*G0_1_2 - 0.00626302709636028*G0_2_0 - 0.000482775005344829*G0_2_1 - 0.000482775005344728*G0_2_2; A[1203] = 0.00658922642429585*G0_0_0 - 0.00228991928210676*G0_0_1 - 0.00228991928210679*G0_0_2 - 0.00228991928210665*G0_1_0 + 0.0065892264242958*G0_2_0 - 0.00228991928210679*G0_2_1 - 0.00228991928210681*G0_2_2; A[1204] = -0.0148746893538558*G0_0_0 + 6.52398655874565e-05*G0_0_1 - 0.0148746893538553*G0_0_2 + 6.52398655869655e-05*G0_1_0 + 6.52398655873495e-05*G0_1_2 - 0.0148746893538557*G0_2_0 + 6.52398655873818e-05*G0_2_1 - 0.0148746893538551*G0_2_2; A[1205] = -0.0189848008858422*G0_0_0 - 0.00949240044292205*G0_0_1 - 0.018984800885843*G0_0_2 - 0.00949240044292096*G0_1_0 - 0.000652398655871056*G0_1_1 - 0.00949240044292103*G0_1_2 - 0.0189848008858423*G0_2_0 - 0.00949240044292187*G0_2_1 - 0.018984800885843*G0_2_2; A[1206] = -0.127087258163646*G0_0_0 - 0.0893133759887215*G0_0_1 - 0.127087258163645*G0_0_2 - 0.0893133759887224*G0_1_0 - 0.0665446628988288*G0_1_1 - 0.089313375988722*G0_1_2 - 0.127087258163646*G0_2_0 - 0.0893133759887216*G0_2_1 - 0.127087258163645*G0_2_2; A[1207] = 0.00450155072550864*G0_0_0 + 0.00257697469068966*G0_0_1 + 0.0045015507255086*G0_0_2 + 0.00257697469068891*G0_1_0 + 0.00257697469068884*G0_1_2 + 0.00450155072550849*G0_2_0 + 0.00257697469068942*G0_2_1 + 0.00450155072550834*G0_2_2; A[1208] = -0.0189848008858421*G0_0_0 - 0.00949240044292104*G0_0_1 - 0.0189848008858422*G0_0_2 - 0.00949240044292061*G0_1_0 - 0.000652398655870358*G0_1_1 - 0.00949240044292107*G0_1_2 - 0.0189848008858421*G0_2_0 - 0.00949240044292107*G0_2_1 - 0.0189848008858421*G0_2_2; A[1209] = -0.0148746893538554*G0_0_0 + 6.52398655874954e-05*G0_0_1 - 0.0148746893538554*G0_0_2 + 6.52398655875397e-05*G0_1_0 + 6.52398655874539e-05*G0_1_2 - 0.0148746893538553*G0_2_0 + 6.52398655875395e-05*G0_2_1 - 0.0148746893538554*G0_2_2; A[1210] = 0.132306447410612*G0_0_0 + 0.194675758911868*G0_0_1 + 0.121346149991982*G0_0_2 + 0.0589768384907261*G0_1_0 - 0.00339247301052903*G0_1_1 + 0.194675758911868*G0_1_2 + 0.132306447410612*G0_2_0 + 0.194675758911868*G0_2_1 + 0.121346149991982*G0_2_2; A[1211] = -0.166948816037356*G0_0_0 - 0.250814663249557*G0_0_1 - 0.334680510461756*G0_0_2 - 0.160783648739377*G0_1_0 - 0.0622388317700808*G0_1_1 - 0.250814663249556*G0_1_2 - 0.166948816037356*G0_2_0 - 0.250814663249557*G0_2_1 - 0.334680510461756*G0_2_2; A[1212] = 0.127087258163646*G0_0_0 + 0.173472802596065*G0_0_1 + 0.20941996853455*G0_0_2 + 0.0893133759887224*G0_1_0 + 0.0846813455320393*G0_1_1 + 0.173472802596065*G0_1_2 + 0.127087258163646*G0_2_0 + 0.173472802596065*G0_2_1 + 0.20941996853455*G0_2_2; A[1213] = -0.0436454700777608*G0_0_0 - 0.0371541034518458*G0_0_1 + 0.0371867233846395*G0_0_2 - 0.00975335990526972*G0_1_0 - 0.00678494602105682*G0_1_1 - 0.0371541034518459*G0_1_2 - 0.0436454700777608*G0_2_0 - 0.0371541034518458*G0_2_1 + 0.0371867233846395*G0_2_2; A[1214] = 0.018984800885842*G0_0_0 + 0.0378717419733036*G0_0_1 + 0.0567586830607654*G0_0_2 + 0.0094924004429206*G0_1_0 + 0.0127870136550691*G0_1_1 + 0.0378717419733038*G0_1_2 + 0.018984800885842*G0_2_0 + 0.0378717419733036*G0_2_1 + 0.0567586830607654*G0_2_2; A[1215] = 0.0148746893538555*G0_0_0 + 0.0136351319077013*G0_0_1 - 0.0254435475789639*G0_0_2 - 6.52398655873664e-05*G0_1_0 - 0.000130479731174338*G0_1_1 + 0.0136351319077014*G0_1_2 + 0.0148746893538554*G0_2_0 + 0.0136351319077014*G0_2_1 - 0.0254435475789638*G0_2_2; A[1216] = 0.0476251018785736*G0_0_0 - 0.0147442096226816*G0_0_1 + 0.0476251018785739*G0_0_2 - 0.0147442096226814*G0_1_0 + 0.0476251018785739*G0_1_1 - 0.0147442096226817*G0_1_2 + 0.0476251018785738*G0_2_0 - 0.0147442096226815*G0_2_1 + 0.047625101878574*G0_2_2; A[1217] = 0.0088073818542563*G0_0_0 + 0.00231601522834084*G0_0_1 + 0.0088073818542564*G0_0_2 + 0.0023160152283414*G0_1_0 - 0.00065239865587111*G0_1_1 + 0.0023160152283416*G0_1_2 + 0.00880738185425618*G0_2_0 + 0.00231601522834077*G0_2_1 + 0.00880738185425634*G0_2_2; A[1218] = -0.00130479731174133*G0_0_0 - 6.52398655872455e-05*G0_0_1 - 0.00130479731174142*G0_0_2 - 6.52398655867962e-05*G0_1_0 - 6.52398655864754e-05*G0_1_2 - 0.00130479731174123*G0_2_0 - 6.52398655871716e-05*G0_2_1 - 0.00130479731174119*G0_2_2; A[1219] = 0.00880738185425649*G0_0_0 + 0.00231601522834159*G0_0_1 + 0.00880738185425641*G0_0_2 + 0.00231601522834153*G0_1_0 - 0.000652398655871406*G0_1_1 + 0.00231601522834161*G0_1_2 + 0.00880738185425646*G0_2_0 + 0.00231601522834155*G0_2_1 + 0.00880738185425636*G0_2_2; A[1220] = -0.0156575677409008*G0_0_0 - 0.00257697469068983*G0_0_1 - 0.0156575677409008*G0_0_2 - 0.00257697469069003*G0_1_0 - 0.00257697469069019*G0_1_2 - 0.0156575677409008*G0_2_0 - 0.00257697469068959*G0_2_1 - 0.0156575677409009*G0_2_2; A[1221] = -0.00130479731174156*G0_0_0 - 6.52398655874141e-05*G0_0_1 - 0.00130479731174171*G0_0_2 - 6.5239865586723e-05*G0_1_0 - 6.52398655869435e-05*G0_1_2 - 0.00130479731174148*G0_2_0 - 6.52398655874574e-05*G0_2_1 - 0.00130479731174161*G0_2_2; A[1222] = 0.121346149991982*G0_0_0 + 0.194675758911868*G0_0_1 + 0.132306447410612*G0_0_2 + 0.194675758911868*G0_1_0 - 0.00339247301052889*G0_1_1 + 0.0589768384907264*G0_1_2 + 0.121346149991982*G0_2_0 + 0.194675758911868*G0_2_1 + 0.132306447410612*G0_2_2; A[1223] = 0.0371867233846398*G0_0_0 - 0.0371541034518452*G0_0_1 - 0.0436454700777609*G0_0_2 - 0.037154103451846*G0_1_0 - 0.00678494602105617*G0_1_1 - 0.00975335990526896*G0_1_2 + 0.0371867233846396*G0_2_0 - 0.0371541034518453*G0_2_1 - 0.0436454700777611*G0_2_2; A[1224] = -0.0254435475789643*G0_0_0 + 0.0136351319077013*G0_0_1 + 0.0148746893538554*G0_0_2 + 0.0136351319077012*G0_1_0 - 0.000130479731173922*G0_1_1 - 6.52398655873751e-05*G0_1_2 - 0.0254435475789642*G0_2_0 + 0.0136351319077013*G0_2_1 + 0.0148746893538552*G0_2_2; A[1225] = -0.334680510461755*G0_0_0 - 0.250814663249556*G0_0_1 - 0.166948816037355*G0_0_2 - 0.250814663249556*G0_1_0 - 0.0622388317700814*G0_1_1 - 0.160783648739377*G0_1_2 - 0.334680510461756*G0_2_0 - 0.250814663249557*G0_2_1 - 0.166948816037356*G0_2_2; A[1226] = 0.0567586830607657*G0_0_0 + 0.0378717419733033*G0_0_1 + 0.0189848008858426*G0_0_2 + 0.037871741973304*G0_1_0 + 0.0127870136550679*G0_1_1 + 0.00949240044292101*G0_1_2 + 0.0567586830607657*G0_2_0 + 0.0378717419733034*G0_2_1 + 0.0189848008858426*G0_2_2; A[1227] = 0.209419968534549*G0_0_0 + 0.173472802596065*G0_0_1 + 0.127087258163645*G0_0_2 + 0.173472802596065*G0_1_0 + 0.0846813455320398*G0_1_1 + 0.0893133759887219*G0_1_2 + 0.209419968534549*G0_2_0 + 0.173472802596065*G0_2_1 + 0.127087258163645*G0_2_2; A[1228] = -0.156575677409008*G0_0_0 - 0.0662184635708927*G0_0_1 - 0.156575677409008*G0_0_2 - 0.0662184635708929*G0_1_0 - 0.161794866655976*G0_1_1 - 0.0662184635708934*G0_1_2 - 0.156575677409008*G0_2_0 - 0.0662184635708928*G0_2_1 - 0.156575677409008*G0_2_2; A[1229] = 0.039143919352252*G0_0_0 + 0.00717638521458073*G0_0_1 + 0.0391439193522521*G0_0_2 + 0.00717638521457986*G0_1_0 + 0.00130479731174183*G0_1_1 + 0.00717638521458012*G0_1_2 + 0.0391439193522519*G0_2_0 + 0.00717638521458062*G0_2_1 + 0.0391439193522525*G0_2_2; A[1230] = 0.185933616923198*G0_0_0 + 0.170276049182296*G0_0_1 + 0.185933616923198*G0_0_2 + 0.170276049182298*G0_1_0 + 0.180714427676232*G0_1_1 + 0.170276049182298*G0_1_2 + 0.185933616923199*G0_2_0 + 0.170276049182296*G0_2_1 + 0.185933616923199*G0_2_2; A[1231] = 0.0391439193522522*G0_0_0 + 0.00717638521457935*G0_0_1 + 0.0391439193522516*G0_0_2 + 0.00717638521458078*G0_1_0 + 0.00130479731174179*G0_1_1 + 0.00717638521457941*G0_1_2 + 0.0391439193522523*G0_2_0 + 0.00717638521457941*G0_2_1 + 0.0391439193522514*G0_2_2; A[1232] = -0.0155544887532734*G0_0_0 - 0.0155544887532734*G0_0_1 - 0.0155544887532734*G0_0_2 - 0.0388177200243168*G0_1_0 - 0.0388177200243168*G0_1_1 - 0.0388177200243167*G0_1_2 - 0.0155544887532734*G0_2_0 - 0.0155544887532734*G0_2_1 - 0.0155544887532734*G0_2_2; A[1233] = -0.0033650722669818*G0_0_0 - 0.00336507226698181*G0_2_0; A[1234] = 0.0336585514536902*G0_0_1 + 0.055127686421089*G0_1_1 + 0.0336585514536902*G0_2_1; A[1235] = -0.00336507226698188*G0_0_2 - 0.00336507226698189*G0_2_2; A[1236] = 0.0699110399631228*G0_0_1 + 0.108637424175618*G0_0_2 + 0.0124934342599269*G0_1_1 + 0.0699110399631229*G0_1_2 + 0.0699110399631228*G0_2_1 + 0.108637424175618*G0_2_2; A[1237] = -0.0048016541072096*G0_0_1 - 0.0096033082144195*G0_0_2 + 0.000260959462348527*G0_1_1 - 0.00480165410720995*G0_1_2 - 0.00480165410720957*G0_2_1 - 0.00960330821441939*G0_2_2; A[1238] = 0.000548014870931802*G0_0_1 - 0.00523223722008384*G0_0_2 + 6.52398655866831e-05*G0_1_1 + 0.000548014870931416*G0_1_2 + 0.000548014870931809*G0_2_1 - 0.00523223722008388*G0_2_2; A[1239] = 0.00228991928210669*G0_0_1 + 0.011169064988509*G0_0_2 + 0.00228991928210666*G0_1_2 + 0.00228991928210667*G0_2_1 + 0.011169064988509*G0_2_2; A[1240] = 0.00228991928210635*G0_0_0 + 0.00228991928210668*G0_0_2 + 0.00228991928210643*G0_2_0 + 0.00228991928210672*G0_2_2; A[1241] = 0.00178757231708649*G0_0_0 + 0.00178757231708608*G0_0_2 + 0.00178757231708653*G0_2_0 + 0.00178757231708617*G0_2_2; A[1242] = 0.00178757231708609*G0_0_0 + 0.00178757231708641*G0_0_2 + 0.0017875723170861*G0_2_0 + 0.00178757231708639*G0_2_2; A[1243] = 0.00228991928210664*G0_0_0 + 0.00228991928210646*G0_0_2 + 0.00228991928210662*G0_2_0 + 0.00228991928210645*G0_2_2; A[1244] = 0.0111690649885088*G0_0_0 + 0.00228991928210654*G0_0_1 + 0.00228991928210677*G0_1_0 + 0.0111690649885089*G0_2_0 + 0.00228991928210657*G0_2_1; A[1245] = -0.00523223722008363*G0_0_0 + 0.000548014870931901*G0_0_1 + 0.000548014870931795*G0_1_0 + 6.52398655869407e-05*G0_1_1 - 0.00523223722008369*G0_2_0 + 0.000548014870931828*G0_2_1; A[1246] = -0.00960330821442*G0_0_0 - 0.0048016541072098*G0_0_1 - 0.00480165410720997*G0_1_0 + 0.000260959462348474*G0_1_1 - 0.00960330821441995*G0_2_0 - 0.00480165410720974*G0_2_1; A[1247] = 0.108637424175618*G0_0_0 + 0.0699110399631227*G0_0_1 + 0.069911039963123*G0_1_0 + 0.012493434259927*G0_1_1 + 0.108637424175618*G0_2_0 + 0.0699110399631227*G0_2_1; A[1248] = 0.0283728175438244*G0_0_0 + 0.0283728175438244*G0_0_1 + 0.00939454064454084*G0_0_2 - 0.0315434750113565*G0_1_0 - 0.0315434750113565*G0_1_1 + 0.0283728175438242*G0_1_2 + 0.0283728175438245*G0_2_0 + 0.0283728175438245*G0_2_1 + 0.00939454064454088*G0_2_2; A[1249] = -0.000482775005344647*G0_0_0 - 0.000482775005344614*G0_0_1 + 6.52398655869216e-05*G0_0_2 - 0.00626302709636024*G0_1_0 - 0.00626302709636024*G0_1_1 - 0.000482775005344569*G0_1_2 - 0.000482775005344638*G0_2_0 - 0.000482775005344606*G0_2_1 + 6.52398655868742e-05*G0_2_2; A[1250] = 0.013217596767944*G0_0_0 + 0.0132175967679439*G0_0_1 + 6.52398655872045e-05*G0_0_2 + 6.52398655872504e-05*G0_1_0 + 6.52398655872638e-05*G0_1_1 + 0.013217596767944*G0_1_2 + 0.013217596767944*G0_2_0 + 0.013217596767944*G0_2_1 + 6.52398655872732e-05*G0_2_2; A[1251] = -0.00228991928210673*G0_0_0 - 0.00228991928210671*G0_0_1 + 0.00939454064454041*G0_0_2 - 0.00228991928210692*G0_1_2 - 0.0022899192821067*G0_2_0 - 0.00228991928210668*G0_2_1 + 0.00939454064454037*G0_2_2; A[1252] = 0.100717304493345*G0_0_0 + 0.0817390275940618*G0_0_1 + 0.100717304493345*G0_0_2 + 0.125351877739029*G0_1_0 + 0.18526817029421*G0_1_1 + 0.125351877739029*G0_1_2 + 0.100717304493345*G0_2_0 + 0.0817390275940619*G0_2_1 + 0.100717304493346*G0_2_2; A[1253] = -0.204187731314465*G0_0_0 - 0.167692550505049*G0_0_1 - 0.204187731314466*G0_0_2 - 0.219493003781196*G0_1_0 - 0.387185554286245*G0_1_1 - 0.219493003781196*G0_1_2 - 0.204187731314465*G0_2_0 - 0.167692550505049*G0_2_1 - 0.204187731314466*G0_2_2; A[1254] = 0.281001149056702*G0_0_0 + 0.202869886029607*G0_0_1 + 0.281001149056702*G0_0_2 + 0.202869886029607*G0_1_0 + 0.428965164208215*G0_1_1 + 0.202869886029607*G0_1_2 + 0.281001149056702*G0_2_0 + 0.202869886029607*G0_2_1 + 0.281001149056702*G0_2_2; A[1255] = -0.108637424175618*G0_0_0 - 0.135020425819036*G0_0_1 - 0.108637424175618*G0_0_2 - 0.0699110399631228*G0_1_0 - 0.243357746612953*G0_1_1 - 0.0699110399631228*G0_1_2 - 0.108637424175618*G0_2_0 - 0.135020425819036*G0_2_1 - 0.108637424175618*G0_2_2; A[1256] = 0.00939454064454083*G0_0_0 + 0.0283728175438244*G0_0_1 + 0.0283728175438244*G0_0_2 + 0.0283728175438241*G0_1_0 - 0.0315434750113565*G0_1_1 - 0.0315434750113565*G0_1_2 + 0.00939454064454082*G0_2_0 + 0.0283728175438244*G0_2_1 + 0.0283728175438244*G0_2_2; A[1257] = 6.52398655868213e-05*G0_0_0 - 0.000482775005344415*G0_0_1 - 0.000482775005344392*G0_0_2 - 0.000482775005344299*G0_1_0 - 0.00626302709636069*G0_1_1 - 0.00626302709636068*G0_1_2 + 6.52398655868693e-05*G0_2_0 - 0.000482775005344591*G0_2_1 - 0.000482775005344566*G0_2_2; A[1258] = 6.52398655873826e-05*G0_0_0 + 0.013217596767944*G0_0_1 + 0.013217596767944*G0_0_2 + 0.0132175967679438*G0_1_0 + 6.52398655874769e-05*G0_1_1 + 6.52398655874424e-05*G0_1_2 + 6.52398655873411e-05*G0_2_0 + 0.0132175967679442*G0_2_1 + 0.0132175967679442*G0_2_2; A[1259] = 0.00939454064454016*G0_0_0 - 0.00228991928210672*G0_0_1 - 0.00228991928210668*G0_0_2 - 0.00228991928210674*G0_1_0 + 0.0093945406445402*G0_2_0 - 0.00228991928210676*G0_2_1 - 0.00228991928210671*G0_2_2; A[1260] = -0.00117431758056682*G0_0_0 + 6.52398655869153e-05*G0_0_1 - 0.00117431758056785*G0_0_2 + 6.52398655871772e-05*G0_1_0 + 6.52398655869619e-05*G0_1_2 - 0.00117431758056688*G0_2_0 + 6.52398655870298e-05*G0_2_1 - 0.0011743175805679*G0_2_2; A[1261] = 0.00352295274170182*G0_0_0 - 0.00296841388421244*G0_0_1 + 0.00352295274170341*G0_0_2 - 0.00296841388421278*G0_1_0 - 0.000652398655870812*G0_1_1 - 0.00296841388421243*G0_1_2 + 0.00352295274170181*G0_2_0 - 0.00296841388421258*G0_2_1 + 0.00352295274170335*G0_2_2; A[1262] = 0.124738623002511*G0_0_0 + 0.0623693115012551*G0_0_1 + 0.12473862300251*G0_0_2 + 0.0623693115012555*G0_1_0 + 0.0476251018785737*G0_1_1 + 0.0623693115012551*G0_1_2 + 0.124738623002511*G0_2_0 + 0.0623693115012552*G0_2_1 + 0.12473862300251*G0_2_2; A[1263] = -0.0105036183595216*G0_0_0 + 0.00257697469069002*G0_0_1 - 0.0105036183595213*G0_0_2 + 0.00257697469069036*G0_1_0 + 0.00257697469069027*G0_1_2 - 0.0105036183595215*G0_2_0 + 0.00257697469069015*G0_2_1 - 0.0105036183595211*G0_2_2; A[1264] = 0.00352295274170291*G0_0_0 - 0.00296841388421254*G0_0_1 + 0.00352295274170208*G0_0_2 - 0.00296841388421309*G0_1_0 - 0.000652398655871613*G0_1_1 - 0.00296841388421258*G0_1_2 + 0.00352295274170308*G0_2_0 - 0.00296841388421243*G0_2_1 + 0.00352295274170225*G0_2_2; A[1265] = -0.00117431758056768*G0_0_0 + 6.52398655865775e-05*G0_0_1 - 0.00117431758056755*G0_0_2 + 6.52398655866114e-05*G0_1_0 + 6.5239865586597e-05*G0_1_2 - 0.00117431758056777*G0_2_0 + 6.52398655864882e-05*G0_2_1 - 0.00117431758056762*G0_2_2; A[1266] = -0.0510175748891018*G0_0_0 - 0.0887914570640258*G0_0_1 - 0.0528442911255407*G0_0_2 - 0.00463203045668221*G0_1_0 + 0.0846813455320396*G0_1_1 - 0.088791457064025*G0_1_2 - 0.0510175748891019*G0_2_0 - 0.0887914570640259*G0_2_1 - 0.0528442911255408*G0_2_2; A[1267] = 0.182410664181496*G0_0_0 + 0.188575831479476*G0_0_1 + 0.104709984267275*G0_0_2 + 0.0985448169692951*G0_1_0 - 0.0622388317700815*G0_1_1 + 0.188575831479475*G0_1_2 + 0.182410664181497*G0_2_0 + 0.188575831479476*G0_2_1 + 0.104709984267275*G0_2_2; A[1268] = -0.124738623002511*G0_0_0 - 0.198068231922397*G0_0_1 - 0.271397840842283*G0_0_2 - 0.0623693115012554*G0_1_0 - 0.00339247301052852*G0_1_1 - 0.198068231922397*G0_1_2 - 0.124738623002511*G0_2_0 - 0.198068231922397*G0_2_1 - 0.271397840842283*G0_2_2; A[1269] = -0.0155923278753135*G0_0_0 - 0.0250847283182348*G0_0_1 - 0.00619778723077353*G0_0_2 + 0.00329461321214803*G0_1_0 + 0.0127870136550686*G0_1_1 - 0.0250847283182357*G0_1_2 - 0.0155923278753133*G0_2_0 - 0.0250847283182348*G0_2_1 - 0.00619778723077353*G0_2_2; A[1270] = -0.00352295274170291*G0_0_0 + 0.0303691574307889*G0_0_1 + 0.104709984267274*G0_0_2 + 0.00296841388421309*G0_1_0 - 0.00678494602105687*G0_1_1 + 0.0303691574307897*G0_1_2 - 0.00352295274170307*G0_2_0 + 0.0303691574307888*G0_2_1 + 0.104709984267275*G0_2_2; A[1271] = 0.00117431758056753*G0_0_0 - 0.0137656116388757*G0_0_1 - 0.0528442911255405*G0_0_2 - 6.52398655867694e-05*G0_1_0 - 0.000130479731173976*G0_1_1 - 0.0137656116388754*G0_1_2 + 0.00117431758056762*G0_2_0 - 0.0137656116388758*G0_2_1 - 0.0528442911255405*G0_2_2; A[1272] = -0.0150051690850299*G0_0_0 + 0.0227687130898938*G0_0_1 - 0.0150051690850303*G0_0_2 + 0.0227687130898929*G0_1_0 - 0.0665446628988289*G0_1_1 + 0.0227687130898936*G0_1_2 - 0.0150051690850302*G0_2_0 + 0.0227687130898936*G0_2_1 - 0.0150051690850303*G0_2_2; A[1273] = -0.000652398655871437*G0_0_0 + 0.00884000178705032*G0_0_1 - 0.000652398655871026*G0_0_2 + 0.00884000178705074*G0_1_0 - 0.000652398655870734*G0_1_1 + 0.00884000178705054*G0_1_2 - 0.000652398655871104*G0_2_0 + 0.0088400017870504*G0_2_1 - 0.000652398655870831*G0_2_2; A[1274] = -0.0150051690850293*G0_0_0 - 6.52398655867776e-05*G0_0_1 - 0.0150051690850303*G0_0_2 - 6.52398655872841e-05*G0_1_0 - 6.52398655873122e-05*G0_1_2 - 0.0150051690850295*G0_2_0 - 6.52398655868884e-05*G0_2_1 - 0.0150051690850305*G0_2_2; A[1275] = -0.00065239865587036*G0_0_0 + 0.00884000178705092*G0_0_1 - 0.000652398655870525*G0_0_2 + 0.00884000178705031*G0_1_0 - 0.000652398655870173*G0_1_1 + 0.00884000178704999*G0_1_2 - 0.00065239865587033*G0_2_0 + 0.00884000178705103*G0_2_1 - 0.000652398655870584*G0_2_2; A[1276] = -0.000652398655871538*G0_0_0 - 0.00257697469068996*G0_0_1 - 0.000652398655870692*G0_0_2 - 0.00257697469068999*G0_1_0 - 0.00257697469069003*G0_1_2 - 0.000652398655871612*G0_2_0 - 0.00257697469069009*G0_2_1 - 0.000652398655870694*G0_2_2; A[1277] = -0.01500516908503*G0_0_0 - 6.52398655866497e-05*G0_0_1 - 0.0150051690850301*G0_0_2 - 6.52398655873699e-05*G0_1_0 - 6.52398655869838e-05*G0_1_2 - 0.01500516908503*G0_2_0 - 6.52398655865642e-05*G0_2_1 - 0.0150051690850301*G0_2_2; A[1278] = -0.0528442911255405*G0_0_0 - 0.0887914570640261*G0_0_1 - 0.051017574889102*G0_0_2 - 0.0887914570640257*G0_1_0 + 0.0846813455320392*G0_1_1 - 0.00463203045668307*G0_1_2 - 0.0528442911255408*G0_2_0 - 0.0887914570640262*G0_2_1 - 0.0510175748891023*G0_2_2; A[1279] = -0.00619778723077378*G0_0_0 - 0.0250847283182357*G0_0_1 - 0.0155923278753144*G0_0_2 - 0.0250847283182348*G0_1_0 + 0.0127870136550688*G0_1_1 + 0.00329461321214764*G0_1_2 - 0.00619778723077338*G0_2_0 - 0.0250847283182356*G0_2_1 - 0.0155923278753144*G0_2_2; A[1280] = -0.0528442911255399*G0_0_0 - 0.0137656116388755*G0_0_1 + 0.00117431758056794*G0_0_2 - 0.0137656116388754*G0_1_0 - 0.000130479731174459*G0_1_1 - 6.5239865586828e-05*G0_1_2 - 0.0528442911255401*G0_2_0 - 0.0137656116388756*G0_2_1 + 0.00117431758056799*G0_2_2; A[1281] = 0.104709984267274*G0_0_0 + 0.188575831479476*G0_0_1 + 0.182410664181496*G0_0_2 + 0.188575831479475*G0_1_0 - 0.0622388317700807*G0_1_1 + 0.0985448169692955*G0_1_2 + 0.104709984267275*G0_2_0 + 0.188575831479476*G0_2_1 + 0.182410664181496*G0_2_2; A[1282] = 0.104709984267275*G0_0_0 + 0.0303691574307896*G0_0_1 - 0.00352295274170334*G0_0_2 + 0.0303691574307888*G0_1_0 - 0.00678494602105651*G0_1_1 + 0.00296841388421239*G0_1_2 + 0.104709984267275*G0_2_0 + 0.0303691574307895*G0_2_1 - 0.00352295274170328*G0_2_2; A[1283] = -0.271397840842282*G0_0_0 - 0.198068231922397*G0_0_1 - 0.12473862300251*G0_0_2 - 0.198068231922397*G0_1_0 - 0.00339247301052886*G0_1_1 - 0.0623693115012549*G0_1_2 - 0.271397840842282*G0_2_0 - 0.198068231922397*G0_2_1 - 0.12473862300251*G0_2_2; A[1284] = 0.0260959462348352*G0_0_0 + 0.0104383784939344*G0_0_1 + 0.0260959462348361*G0_0_2 + 0.0104383784939335*G0_1_0 + 0.180714427676232*G0_1_1 + 0.0104383784939345*G0_1_2 + 0.0260959462348351*G0_2_0 + 0.0104383784939346*G0_2_1 + 0.0260959462348365*G0_2_2; A[1285] = 0.0260959462348333*G0_0_0 - 0.00587158790283831*G0_0_1 + 0.0260959462348354*G0_0_2 - 0.00587158790283851*G0_1_0 + 0.00130479731174187*G0_1_1 - 0.00587158790283811*G0_1_2 + 0.0260959462348336*G0_2_0 - 0.00587158790283824*G0_2_1 + 0.0260959462348353*G0_2_2; A[1286] = -0.185933616923199*G0_0_0 - 0.0955764030850833*G0_0_1 - 0.185933616923198*G0_0_2 - 0.0955764030850826*G0_1_0 - 0.161794866655977*G0_1_1 - 0.0955764030850832*G0_1_2 - 0.185933616923199*G0_2_0 - 0.0955764030850833*G0_2_1 - 0.185933616923199*G0_2_2; A[1287] = 0.0260959462348351*G0_0_0 - 0.00587158790283824*G0_0_1 + 0.0260959462348331*G0_0_2 - 0.00587158790283834*G0_1_0 + 0.0013047973117417*G0_1_1 - 0.00587158790283796*G0_1_2 + 0.0260959462348349*G0_2_0 - 0.00587158790283846*G0_2_1 + 0.0260959462348332*G0_2_2; A[1288] = 0.00480034930989795*G0_0_0 + 0.00480034930989798*G0_0_1 + 0.00480034930989797*G0_0_2 + 0.0153313684129654*G0_1_0 + 0.0153313684129655*G0_1_1 + 0.0153313684129654*G0_1_2 + 0.00480034930989797*G0_2_0 + 0.00480034930989799*G0_2_1 + 0.00480034930989799*G0_2_2; A[1289] = -0.004800349309898*G0_0_0 - 0.004800349309898*G0_2_0; A[1290] = -0.0372571824394739*G0_0_1 - 0.055127686421089*G0_1_1 - 0.0372571824394738*G0_2_1; A[1291] = -0.00480034930989791*G0_0_2 - 0.00480034930989791*G0_2_2; A[1292] = -0.0699110399631229*G0_0_1 - 0.139822079926246*G0_0_2 + 0.0196371995417134*G0_1_1 - 0.0699110399631229*G0_1_2 - 0.0699110399631229*G0_2_1 - 0.139822079926246*G0_2_2; A[1293] = 0.0387263842124949*G0_0_1 + 0.108637424175618*G0_0_2 - 0.0186912214907006*G0_1_1 + 0.0387263842124953*G0_1_2 + 0.0387263842124949*G0_2_1 + 0.108637424175618*G0_2_2; A[1294] = -0.0189782768992839*G0_0_1 - 0.078894569454465*G0_0_2 + 0.00939454064454079*G0_1_1 - 0.0189782768992837*G0_1_2 - 0.0189782768992839*G0_2_1 - 0.0788945694544649*G0_2_2; A[1295] = 0.00537576492437603*G0_0_1 + 0.0328352243499812*G0_0_2 + 0.00537576492437611*G0_1_2 + 0.00537576492437603*G0_2_1 + 0.0328352243499812*G0_2_2; A[1296] = 0.00537576492437616*G0_0_0 + 0.00537576492437599*G0_0_2 + 0.00537576492437615*G0_2_0 + 0.00537576492437598*G0_2_2; A[1297] = 0.00228991928210668*G0_0_0 + 0.00228991928210676*G0_0_2 + 0.00228991928210662*G0_2_0 + 0.00228991928210672*G0_2_2; A[1298] = 0.00228991928210673*G0_0_0 + 0.00228991928210668*G0_0_2 + 0.00228991928210674*G0_2_0 + 0.00228991928210667*G0_2_2; A[1299] = 0.00537576492437607*G0_0_0 + 0.00537576492437607*G0_0_2 + 0.00537576492437607*G0_2_0 + 0.00537576492437608*G0_2_2; A[1300] = 0.0328352243499812*G0_0_0 + 0.00537576492437605*G0_0_1 + 0.00537576492437597*G0_1_0 + 0.0328352243499812*G0_2_0 + 0.00537576492437604*G0_2_1; A[1301] = -0.0788945694544651*G0_0_0 - 0.0189782768992839*G0_0_1 - 0.0189782768992838*G0_1_0 + 0.00939454064454064*G0_1_1 - 0.078894569454465*G0_2_0 - 0.0189782768992839*G0_2_1; A[1302] = 0.108637424175618*G0_0_0 + 0.0387263842124949*G0_0_1 + 0.0387263842124951*G0_1_0 - 0.0186912214907007*G0_1_1 + 0.108637424175618*G0_2_0 + 0.0387263842124949*G0_2_1; A[1303] = -0.139822079926246*G0_0_0 - 0.0699110399631228*G0_0_1 - 0.069911039963123*G0_1_0 + 0.0196371995417134*G0_1_1 - 0.139822079926246*G0_2_0 - 0.0699110399631228*G0_2_1; A[1304] = -0.0053757649243762*G0_0_0 - 0.00537576492437616*G0_0_1 + 0.0220836945012289*G0_1_0 + 0.0220836945012289*G0_1_1 - 0.00537576492437591*G0_1_2 - 0.0053757649243762*G0_2_0 - 0.00537576492437617*G0_2_1; A[1305] = -0.00228991928210645*G0_0_0 - 0.00228991928210652*G0_0_1 + 0.00658922642429566*G0_1_0 + 0.00658922642429564*G0_1_1 - 0.0022899192821068*G0_1_2 - 0.00228991928210649*G0_2_0 - 0.00228991928210656*G0_2_1; A[1306] = -0.00228991928210693*G0_0_0 - 0.00228991928210691*G0_0_1 + 0.00939454064454052*G0_1_0 + 0.00939454064454052*G0_1_1 - 0.00228991928210675*G0_1_2 - 0.00228991928210696*G0_2_0 - 0.00228991928210694*G0_2_1; A[1307] = -0.00537576492437601*G0_0_0 - 0.00537576492437602*G0_0_1 - 0.00537576492437595*G0_1_2 - 0.00537576492437602*G0_2_0 - 0.00537576492437602*G0_2_1; A[1308] = -0.0328352243499812*G0_0_0 - 0.0274594594256053*G0_0_1 - 0.0328352243499813*G0_0_2 - 0.0537511252572013*G0_1_0 - 0.0812105846828062*G0_1_1 - 0.0537511252572013*G0_1_2 - 0.0328352243499812*G0_2_0 - 0.0274594594256053*G0_2_1 - 0.0328352243499813*G0_2_2; A[1309] = 0.0788945694544648*G0_0_0 + 0.0599162925551811*G0_0_1 + 0.0788945694544648*G0_0_2 + 0.103529142700149*G0_1_0 + 0.18526817029421*G0_1_1 + 0.103529142700149*G0_1_2 + 0.0788945694544647*G0_2_0 + 0.0599162925551811*G0_2_1 + 0.0788945694544648*G0_2_2; A[1310] = -0.108637424175618*G0_0_0 - 0.0699110399631228*G0_0_1 - 0.108637424175618*G0_0_2 - 0.135020425819036*G0_1_0 - 0.243357746612953*G0_1_1 - 0.135020425819036*G0_1_2 - 0.108637424175618*G0_2_0 - 0.0699110399631228*G0_2_1 - 0.108637424175618*G0_2_2; A[1311] = 0.139822079926246*G0_0_0 + 0.0699110399631229*G0_0_1 + 0.139822079926246*G0_0_2 + 0.0699110399631229*G0_1_0 + 0.179096479009672*G0_1_1 + 0.0699110399631229*G0_1_2 + 0.139822079926246*G0_2_0 + 0.0699110399631229*G0_2_1 + 0.139822079926246*G0_2_2; A[1312] = -0.00537576492437611*G0_0_1 - 0.00537576492437617*G0_0_2 - 0.0053757649243759*G0_1_0 + 0.0220836945012289*G0_1_1 + 0.0220836945012288*G0_1_2 - 0.00537576492437607*G0_2_1 - 0.00537576492437613*G0_2_2; A[1313] = -0.00228991928210683*G0_0_1 - 0.00228991928210681*G0_0_2 - 0.00228991928210685*G0_1_0 + 0.00658922642429604*G0_1_1 + 0.00658922642429604*G0_1_2 - 0.00228991928210679*G0_2_1 - 0.00228991928210677*G0_2_2; A[1314] = -0.00228991928210686*G0_0_1 - 0.0022899192821069*G0_0_2 - 0.00228991928210666*G0_1_0 + 0.00939454064454041*G0_1_1 + 0.0093945406445404*G0_1_2 - 0.0022899192821069*G0_2_1 - 0.00228991928210694*G0_2_2; A[1315] = -0.0053757649243759*G0_0_1 - 0.00537576492437597*G0_0_2 - 0.00537576492437601*G0_1_0 - 0.00537576492437589*G0_2_1 - 0.00537576492437596*G0_2_2; A[1316] = -0.0118736555368504*G0_0_0 + 0.00939454064454049*G0_0_1 - 0.0118736555368499*G0_0_2 + 0.00939454064454062*G0_1_0 + 0.00939454064454064*G0_1_2 - 0.0118736555368504*G0_2_0 + 0.0093945406445404*G0_2_1 - 0.0118736555368499*G0_2_2; A[1317] = 0.0429604514890974*G0_0_0 + 0.000685018588664604*G0_0_1 + 0.0429604514890962*G0_0_2 + 0.000685018588664564*G0_1_0 + 0.022670853291513*G0_1_1 + 0.000685018588664359*G0_1_2 + 0.0429604514890974*G0_2_0 + 0.000685018588664741*G0_2_1 + 0.0429604514890963*G0_2_2; A[1318] = -0.124738623002512*G0_0_0 - 0.0284445813959708*G0_0_1 - 0.124738623002511*G0_0_2 - 0.0284445813959704*G0_1_0 - 0.0606730749959916*G0_1_1 - 0.0284445813959703*G0_1_2 - 0.124738623002512*G0_2_0 - 0.0284445813959709*G0_2_1 - 0.124738623002511*G0_2_2; A[1319] = -0.0025443547578956*G0_0_0 + 0.00329461321214811*G0_0_1 - 0.00254435475789578*G0_0_2 + 0.00329461321214809*G0_1_0 + 0.00329461321214817*G0_1_2 - 0.00254435475789552*G0_2_0 + 0.00329461321214807*G0_2_1 - 0.00254435475789574*G0_2_2; A[1320] = 0.0429604514890967*G0_0_0 + 0.00068501858866477*G0_0_1 + 0.0429604514890975*G0_0_2 + 0.000685018588664875*G0_1_0 + 0.0226708532915134*G0_1_1 + 0.000685018588664578*G0_1_2 + 0.0429604514890965*G0_2_0 + 0.000685018588664629*G0_2_1 + 0.0429604514890973*G0_2_2; A[1321] = -0.0118736555368499*G0_0_0 + 0.00939454064454069*G0_0_1 - 0.01187365553685*G0_0_2 + 0.00939454064454082*G0_1_0 + 0.00939454064454092*G0_1_2 - 0.01187365553685*G0_2_0 + 0.00939454064454071*G0_2_1 - 0.01187365553685*G0_2_2; A[1322] = 0.0118736555368501*G0_0_0 + 0.0212681961813908*G0_0_1 - 0.0146137298915083*G0_1_0 - 0.0693499771190738*G0_1_1 + 0.0212681961813901*G0_1_2 + 0.01187365553685*G0_2_0 + 0.0212681961813907*G0_2_1; A[1323] = -0.0429604514890978*G0_0_0 - 0.042275432900433*G0_0_1 - 0.0359145460056914*G0_1_0 + 0.0920860702761739*G0_1_1 - 0.0422754329004321*G0_1_2 - 0.0429604514890979*G0_2_0 - 0.042275432900433*G0_2_1; A[1324] = 0.124738623002512*G0_0_0 + 0.0962940416065414*G0_0_1 + 0.0284445813959704*G0_1_0 - 0.0644569872000422*G0_1_1 + 0.0962940416065409*G0_1_2 + 0.124738623002512*G0_2_0 + 0.0962940416065415*G0_2_1; A[1325] = 0.00254435475789611*G0_0_0 + 0.00583896797004402*G0_0_1 - 0.00590420783563144*G0_1_0 - 0.0318696743392917*G0_1_1 + 0.00583896797004482*G0_1_2 + 0.00254435475789605*G0_2_0 + 0.00583896797004412*G0_2_1; A[1326] = -0.0429604514890968*G0_0_0 - 0.0422754329004325*G0_0_1 - 0.000685018588664852*G0_1_0 + 0.0439716694056966*G0_1_1 - 0.042275432900433*G0_1_2 - 0.0429604514890966*G0_2_0 - 0.0422754329004325*G0_2_1; A[1327] = 0.01187365553685*G0_0_0 + 0.0212681961813908*G0_0_1 - 0.00939454064454077*G0_1_0 - 0.0187890812890813*G0_1_1 + 0.0212681961813904*G0_1_2 + 0.0118736555368501*G0_2_0 + 0.0212681961813909*G0_2_1; A[1328] = -0.0093945406445404*G0_0_1 - 0.00939454064454018*G0_1_0 + 0.0453417065830255*G0_1_1 - 0.0093945406445406*G0_1_2 - 0.00939454064454039*G0_2_1; A[1329] = -0.003294613212148*G0_0_1 - 0.00329461321214817*G0_1_0 + 0.0226708532915129*G0_1_1 - 0.00329461321214805*G0_1_2 - 0.00329461321214802*G0_2_1; A[1330] = -0.0093945406445405*G0_0_1 - 0.00939454064454054*G0_1_0 - 0.0093945406445406*G0_1_2 - 0.00939454064454041*G0_2_1; A[1331] = -0.00329461321214809*G0_0_1 - 0.00329461321214786*G0_1_0 + 0.0226708532915124*G0_1_1 - 0.00329461321214775*G0_1_2 - 0.0032946132121482*G0_2_1; A[1332] = -0.00329461321214815*G0_0_1 - 0.00329461321214778*G0_1_0 - 0.00329461321214783*G0_1_2 - 0.00329461321214811*G0_2_1; A[1333] = -0.00939454064454064*G0_0_1 - 0.00939454064454054*G0_1_0 - 0.00939454064454063*G0_1_2 - 0.00939454064454066*G0_2_1; A[1334] = 0.0212681961813907*G0_0_1 + 0.0118736555368498*G0_0_2 + 0.0212681961813908*G0_1_0 - 0.0693499771190734*G0_1_1 - 0.0146137298915075*G0_1_2 + 0.0212681961813907*G0_2_1 + 0.0118736555368499*G0_2_2; A[1335] = 0.00583896797004474*G0_0_1 + 0.00254435475789656*G0_0_2 + 0.00583896797004405*G0_1_0 - 0.0318696743392923*G0_1_1 - 0.00590420783563135*G0_1_2 + 0.00583896797004475*G0_2_1 + 0.00254435475789659*G0_2_2; A[1336] = 0.0212681961813905*G0_0_1 + 0.01187365553685*G0_0_2 + 0.0212681961813905*G0_1_0 - 0.0187890812890811*G0_1_1 - 0.00939454064454073*G0_1_2 + 0.0212681961813905*G0_2_1 + 0.01187365553685*G0_2_2; A[1337] = -0.0422754329004329*G0_0_1 - 0.0429604514890973*G0_0_2 - 0.0422754329004327*G0_1_0 + 0.0920860702761731*G0_1_1 - 0.0359145460056919*G0_1_2 - 0.042275432900433*G0_2_1 - 0.0429604514890974*G0_2_2; A[1338] = -0.0422754329004327*G0_0_1 - 0.0429604514890965*G0_0_2 - 0.0422754329004323*G0_1_0 + 0.0439716694056968*G0_1_1 - 0.000685018588664378*G0_1_2 - 0.0422754329004328*G0_2_1 - 0.0429604514890966*G0_2_2; A[1339] = 0.096294041606541*G0_0_1 + 0.124738623002511*G0_0_2 + 0.096294041606541*G0_1_0 - 0.0644569872000419*G0_1_1 + 0.0284445813959701*G0_1_2 + 0.0962940416065411*G0_2_1 + 0.124738623002511*G0_2_2; A[1340] = 0.00260959462348255*G0_0_1 + 0.00260959462348367*G0_1_0 - 0.151356488162043*G0_1_1 + 0.00260959462348285*G0_1_2 + 0.00260959462348259*G0_2_1; A[1341] = 0.00260959462348354*G0_0_1 + 0.00260959462348404*G0_1_0 - 0.0453417065830262*G0_1_1 + 0.00260959462348345*G0_1_2 + 0.00260959462348342*G0_2_1; A[1342] = 0.0352295274170285*G0_0_1 + 0.035229527417027*G0_1_0 + 0.166687856575009*G0_1_1 + 0.0352295274170273*G0_1_2 + 0.0352295274170285*G0_2_1; A[1343] = 0.00260959462348334*G0_0_1 + 0.00260959462348327*G0_1_0 - 0.0453417065830256*G0_1_1 + 0.00260959462348361*G0_1_2 + 0.00260959462348359*G0_2_1; A[1344] = -0.0551276864210885*G0_0_0 - 0.0551276864210885*G0_0_1 - 0.0551276864210885*G0_0_2 - 0.0178705039816149*G0_1_0 - 0.0178705039816148*G0_1_1 - 0.0178705039816149*G0_1_2 - 0.0178705039816149*G0_2_0 - 0.0178705039816148*G0_2_1 - 0.0178705039816149*G0_2_2; A[1345] = 0.0153313684129653*G0_0_0 + 0.0105310191030675*G0_1_0 + 0.0105310191030674*G0_2_0; A[1346] = -0.00480034930989785*G0_1_1 - 0.00480034930989784*G0_2_1; A[1347] = -0.00480034930989784*G0_1_2 - 0.00480034930989784*G0_2_2; A[1348] = 0.00537576492437596*G0_1_1 + 0.0053757649243762*G0_1_2 + 0.00537576492437602*G0_2_1 + 0.00537576492437626*G0_2_2; A[1349] = 0.00228991928210679*G0_1_1 + 0.00228991928210648*G0_1_2 + 0.0022899192821067*G0_2_1 + 0.00228991928210638*G0_2_2; A[1350] = 0.00228991928210658*G0_1_1 + 0.00228991928210696*G0_1_2 + 0.00228991928210665*G0_2_1 + 0.00228991928210705*G0_2_2; A[1351] = 0.00537576492437616*G0_1_1 + 0.00537576492437614*G0_1_2 + 0.00537576492437609*G0_2_1 + 0.00537576492437606*G0_2_2; A[1352] = 0.0220836945012289*G0_0_0 + 0.0274594594256047*G0_0_2 + 0.0274594594256049*G0_1_0 + 0.0328352243499806*G0_1_2 + 0.0274594594256048*G0_2_0 + 0.0328352243499805*G0_2_2; A[1353] = 0.00658922642429576*G0_0_0 + 0.00887914570640284*G0_0_2 + 0.00887914570640259*G0_1_0 + 0.0111690649885096*G0_1_2 + 0.00887914570640257*G0_2_0 + 0.0111690649885096*G0_2_2; A[1354] = 0.0093945406445407*G0_0_0 + 0.0116844599266471*G0_0_2 + 0.0116844599266473*G0_1_0 + 0.0139743792087539*G0_1_2 + 0.0116844599266474*G0_2_0 + 0.013974379208754*G0_2_2; A[1355] = 0.00537576492437628*G0_0_2 + 0.00537576492437615*G0_1_0 + 0.0107515298487521*G0_1_2 + 0.00537576492437608*G0_2_0 + 0.0107515298487521*G0_2_2; A[1356] = 0.0220836945012288*G0_0_0 + 0.0274594594256048*G0_0_1 + 0.0274594594256046*G0_1_0 + 0.0328352243499805*G0_1_1 + 0.0274594594256046*G0_2_0 + 0.0328352243499804*G0_2_1; A[1357] = 0.00658922642429572*G0_0_0 + 0.0088791457064022*G0_0_1 + 0.0088791457064026*G0_1_0 + 0.0111690649885092*G0_1_1 + 0.00887914570640272*G0_2_0 + 0.0111690649885094*G0_2_1; A[1358] = 0.00939454064454041*G0_0_0 + 0.0116844599266473*G0_0_1 + 0.0116844599266471*G0_1_0 + 0.0139743792087543*G0_1_1 + 0.0116844599266471*G0_2_0 + 0.0139743792087542*G0_2_1; A[1359] = 0.00537576492437615*G0_0_1 + 0.00537576492437611*G0_1_0 + 0.0107515298487518*G0_1_1 + 0.00537576492437617*G0_2_0 + 0.0107515298487519*G0_2_1; A[1360] = 0.0196371995417134*G0_0_0 + 0.0196371995417133*G0_0_1 + 0.0895482395048357*G0_0_2 + 0.0895482395048358*G0_1_0 + 0.0895482395048359*G0_1_1 + 0.0196371995417133*G0_1_2 + 0.0895482395048357*G0_2_0 + 0.0895482395048358*G0_2_1 + 0.0196371995417133*G0_2_2; A[1361] = -0.0186912214907007*G0_0_0 - 0.0186912214907007*G0_0_1 - 0.0574176057031955*G0_0_2 - 0.0574176057031955*G0_1_0 - 0.0574176057031955*G0_1_1 + 0.0124934342599273*G0_1_2 - 0.0574176057031954*G0_2_0 - 0.0574176057031955*G0_2_1 + 0.0124934342599273*G0_2_2; A[1362] = 0.00939454064454068*G0_0_0 + 0.00939454064454064*G0_0_1 + 0.0283728175438243*G0_0_2 + 0.0283728175438242*G0_1_0 + 0.0283728175438242*G0_1_1 - 0.0315434750113569*G0_1_2 + 0.0283728175438242*G0_2_0 + 0.0283728175438242*G0_2_1 - 0.0315434750113569*G0_2_2; A[1363] = -0.00537576492437592*G0_0_2 - 0.00537576492437611*G0_1_0 - 0.0053757649243761*G0_1_1 + 0.0220836945012292*G0_1_2 - 0.00537576492437604*G0_2_0 - 0.00537576492437603*G0_2_1 + 0.0220836945012292*G0_2_2; A[1364] = 0.0196371995417133*G0_0_0 + 0.0895482395048357*G0_0_1 + 0.0196371995417132*G0_0_2 + 0.0895482395048358*G0_1_0 + 0.0196371995417133*G0_1_1 + 0.0895482395048359*G0_1_2 + 0.0895482395048358*G0_2_0 + 0.0196371995417133*G0_2_1 + 0.0895482395048358*G0_2_2; A[1365] = -0.0186912214907005*G0_0_0 - 0.0574176057031953*G0_0_1 - 0.0186912214907005*G0_0_2 - 0.0574176057031954*G0_1_0 + 0.0124934342599271*G0_1_1 - 0.0574176057031954*G0_1_2 - 0.0574176057031953*G0_2_0 + 0.0124934342599271*G0_2_1 - 0.0574176057031954*G0_2_2; A[1366] = 0.00939454064454083*G0_0_0 + 0.0283728175438241*G0_0_1 + 0.00939454064454082*G0_0_2 + 0.0283728175438244*G0_1_0 - 0.0315434750113565*G0_1_1 + 0.0283728175438244*G0_1_2 + 0.0283728175438244*G0_2_0 - 0.0315434750113565*G0_2_1 + 0.0283728175438244*G0_2_2; A[1367] = -0.0053757649243759*G0_0_1 - 0.00537576492437611*G0_1_0 + 0.0220836945012289*G0_1_1 - 0.00537576492437607*G0_1_2 - 0.00537576492437617*G0_2_0 + 0.0220836945012288*G0_2_1 - 0.00537576492437613*G0_2_2; A[1368] = 0.179096479009671*G0_0_0 + 0.109185439046549*G0_0_1 + 0.109185439046549*G0_0_2 + 0.109185439046549*G0_1_0 + 0.179096479009671*G0_1_1 + 0.179096479009671*G0_1_2 + 0.109185439046549*G0_2_0 + 0.179096479009671*G0_2_1 + 0.179096479009671*G0_2_2; A[1369] = -0.243357746612952*G0_0_0 - 0.108337320793916*G0_0_1 - 0.108337320793916*G0_0_2 - 0.173446706649829*G0_1_0 - 0.147063705006411*G0_1_1 - 0.147063705006411*G0_1_2 - 0.173446706649829*G0_2_0 - 0.147063705006411*G0_2_1 - 0.147063705006411*G0_2_2; A[1370] = 0.185268170294209*G0_0_0 + 0.081739027594061*G0_0_1 + 0.0817390275940609*G0_0_2 + 0.125351877739029*G0_1_0 + 0.100717304493345*G0_1_1 + 0.100717304493344*G0_1_2 + 0.125351877739029*G0_2_0 + 0.100717304493344*G0_2_1 + 0.100717304493344*G0_2_2; A[1371] = -0.0812105846828058*G0_0_0 - 0.0274594594256047*G0_0_1 - 0.0274594594256047*G0_0_2 - 0.0537511252572007*G0_1_0 - 0.0328352243499804*G0_1_1 - 0.0328352243499805*G0_1_2 - 0.0537511252572007*G0_2_0 - 0.0328352243499803*G0_2_1 - 0.0328352243499804*G0_2_2; A[1372] = 0.0453417065830256*G0_0_0 + 0.0547362472275659*G0_0_1 + 0.0547362472275655*G0_0_2 + 0.054736247227566*G0_1_0 + 0.0641307878721064*G0_1_1 + 0.0641307878721057*G0_1_2 + 0.0547362472275662*G0_2_0 + 0.0641307878721063*G0_2_1 + 0.0641307878721058*G0_2_2; A[1373] = 0.0226708532915127*G0_0_0 + 0.0259654665036609*G0_0_1 + 0.0259654665036604*G0_0_2 + 0.0259654665036609*G0_1_0 + 0.029260079715809*G0_1_1 + 0.0292600797158091*G0_1_2 + 0.0259654665036607*G0_2_0 + 0.029260079715809*G0_2_1 + 0.0292600797158092*G0_2_2; A[1374] = 0.0093945406445401*G0_0_1 + 0.0093945406445405*G0_0_2 + 0.00939454064454019*G0_1_0 + 0.0187890812890806*G0_1_1 + 0.0187890812890806*G0_1_2 + 0.00939454064454021*G0_2_0 + 0.0187890812890805*G0_2_1 + 0.0187890812890806*G0_2_2; A[1375] = 0.0226708532915136*G0_0_0 + 0.0259654665036613*G0_0_1 + 0.0259654665036618*G0_0_2 + 0.0259654665036607*G0_1_0 + 0.0292600797158088*G0_1_1 + 0.029260079715809*G0_1_2 + 0.0259654665036607*G0_2_0 + 0.0292600797158089*G0_2_1 + 0.029260079715809*G0_2_2; A[1376] = 0.00329461321214798*G0_0_1 + 0.00329461321214781*G0_0_2 + 0.00329461321214764*G0_1_0 + 0.00658922642429551*G0_1_1 + 0.00658922642429523*G0_1_2 + 0.00329461321214763*G0_2_0 + 0.00658922642429549*G0_2_1 + 0.00658922642429505*G0_2_2; A[1377] = 0.00939454064454068*G0_0_1 + 0.00939454064454037*G0_0_2 + 0.00939454064454047*G0_1_0 + 0.0187890812890811*G0_1_1 + 0.0187890812890811*G0_1_2 + 0.00939454064454042*G0_2_0 + 0.0187890812890811*G0_2_1 + 0.0187890812890812*G0_2_2; A[1378] = -0.060673074995991*G0_0_0 - 0.0322284936000211*G0_0_1 - 0.0322284936000211*G0_0_2 - 0.0322284936000217*G0_1_0 - 0.128522535206562*G0_1_1 - 0.128522535206562*G0_1_2 - 0.0322284936000216*G0_2_0 - 0.128522535206562*G0_2_1 - 0.128522535206562*G0_2_2; A[1379] = 0.0226708532915134*G0_0_0 + 0.0219858347028488*G0_0_1 + 0.0219858347028485*G0_0_2 + 0.0219858347028488*G0_1_0 + 0.064261267603282*G0_1_1 + 0.0642612676032812*G0_1_2 + 0.0219858347028487*G0_2_0 + 0.064261267603282*G0_2_1 + 0.064261267603281*G0_2_2; A[1380] = -0.00939454064454128*G0_0_1 - 0.00939454064454075*G0_0_2 - 0.00939454064454023*G0_1_0 - 0.0306627368259316*G0_1_1 - 0.0306627368259311*G0_1_2 - 0.00939454064454025*G0_2_0 - 0.0306627368259316*G0_2_1 - 0.030662736825931*G0_2_2; A[1381] = 0.0226708532915127*G0_0_0 + 0.0219858347028485*G0_0_1 + 0.0219858347028483*G0_0_2 + 0.0219858347028482*G0_1_0 + 0.0642612676032809*G0_1_1 + 0.0642612676032813*G0_1_2 + 0.0219858347028481*G0_2_0 + 0.0642612676032807*G0_2_1 + 0.0642612676032813*G0_2_2; A[1382] = -0.00329461321214773*G0_0_1 - 0.00329461321214797*G0_0_2 - 0.00329461321214755*G0_1_0 - 0.00913358118219225*G0_1_1 - 0.00913358118219242*G0_1_2 - 0.00329461321214753*G0_2_0 - 0.00913358118219208*G0_2_1 - 0.00913358118219243*G0_2_2; A[1383] = -0.00939454064454051*G0_0_1 - 0.00939454064454052*G0_0_2 - 0.00939454064454052*G0_1_0 - 0.0306627368259308*G0_1_1 - 0.0306627368259311*G0_1_2 - 0.00939454064454048*G0_2_0 - 0.0306627368259308*G0_2_1 - 0.030662736825931*G0_2_2; A[1384] = -0.0644569872000423*G0_0_0 - 0.0929015685960121*G0_0_1 - 0.160751028806583*G0_0_2 - 0.160751028806583*G0_1_0 - 0.0644569872000425*G0_1_1 - 0.257045070413124*G0_1_2 - 0.160751028806583*G0_2_0 - 0.0644569872000424*G0_2_1 - 0.257045070413124*G0_2_2; A[1385] = 0.0920860702761732*G0_0_0 + 0.128000616281864*G0_0_1 + 0.134361503176606*G0_0_2 + 0.134361503176606*G0_1_0 + 0.127315597693201*G0_1_1 + 0.176636936077038*G0_1_2 + 0.134361503176606*G0_2_0 + 0.127315597693201*G0_2_1 + 0.176636936077038*G0_2_2; A[1386] = -0.0693499771190732*G0_0_0 - 0.0547362472275659*G0_0_1 - 0.0906181733004638*G0_0_2 - 0.0906181733004638*G0_1_0 - 0.0641307878721062*G0_1_1 - 0.111886369481855*G0_1_2 - 0.0906181733004636*G0_2_0 - 0.0641307878721062*G0_2_1 - 0.111886369481854*G0_2_2; A[1387] = 0.0439716694056973*G0_0_0 + 0.0446566879943615*G0_0_1 + 0.0862471023061295*G0_0_2 + 0.0862471023061295*G0_1_0 + 0.0439716694056967*G0_1_1 + 0.128522535206562*G0_1_2 + 0.0862471023061295*G0_2_0 + 0.0439716694056967*G0_2_1 + 0.128522535206562*G0_2_2; A[1388] = -0.0318696743392922*G0_0_0 - 0.0259654665036611*G0_0_1 - 0.0377086423093364*G0_0_2 - 0.0377086423093365*G0_1_0 - 0.0292600797158086*G0_1_1 - 0.0435476102793805*G0_1_2 - 0.0377086423093366*G0_2_0 - 0.0292600797158087*G0_2_1 - 0.0435476102793807*G0_2_2; A[1389] = -0.0187890812890814*G0_0_0 - 0.00939454064454084*G0_0_1 - 0.0400572774704719*G0_0_2 - 0.0400572774704715*G0_1_0 - 0.0187890812890813*G0_1_1 - 0.0613254736518624*G0_1_2 - 0.0400572774704716*G0_2_0 - 0.0187890812890813*G0_2_1 - 0.0613254736518623*G0_2_2; A[1390] = -0.064456987200042*G0_0_0 - 0.160751028806583*G0_0_1 - 0.0929015685960119*G0_0_2 - 0.160751028806583*G0_1_0 - 0.257045070413123*G0_1_1 - 0.0644569872000422*G0_1_2 - 0.160751028806583*G0_2_0 - 0.257045070413123*G0_2_1 - 0.0644569872000421*G0_2_2; A[1391] = 0.0920860702761731*G0_0_0 + 0.134361503176605*G0_0_1 + 0.128000616281864*G0_0_2 + 0.134361503176606*G0_1_0 + 0.176636936077038*G0_1_1 + 0.1273155976932*G0_1_2 + 0.134361503176605*G0_2_0 + 0.176636936077038*G0_2_1 + 0.1273155976932*G0_2_2; A[1392] = -0.0693499771190732*G0_0_0 - 0.0906181733004633*G0_0_1 - 0.0547362472275654*G0_0_2 - 0.0906181733004635*G0_1_0 - 0.111886369481854*G0_1_1 - 0.0641307878721058*G0_1_2 - 0.0906181733004633*G0_2_0 - 0.111886369481854*G0_2_1 - 0.0641307878721059*G0_2_2; A[1393] = 0.0439716694056966*G0_0_0 + 0.08624710230613*G0_0_1 + 0.0446566879943616*G0_0_2 + 0.0862471023061288*G0_1_0 + 0.128522535206562*G0_1_1 + 0.0439716694056968*G0_1_2 + 0.0862471023061288*G0_2_0 + 0.128522535206562*G0_2_1 + 0.0439716694056968*G0_2_2; A[1394] = -0.0318696743392918*G0_0_0 - 0.0377086423093359*G0_0_1 - 0.0259654665036605*G0_0_2 - 0.037708642309336*G0_1_0 - 0.0435476102793807*G0_1_1 - 0.0292600797158089*G0_1_2 - 0.0377086423093362*G0_2_0 - 0.0435476102793807*G0_2_1 - 0.0292600797158089*G0_2_2; A[1395] = -0.0187890812890813*G0_0_0 - 0.0400572774704724*G0_0_1 - 0.00939454064454061*G0_0_2 - 0.0400572774704717*G0_1_0 - 0.0613254736518621*G0_1_1 - 0.0187890812890808*G0_1_2 - 0.0400572774704716*G0_2_0 - 0.0613254736518622*G0_2_1 - 0.0187890812890808*G0_2_2; A[1396] = 0.166687856575007*G0_0_0 + 0.13145832915798*G0_0_1 + 0.13145832915798*G0_0_2 + 0.13145832915798*G0_1_0 + 0.0962288017409534*G0_1_1 + 0.0962288017409532*G0_1_2 + 0.13145832915798*G0_2_0 + 0.0962288017409533*G0_2_1 + 0.0962288017409532*G0_2_2; A[1397] = -0.151356488162041*G0_0_0 - 0.153966082785526*G0_0_1 - 0.153966082785526*G0_0_2 - 0.153966082785525*G0_1_0 - 0.15657567740901*G0_1_1 - 0.156575677409009*G0_1_2 - 0.153966082785525*G0_2_0 - 0.15657567740901*G0_2_1 - 0.156575677409009*G0_2_2; A[1398] = -0.0453417065830262*G0_0_0 - 0.0479513012065082*G0_0_1 - 0.0479513012065091*G0_0_2 - 0.0479513012065098*G0_1_0 - 0.0505608958299917*G0_1_1 - 0.0505608958299922*G0_1_2 - 0.0479513012065095*G0_2_0 - 0.0505608958299917*G0_2_1 - 0.0505608958299921*G0_2_2; A[1399] = -0.0453417065830263*G0_0_0 - 0.0479513012065095*G0_0_1 - 0.047951301206509*G0_0_2 - 0.047951301206509*G0_1_0 - 0.050560895829992*G0_1_1 - 0.0505608958299926*G0_1_2 - 0.0479513012065089*G0_2_0 - 0.0505608958299921*G0_2_1 - 0.0505608958299927*G0_2_2; A[1400] = 0.0551276864210884*G0_0_0 + 0.0551276864210884*G0_0_1 + 0.0551276864210884*G0_0_2 + 0.0214691349673985*G0_1_0 + 0.0214691349673985*G0_1_1 + 0.0214691349673985*G0_1_2 + 0.0214691349673985*G0_2_0 + 0.0214691349673985*G0_2_1 + 0.0214691349673985*G0_2_2; A[1401] = -0.0388177200243165*G0_0_0 - 0.0232632312710432*G0_1_0 - 0.0232632312710432*G0_2_0; A[1402] = -0.00336507226698196*G0_1_1 - 0.00336507226698196*G0_2_1; A[1403] = -0.00336507226698193*G0_1_2 - 0.00336507226698194*G0_2_2; A[1404] = 0.00228991928210691*G0_1_1 + 0.00228991928210681*G0_1_2 + 0.00228991928210685*G0_2_1 + 0.0022899192821068*G0_2_2; A[1405] = 0.00178757231708631*G0_1_1 + 0.00178757231708609*G0_1_2 + 0.00178757231708635*G0_2_1 + 0.00178757231708608*G0_2_2; A[1406] = 0.00178757231708622*G0_1_1 + 0.00178757231708629*G0_1_2 + 0.00178757231708615*G0_2_1 + 0.00178757231708625*G0_2_2; A[1407] = 0.00228991928210677*G0_1_1 + 0.00228991928210668*G0_1_2 + 0.0022899192821068*G0_2_1 + 0.0022899192821067*G0_2_2; A[1408] = -0.0315434750113565*G0_0_0 - 0.0599162925551802*G0_0_2 - 0.0599162925551806*G0_1_0 - 0.0788945694544636*G0_1_2 - 0.0599162925551806*G0_2_0 - 0.0788945694544637*G0_2_2; A[1409] = -0.00626302709636023*G0_0_0 - 0.00578025209101641*G0_0_2 - 0.005780252091016*G0_1_0 - 0.00523223722008497*G0_1_2 - 0.00578025209101598*G0_2_0 - 0.00523223722008483*G0_2_2; A[1410] = 6.52398655867614e-05*G0_0_0 - 0.0131523569023565*G0_0_2 - 0.0131523569023568*G0_1_0 - 0.0263047138047132*G0_1_2 - 0.0131523569023569*G0_2_0 - 0.0263047138047134*G0_2_2; A[1411] = 0.00228991928210652*G0_0_2 + 0.00228991928210681*G0_1_0 + 0.013974379208754*G0_1_2 + 0.00228991928210685*G0_2_0 + 0.0139743792087541*G0_2_2; A[1412] = -0.0315434750113562*G0_0_0 - 0.0599162925551803*G0_0_1 - 0.0599162925551805*G0_1_0 - 0.0788945694544637*G0_1_1 - 0.0599162925551805*G0_2_0 - 0.0788945694544637*G0_2_1; A[1413] = -0.00626302709636022*G0_0_0 - 0.00578025209101546*G0_0_1 - 0.00578025209101573*G0_1_0 - 0.00523223722008419*G0_1_1 - 0.00578025209101579*G0_2_0 - 0.00523223722008421*G0_2_1; A[1414] = 6.52398655872516e-05*G0_0_0 - 0.0131523569023569*G0_0_1 - 0.0131523569023569*G0_1_0 - 0.0263047138047139*G0_1_1 - 0.0131523569023569*G0_2_0 - 0.026304713804714*G0_2_1; A[1415] = 0.00228991928210673*G0_0_1 + 0.00228991928210684*G0_1_0 + 0.0139743792087544*G0_1_1 + 0.00228991928210682*G0_2_0 + 0.0139743792087544*G0_2_1; A[1416] = 0.0124934342599272*G0_0_0 + 0.0124934342599273*G0_0_1 - 0.0574176057031951*G0_0_2 - 0.0574176057031952*G0_1_0 - 0.0574176057031952*G0_1_1 - 0.0186912214907006*G0_1_2 - 0.0574176057031952*G0_2_0 - 0.0574176057031952*G0_2_1 - 0.0186912214907006*G0_2_2; A[1417] = 0.000260959462348361*G0_0_0 + 0.000260959462348201*G0_0_1 + 0.0050626135695576*G0_0_2 + 0.00506261356955774*G0_1_0 + 0.00506261356955763*G0_1_1 + 0.000260959462348378*G0_1_2 + 0.00506261356955777*G0_2_0 + 0.00506261356955767*G0_2_1 + 0.00026095946234839*G0_2_2; A[1418] = 6.52398655872275e-05*G0_0_0 + 6.52398655872918e-05*G0_0_1 - 0.000482775005344151*G0_0_2 - 0.000482775005344216*G0_1_0 - 0.000482775005344216*G0_1_1 - 0.00626302709636035*G0_1_2 - 0.000482775005344229*G0_2_0 - 0.000482775005344227*G0_2_1 - 0.00626302709636035*G0_2_2; A[1419] = -0.00228991928210698*G0_0_2 - 0.00228991928210684*G0_1_0 - 0.00228991928210685*G0_1_1 + 0.00658922642429577*G0_1_2 - 0.00228991928210687*G0_2_0 - 0.00228991928210689*G0_2_1 + 0.00658922642429579*G0_2_2; A[1420] = 0.0124934342599272*G0_0_0 - 0.0574176057031952*G0_0_1 + 0.0124934342599273*G0_0_2 - 0.0574176057031951*G0_1_0 - 0.0186912214907004*G0_1_1 - 0.0574176057031951*G0_1_2 - 0.0574176057031951*G0_2_0 - 0.0186912214907004*G0_2_1 - 0.0574176057031951*G0_2_2; A[1421] = 0.000260959462348392*G0_0_0 + 0.00506261356955795*G0_0_1 + 0.00026095946234832*G0_0_2 + 0.00506261356955801*G0_1_0 + 0.000260959462348562*G0_1_1 + 0.00506261356955807*G0_1_2 + 0.00506261356955797*G0_2_0 + 0.000260959462348553*G0_2_1 + 0.00506261356955803*G0_2_2; A[1422] = 6.52398655868207e-05*G0_0_0 - 0.0004827750053443*G0_0_1 + 6.52398655868688e-05*G0_0_2 - 0.000482775005344414*G0_1_0 - 0.00626302709636069*G0_1_1 - 0.000482775005344591*G0_1_2 - 0.000482775005344391*G0_2_0 - 0.00626302709636068*G0_2_1 - 0.000482775005344564*G0_2_2; A[1423] = -0.00228991928210685*G0_0_1 - 0.00228991928210683*G0_1_0 + 0.00658922642429604*G0_1_1 - 0.00228991928210679*G0_1_2 - 0.00228991928210681*G0_2_0 + 0.00658922642429604*G0_2_1 - 0.00228991928210677*G0_2_2; A[1424] = -0.243357746612952*G0_0_0 - 0.173446706649829*G0_0_1 - 0.173446706649829*G0_0_2 - 0.108337320793916*G0_1_0 - 0.147063705006411*G0_1_1 - 0.147063705006411*G0_1_2 - 0.108337320793916*G0_2_0 - 0.147063705006411*G0_2_1 - 0.147063705006411*G0_2_2; A[1425] = 0.428965164208214*G0_0_0 + 0.226095278178608*G0_0_1 + 0.226095278178608*G0_0_2 + 0.226095278178608*G0_1_0 + 0.304226541205703*G0_1_1 + 0.304226541205703*G0_1_2 + 0.226095278178608*G0_2_0 + 0.304226541205703*G0_2_1 + 0.304226541205703*G0_2_2; A[1426] = -0.387185554286243*G0_0_0 - 0.167692550505047*G0_0_1 - 0.167692550505047*G0_0_2 - 0.219493003781195*G0_1_0 - 0.204187731314464*G0_1_1 - 0.204187731314464*G0_1_2 - 0.219493003781195*G0_2_0 - 0.204187731314464*G0_2_1 - 0.204187731314464*G0_2_2; A[1427] = 0.185268170294209*G0_0_0 + 0.0599162925551802*G0_0_1 + 0.0599162925551802*G0_0_2 + 0.103529142700148*G0_1_0 + 0.0788945694544634*G0_1_1 + 0.0788945694544636*G0_1_2 + 0.103529142700148*G0_2_0 + 0.0788945694544635*G0_2_1 + 0.0788945694544636*G0_2_2; A[1428] = -0.0665446628988285*G0_0_0 - 0.0893133759887218*G0_0_1 - 0.0893133759887213*G0_0_2 - 0.089313375988722*G0_1_0 - 0.127087258163645*G0_1_1 - 0.127087258163645*G0_1_2 - 0.0893133759887221*G0_2_0 - 0.127087258163645*G0_2_1 - 0.127087258163645*G0_2_2; A[1429] = -0.000652398655870761*G0_0_0 - 0.00949240044292096*G0_0_1 - 0.00949240044292081*G0_0_2 - 0.0094924004429211*G0_1_0 - 0.0189848008858421*G0_1_1 - 0.0189848008858423*G0_1_2 - 0.00949240044292097*G0_2_0 - 0.0189848008858421*G0_2_1 - 0.0189848008858423*G0_2_2; A[1430] = 6.52398655874736e-05*G0_0_1 + 6.52398655873147e-05*G0_0_2 + 6.52398655872311e-05*G0_1_0 - 0.0148746893538558*G0_1_1 - 0.0148746893538556*G0_1_2 + 6.52398655871414e-05*G0_2_0 - 0.0148746893538558*G0_2_1 - 0.0148746893538556*G0_2_2; A[1431] = -0.000652398655871815*G0_0_0 - 0.00949240044292199*G0_0_1 - 0.00949240044292217*G0_0_2 - 0.00949240044292136*G0_1_0 - 0.0189848008858428*G0_1_1 - 0.0189848008858427*G0_1_2 - 0.00949240044292135*G0_2_0 - 0.0189848008858428*G0_2_1 - 0.0189848008858425*G0_2_2; A[1432] = 0.00257697469069005*G0_0_1 + 0.00257697469069009*G0_0_2 + 0.00257697469069007*G0_1_0 + 0.00450155072550912*G0_1_1 + 0.00450155072550921*G0_1_2 + 0.00257697469069005*G0_2_0 + 0.0045015507255091*G0_2_1 + 0.00450155072550929*G0_2_2; A[1433] = 6.52398655870941e-05*G0_0_1 + 6.52398655873889e-05*G0_0_2 + 6.52398655873175e-05*G0_1_0 - 0.0148746893538556*G0_1_1 - 0.0148746893538558*G0_1_2 + 6.52398655872578e-05*G0_2_0 - 0.0148746893538557*G0_2_1 - 0.014874689353856*G0_2_2; A[1434] = 0.0476251018785735*G0_0_0 - 0.0147442096226818*G0_0_1 - 0.0147442096226817*G0_0_2 - 0.0147442096226815*G0_1_0 + 0.0476251018785739*G0_1_1 + 0.0476251018785734*G0_1_2 - 0.0147442096226814*G0_2_0 + 0.0476251018785739*G0_2_1 + 0.0476251018785735*G0_2_2; A[1435] = -0.000652398655871389*G0_0_0 + 0.00231601522834098*G0_0_1 + 0.00231601522834131*G0_0_2 + 0.0023160152283415*G0_1_0 + 0.00880738185425605*G0_1_1 + 0.00880738185425646*G0_1_2 + 0.00231601522834142*G0_2_0 + 0.00880738185425601*G0_2_1 + 0.00880738185425649*G0_2_2; A[1436] = -6.52398655863329e-05*G0_0_1 - 6.52398655868858e-05*G0_0_2 - 6.52398655871557e-05*G0_1_0 - 0.0013047973117416*G0_1_1 - 0.00130479731174148*G0_1_2 - 6.52398655870665e-05*G0_2_0 - 0.00130479731174153*G0_2_1 - 0.0013047973117415*G0_2_2; A[1437] = -0.000652398655870607*G0_0_0 + 0.00231601522834175*G0_0_1 + 0.00231601522834182*G0_0_2 + 0.00231601522834146*G0_1_0 + 0.00880738185425697*G0_1_1 + 0.00880738185425723*G0_1_2 + 0.00231601522834143*G0_2_0 + 0.00880738185425694*G0_2_1 + 0.00880738185425709*G0_2_2; A[1438] = -0.00257697469069023*G0_0_1 - 0.00257697469068998*G0_0_2 - 0.00257697469069021*G0_1_0 - 0.0156575677409008*G0_1_1 - 0.015657567740901*G0_1_2 - 0.00257697469069019*G0_2_0 - 0.0156575677409008*G0_2_1 - 0.015657567740901*G0_2_2; A[1439] = -6.52398655873577e-05*G0_0_1 - 6.52398655873085e-05*G0_0_2 - 6.52398655872461e-05*G0_1_0 - 0.00130479731174198*G0_1_1 - 0.00130479731174201*G0_1_2 - 6.52398655871837e-05*G0_2_0 - 0.00130479731174189*G0_2_1 - 0.00130479731174199*G0_2_2; A[1440] = -0.00339247301052857*G0_0_0 + 0.0589768384907266*G0_0_1 + 0.194675758911868*G0_0_2 + 0.194675758911867*G0_1_0 + 0.132306447410612*G0_1_1 + 0.121346149991982*G0_1_2 + 0.194675758911867*G0_2_0 + 0.132306447410612*G0_2_1 + 0.121346149991982*G0_2_2; A[1441] = -0.0622388317700804*G0_0_0 - 0.160783648739375*G0_0_1 - 0.250814663249556*G0_0_2 - 0.250814663249555*G0_1_0 - 0.166948816037355*G0_1_1 - 0.334680510461756*G0_1_2 - 0.250814663249555*G0_2_0 - 0.166948816037355*G0_2_1 - 0.334680510461756*G0_2_2; A[1442] = 0.0846813455320385*G0_0_0 + 0.0893133759887216*G0_0_1 + 0.173472802596064*G0_0_2 + 0.173472802596064*G0_1_0 + 0.127087258163645*G0_1_1 + 0.209419968534549*G0_1_2 + 0.173472802596064*G0_2_0 + 0.127087258163645*G0_2_1 + 0.209419968534549*G0_2_2; A[1443] = -0.00678494602105756*G0_0_0 - 0.00975335990526986*G0_0_1 - 0.0371541034518462*G0_0_2 - 0.037154103451846*G0_1_0 - 0.0436454700777613*G0_1_1 + 0.0371867233846399*G0_1_2 - 0.0371541034518461*G0_2_0 - 0.0436454700777614*G0_2_1 + 0.0371867233846398*G0_2_2; A[1444] = 0.0127870136550694*G0_0_0 + 0.00949240044292178*G0_0_1 + 0.0378717419733046*G0_0_2 + 0.0378717419733043*G0_1_0 + 0.0189848008858427*G0_1_1 + 0.0567586830607659*G0_1_2 + 0.0378717419733043*G0_2_0 + 0.0189848008858427*G0_2_1 + 0.0567586830607662*G0_2_2; A[1445] = -0.000130479731173951*G0_0_0 - 6.5239865586941e-05*G0_0_1 + 0.0136351319077013*G0_0_2 + 0.0136351319077011*G0_1_0 + 0.0148746893538559*G0_1_1 - 0.0254435475789641*G0_1_2 + 0.0136351319077012*G0_2_0 + 0.0148746893538559*G0_2_1 - 0.0254435475789642*G0_2_2; A[1446] = -0.00339247301052868*G0_0_0 + 0.194675758911868*G0_0_1 + 0.0589768384907265*G0_0_2 + 0.194675758911867*G0_1_0 + 0.121346149991982*G0_1_1 + 0.132306447410612*G0_1_2 + 0.194675758911867*G0_2_0 + 0.121346149991982*G0_2_1 + 0.132306447410612*G0_2_2; A[1447] = -0.0622388317700804*G0_0_0 - 0.250814663249555*G0_0_1 - 0.160783648739375*G0_0_2 - 0.250814663249556*G0_1_0 - 0.334680510461756*G0_1_1 - 0.166948816037355*G0_1_2 - 0.250814663249555*G0_2_0 - 0.334680510461756*G0_2_1 - 0.166948816037355*G0_2_2; A[1448] = 0.0846813455320382*G0_0_0 + 0.173472802596063*G0_0_1 + 0.089313375988721*G0_0_2 + 0.173472802596064*G0_1_0 + 0.209419968534549*G0_1_1 + 0.127087258163645*G0_1_2 + 0.173472802596064*G0_2_0 + 0.209419968534549*G0_2_1 + 0.127087258163645*G0_2_2; A[1449] = -0.00678494602105711*G0_0_0 - 0.0371541034518473*G0_0_1 - 0.00975335990527002*G0_0_2 - 0.0371541034518459*G0_1_0 + 0.0371867233846394*G0_1_1 - 0.043645470077761*G0_1_2 - 0.0371541034518459*G0_2_0 + 0.0371867233846395*G0_2_1 - 0.0436454700777612*G0_2_2; A[1450] = 0.0127870136550688*G0_0_0 + 0.037871741973304*G0_0_1 + 0.00949240044292099*G0_0_2 + 0.0378717419733036*G0_1_0 + 0.0567586830607661*G0_1_1 + 0.0189848008858423*G0_1_2 + 0.0378717419733038*G0_2_0 + 0.0567586830607662*G0_2_1 + 0.0189848008858423*G0_2_2; A[1451] = -0.000130479731173935*G0_0_0 + 0.013635131907702*G0_0_1 - 6.52398655872523e-05*G0_0_2 + 0.0136351319077014*G0_1_0 - 0.0254435475789642*G0_1_1 + 0.0148746893538558*G0_1_2 + 0.0136351319077014*G0_2_0 - 0.0254435475789642*G0_2_1 + 0.0148746893538558*G0_2_2; A[1452] = -0.161794866655976*G0_0_0 - 0.0662184635708933*G0_0_1 - 0.0662184635708936*G0_0_2 - 0.066218463570893*G0_1_0 - 0.156575677409008*G0_1_1 - 0.156575677409009*G0_1_2 - 0.0662184635708932*G0_2_0 - 0.156575677409009*G0_2_1 - 0.156575677409009*G0_2_2; A[1453] = 0.18071442767623*G0_0_0 + 0.170276049182297*G0_0_1 + 0.170276049182297*G0_0_2 + 0.170276049182297*G0_1_0 + 0.185933616923198*G0_1_1 + 0.185933616923198*G0_1_2 + 0.170276049182297*G0_2_0 + 0.185933616923198*G0_2_1 + 0.185933616923198*G0_2_2; A[1454] = 0.00130479731174229*G0_0_0 + 0.00717638521457889*G0_0_1 + 0.00717638521457959*G0_0_2 + 0.00717638521457955*G0_1_0 + 0.0391439193522521*G0_1_1 + 0.0391439193522519*G0_1_2 + 0.0071763852145795*G0_2_0 + 0.0391439193522522*G0_2_1 + 0.039143919352252*G0_2_2; A[1455] = 0.00130479731174248*G0_0_0 + 0.00717638521457983*G0_0_1 + 0.00717638521457992*G0_0_2 + 0.00717638521458003*G0_1_0 + 0.039143919352252*G0_1_1 + 0.0391439193522524*G0_1_2 + 0.00717638521458003*G0_2_0 + 0.039143919352252*G0_2_1 + 0.0391439193522526*G0_2_2; A[1456] = -0.0388177200243167*G0_0_0 - 0.0388177200243167*G0_0_1 - 0.0388177200243166*G0_0_2 - 0.0155544887532732*G0_1_0 - 0.0155544887532732*G0_1_1 - 0.0155544887532732*G0_1_2 - 0.0155544887532732*G0_2_0 - 0.0155544887532732*G0_2_1 - 0.0155544887532732*G0_2_2; A[1457] = 0.0551276864210883*G0_0_0 + 0.0336585514536897*G0_1_0 + 0.0336585514536897*G0_2_0; A[1458] = -0.00336507226698203*G0_1_1 - 0.00336507226698202*G0_2_1; A[1459] = -0.00336507226698205*G0_1_2 - 0.00336507226698204*G0_2_2; A[1460] = 0.00228991928210693*G0_1_1 + 0.00228991928210691*G0_1_2 + 0.00228991928210694*G0_2_1 + 0.00228991928210695*G0_2_2; A[1461] = 0.00178757231708591*G0_1_1 + 0.00178757231708616*G0_1_2 + 0.00178757231708593*G0_2_1 + 0.00178757231708613*G0_2_2; A[1462] = 0.0017875723170862*G0_1_1 + 0.00178757231708633*G0_1_2 + 0.00178757231708613*G0_2_1 + 0.0017875723170863*G0_2_2; A[1463] = 0.0022899192821067*G0_1_1 + 0.00228991928210677*G0_1_2 + 0.00228991928210672*G0_2_1 + 0.00228991928210677*G0_2_2; A[1464] = 0.0124934342599271*G0_0_0 + 0.0699110399631219*G0_0_2 + 0.0699110399631224*G0_1_0 + 0.108637424175617*G0_1_2 + 0.0699110399631224*G0_2_0 + 0.108637424175617*G0_2_2; A[1465] = 0.000260959462348105*G0_0_0 - 0.00480165410720909*G0_0_2 - 0.00480165410720968*G0_1_0 - 0.00960330821441859*G0_1_2 - 0.00480165410720969*G0_2_0 - 0.00960330821441865*G0_2_2; A[1466] = 6.52398655877011e-05*G0_0_0 + 0.000548014870931448*G0_0_2 + 0.00054801487093161*G0_1_0 - 0.00523223722008497*G0_1_2 + 0.000548014870931631*G0_2_0 - 0.00523223722008488*G0_2_2; A[1467] = 0.00228991928210691*G0_0_2 + 0.00228991928210668*G0_1_0 + 0.0111690649885096*G0_1_2 + 0.0022899192821067*G0_2_0 + 0.0111690649885095*G0_2_2; A[1468] = 0.0124934342599268*G0_0_0 + 0.069911039963122*G0_0_1 + 0.0699110399631222*G0_1_0 + 0.108637424175617*G0_1_1 + 0.0699110399631222*G0_2_0 + 0.108637424175617*G0_2_1; A[1469] = 0.00026095946234819*G0_0_0 - 0.00480165410720992*G0_0_1 - 0.00480165410720965*G0_1_0 - 0.00960330821441923*G0_1_1 - 0.00480165410720964*G0_2_0 - 0.00960330821441926*G0_2_1; A[1470] = 6.52398655871126e-05*G0_0_0 + 0.000548014870931711*G0_0_1 + 0.000548014870931754*G0_1_0 - 0.00523223722008411*G0_1_1 + 0.000548014870931649*G0_2_0 - 0.00523223722008415*G0_2_1; A[1471] = 0.0022899192821068*G0_0_1 + 0.00228991928210689*G0_1_0 + 0.0111690649885095*G0_1_1 + 0.00228991928210693*G0_2_0 + 0.0111690649885095*G0_2_1; A[1472] = -0.0315434750113568*G0_0_0 - 0.0315434750113569*G0_0_1 + 0.028372817543824*G0_0_2 + 0.028372817543824*G0_1_0 + 0.0283728175438241*G0_1_1 + 0.00939454064454064*G0_1_2 + 0.028372817543824*G0_2_0 + 0.028372817543824*G0_2_1 + 0.00939454064454065*G0_2_2; A[1473] = -0.00626302709636009*G0_0_0 - 0.00626302709635992*G0_0_1 - 0.000482775005344106*G0_0_2 - 0.000482775005343967*G0_1_0 - 0.000482775005343899*G0_1_1 + 6.52398655872975e-05*G0_1_2 - 0.000482775005343969*G0_2_0 - 0.0004827750053439*G0_2_1 + 6.52398655872848e-05*G0_2_2; A[1474] = 6.5239865586992e-05*G0_0_0 + 6.52398655869223e-05*G0_0_1 + 0.0132175967679436*G0_0_2 + 0.0132175967679437*G0_1_0 + 0.0132175967679437*G0_1_1 + 6.52398655867539e-05*G0_1_2 + 0.0132175967679436*G0_2_0 + 0.0132175967679436*G0_2_1 + 6.52398655867508e-05*G0_2_2; A[1475] = -0.00228991928210661*G0_0_2 - 0.00228991928210667*G0_1_0 - 0.00228991928210665*G0_1_1 + 0.00939454064454079*G0_1_2 - 0.00228991928210669*G0_2_0 - 0.00228991928210666*G0_2_1 + 0.00939454064454078*G0_2_2; A[1476] = -0.0315434750113568*G0_0_0 + 0.0283728175438242*G0_0_1 - 0.0315434750113568*G0_0_2 + 0.0283728175438242*G0_1_0 + 0.00939454064454079*G0_1_1 + 0.0283728175438242*G0_1_2 + 0.0283728175438242*G0_2_0 + 0.00939454064454078*G0_2_1 + 0.0283728175438242*G0_2_2; A[1477] = -0.00626302709636033*G0_0_0 - 0.00048277500534458*G0_0_1 - 0.00626302709636028*G0_0_2 - 0.000482775005344766*G0_1_0 + 6.52398655865545e-05*G0_1_1 - 0.000482775005344828*G0_1_2 - 0.000482775005344667*G0_2_0 + 6.52398655865719e-05*G0_2_1 - 0.000482775005344728*G0_2_2; A[1478] = 6.52398655873817e-05*G0_0_0 + 0.0132175967679438*G0_0_1 + 6.52398655873463e-05*G0_0_2 + 0.013217596767944*G0_1_0 + 6.52398655874765e-05*G0_1_1 + 0.0132175967679442*G0_1_2 + 0.013217596767944*G0_2_0 + 6.52398655874409e-05*G0_2_1 + 0.0132175967679442*G0_2_2; A[1479] = -0.00228991928210666*G0_0_1 - 0.00228991928210686*G0_1_0 + 0.00939454064454041*G0_1_1 - 0.0022899192821069*G0_1_2 - 0.0022899192821069*G0_2_0 + 0.0093945406445404*G0_2_1 - 0.00228991928210694*G0_2_2; A[1480] = 0.185268170294209*G0_0_0 + 0.125351877739029*G0_0_1 + 0.125351877739029*G0_0_2 + 0.081739027594061*G0_1_0 + 0.100717304493345*G0_1_1 + 0.100717304493344*G0_1_2 + 0.081739027594061*G0_2_0 + 0.100717304493344*G0_2_1 + 0.100717304493344*G0_2_2; A[1481] = -0.387185554286243*G0_0_0 - 0.219493003781195*G0_0_1 - 0.219493003781195*G0_0_2 - 0.167692550505047*G0_1_0 - 0.204187731314464*G0_1_1 - 0.204187731314464*G0_1_2 - 0.167692550505047*G0_2_0 - 0.204187731314464*G0_2_1 - 0.204187731314464*G0_2_2; A[1482] = 0.428965164208214*G0_0_0 + 0.202869886029605*G0_0_1 + 0.202869886029605*G0_0_2 + 0.202869886029605*G0_1_0 + 0.281001149056701*G0_1_1 + 0.281001149056701*G0_1_2 + 0.202869886029605*G0_2_0 + 0.281001149056701*G0_2_1 + 0.2810011490567*G0_2_2; A[1483] = -0.243357746612952*G0_0_0 - 0.0699110399631218*G0_0_1 - 0.0699110399631219*G0_0_2 - 0.135020425819035*G0_1_0 - 0.108637424175616*G0_1_1 - 0.108637424175617*G0_1_2 - 0.135020425819035*G0_2_0 - 0.108637424175616*G0_2_1 - 0.108637424175617*G0_2_2; A[1484] = 0.047625101878573*G0_0_0 + 0.0623693115012548*G0_0_1 + 0.0623693115012544*G0_0_2 + 0.062369311501256*G0_1_0 + 0.12473862300251*G0_1_1 + 0.12473862300251*G0_1_2 + 0.0623693115012559*G0_2_0 + 0.12473862300251*G0_2_1 + 0.12473862300251*G0_2_2; A[1485] = -0.000652398655870923*G0_0_0 - 0.00296841388421297*G0_0_1 - 0.00296841388421264*G0_0_2 - 0.00296841388421264*G0_1_0 + 0.00352295274170308*G0_1_1 + 0.003522952741703*G0_1_2 - 0.0029684138842127*G0_2_0 + 0.00352295274170309*G0_2_1 + 0.00352295274170292*G0_2_2; A[1486] = 6.52398655868277e-05*G0_0_1 + 6.52398655869952e-05*G0_0_2 + 6.52398655872132e-05*G0_1_0 - 0.00117431758056766*G0_1_1 - 0.00117431758056734*G0_1_2 + 6.5239865587234e-05*G0_2_0 - 0.00117431758056774*G0_2_1 - 0.0011743175805674*G0_2_2; A[1487] = -0.000652398655869623*G0_0_0 - 0.0029684138842112*G0_0_1 - 0.00296841388421162*G0_0_2 - 0.00296841388421228*G0_1_0 + 0.00352295274170313*G0_1_1 + 0.00352295274170341*G0_1_2 - 0.00296841388421226*G0_2_0 + 0.00352295274170311*G0_2_1 + 0.00352295274170339*G0_2_2; A[1488] = 0.00257697469068939*G0_0_1 + 0.0025769746906893*G0_0_2 + 0.00257697469068955*G0_1_0 - 0.0105036183595214*G0_1_1 - 0.0105036183595219*G0_1_2 + 0.00257697469068947*G0_2_0 - 0.0105036183595214*G0_2_1 - 0.0105036183595219*G0_2_2; A[1489] = 6.52398655871078e-05*G0_0_1 + 6.52398655869854e-05*G0_0_2 + 6.52398655869825e-05*G0_1_0 - 0.00117431758056771*G0_1_1 - 0.00117431758056756*G0_1_2 + 6.52398655869631e-05*G0_2_0 - 0.00117431758056765*G0_2_1 - 0.00117431758056757*G0_2_2; A[1490] = -0.0665446628988284*G0_0_0 + 0.0227687130898937*G0_0_1 + 0.0227687130898937*G0_0_2 + 0.0227687130898933*G0_1_0 - 0.0150051690850304*G0_1_1 - 0.0150051690850299*G0_1_2 + 0.0227687130898934*G0_2_0 - 0.0150051690850303*G0_2_1 - 0.0150051690850299*G0_2_2; A[1491] = -0.000652398655870777*G0_0_0 + 0.00884000178705098*G0_0_1 + 0.00884000178705019*G0_0_2 + 0.00884000178705073*G0_1_0 - 0.000652398655869815*G0_1_1 - 0.000652398655870287*G0_1_2 + 0.00884000178705067*G0_2_0 - 0.000652398655869829*G0_2_1 - 0.000652398655870434*G0_2_2; A[1492] = -6.52398655878831e-05*G0_0_1 - 6.52398655872231e-05*G0_0_2 - 6.52398655872792e-05*G0_1_0 - 0.0150051690850308*G0_1_1 - 0.0150051690850305*G0_1_2 - 6.52398655872995e-05*G0_2_0 - 0.0150051690850308*G0_2_1 - 0.0150051690850304*G0_2_2; A[1493] = -0.000652398655871156*G0_0_0 + 0.00884000178704955*G0_0_1 + 0.00884000178705002*G0_0_2 + 0.00884000178705073*G0_1_0 - 0.000652398655871351*G0_1_1 - 0.00065239865587119*G0_1_2 + 0.00884000178705067*G0_2_0 - 0.000652398655871399*G0_2_1 - 0.000652398655871149*G0_2_2; A[1494] = -0.00257697469068923*G0_0_1 - 0.00257697469068956*G0_0_2 - 0.00257697469068945*G0_1_0 - 0.000652398655870781*G0_1_1 - 0.000652398655870909*G0_1_2 - 0.00257697469068937*G0_2_0 - 0.000652398655870757*G0_2_1 - 0.000652398655870834*G0_2_2; A[1495] = -6.52398655868526e-05*G0_0_1 - 6.52398655868594e-05*G0_0_2 - 6.52398655870658e-05*G0_1_0 - 0.01500516908503*G0_1_1 - 0.0150051690850301*G0_1_2 - 6.52398655870482e-05*G0_2_0 - 0.0150051690850299*G0_2_1 - 0.0150051690850301*G0_2_2; A[1496] = 0.0846813455320395*G0_0_0 - 0.00463203045668261*G0_0_1 - 0.0887914570640248*G0_0_2 - 0.0887914570640248*G0_1_0 - 0.0510175748891011*G0_1_1 - 0.05284429112554*G0_1_2 - 0.0887914570640248*G0_2_0 - 0.0510175748891011*G0_2_1 - 0.0528442911255399*G0_2_2; A[1497] = -0.0622388317700822*G0_0_0 + 0.0985448169692944*G0_0_1 + 0.188575831479475*G0_0_2 + 0.188575831479474*G0_1_0 + 0.182410664181494*G0_1_1 + 0.104709984267273*G0_1_2 + 0.188575831479474*G0_2_0 + 0.182410664181494*G0_2_1 + 0.104709984267273*G0_2_2; A[1498] = -0.00339247301052786*G0_0_0 - 0.0623693115012545*G0_0_1 - 0.198068231922396*G0_0_2 - 0.198068231922395*G0_1_0 - 0.12473862300251*G0_1_1 - 0.271397840842282*G0_1_2 - 0.198068231922395*G0_2_0 - 0.12473862300251*G0_2_1 - 0.271397840842282*G0_2_2; A[1499] = 0.0127870136550693*G0_0_0 + 0.00329461321214849*G0_0_1 - 0.0250847283182353*G0_0_2 - 0.0250847283182356*G0_1_0 - 0.0155923278753138*G0_1_1 - 0.0061977872307734*G0_1_2 - 0.0250847283182355*G0_2_0 - 0.0155923278753138*G0_2_1 - 0.00619778723077344*G0_2_2; A[1500] = -0.0067849460210572*G0_0_0 + 0.00296841388421135*G0_0_1 + 0.0303691574307885*G0_0_2 + 0.0303691574307893*G0_1_0 - 0.00352295274170305*G0_1_1 + 0.104709984267276*G0_1_2 + 0.0303691574307892*G0_2_0 - 0.00352295274170303*G0_2_1 + 0.104709984267276*G0_2_2; A[1501] = -0.000130479731174699*G0_0_0 - 6.52398655871806e-05*G0_0_1 - 0.0137656116388753*G0_0_2 - 0.0137656116388753*G0_1_0 + 0.00117431758056753*G0_1_1 - 0.0528442911255408*G0_1_2 - 0.0137656116388753*G0_2_0 + 0.00117431758056746*G0_2_1 - 0.0528442911255408*G0_2_2; A[1502] = 0.0846813455320394*G0_0_0 - 0.0887914570640253*G0_0_1 - 0.00463203045668293*G0_0_2 - 0.0887914570640255*G0_1_0 - 0.052844291125541*G0_1_1 - 0.0510175748891021*G0_1_2 - 0.0887914570640254*G0_2_0 - 0.0528442911255409*G0_2_1 - 0.051017574889102*G0_2_2; A[1503] = -0.0622388317700818*G0_0_0 + 0.188575831479474*G0_0_1 + 0.0985448169692941*G0_0_2 + 0.188575831479475*G0_1_0 + 0.104709984267274*G0_1_1 + 0.182410664181495*G0_1_2 + 0.188575831479475*G0_2_0 + 0.104709984267274*G0_2_1 + 0.182410664181495*G0_2_2; A[1504] = -0.00339247301052781*G0_0_0 - 0.198068231922395*G0_0_1 - 0.0623693115012542*G0_0_2 - 0.198068231922396*G0_1_0 - 0.271397840842282*G0_1_1 - 0.12473862300251*G0_1_2 - 0.198068231922396*G0_2_0 - 0.271397840842282*G0_2_1 - 0.12473862300251*G0_2_2; A[1505] = 0.0127870136550692*G0_0_0 - 0.0250847283182339*G0_0_1 + 0.00329461321214832*G0_0_2 - 0.0250847283182345*G0_1_0 - 0.0061977872307722*G0_1_1 - 0.0155923278753132*G0_1_2 - 0.0250847283182347*G0_2_0 - 0.00619778723077228*G0_2_1 - 0.0155923278753134*G0_2_2; A[1506] = -0.00678494602105687*G0_0_0 + 0.0303691574307888*G0_0_1 + 0.00296841388421247*G0_0_2 + 0.0303691574307889*G0_1_0 + 0.104709984267275*G0_1_1 - 0.00352295274170311*G0_1_2 + 0.030369157430789*G0_2_0 + 0.104709984267275*G0_2_1 - 0.00352295274170304*G0_2_2; A[1507] = -0.000130479731174589*G0_0_0 - 0.0137656116388761*G0_0_1 - 6.52398655869575e-05*G0_0_2 - 0.0137656116388759*G0_1_0 - 0.0528442911255412*G0_1_1 + 0.00117431758056718*G0_1_2 - 0.0137656116388758*G0_2_0 - 0.0528442911255412*G0_2_1 + 0.00117431758056723*G0_2_2; A[1508] = 0.180714427676231*G0_0_0 + 0.0104383784939333*G0_0_1 + 0.0104383784939343*G0_0_2 + 0.0104383784939334*G0_1_0 + 0.0260959462348337*G0_1_1 + 0.0260959462348348*G0_1_2 + 0.0104383784939333*G0_2_0 + 0.0260959462348335*G0_2_1 + 0.0260959462348348*G0_2_2; A[1509] = -0.161794866655976*G0_0_0 - 0.0955764030850822*G0_0_1 - 0.0955764030850829*G0_0_2 - 0.0955764030850826*G0_1_0 - 0.185933616923199*G0_1_1 - 0.185933616923199*G0_1_2 - 0.0955764030850826*G0_2_0 - 0.185933616923199*G0_2_1 - 0.185933616923199*G0_2_2; A[1510] = 0.00130479731174152*G0_0_0 - 0.00587158790283735*G0_0_1 - 0.00587158790283746*G0_0_2 - 0.00587158790283801*G0_1_0 + 0.0260959462348353*G0_1_1 + 0.0260959462348352*G0_1_2 - 0.00587158790283791*G0_2_0 + 0.0260959462348356*G0_2_1 + 0.0260959462348353*G0_2_2; A[1511] = 0.00130479731174074*G0_0_0 - 0.00587158790283788*G0_0_1 - 0.00587158790283842*G0_0_2 - 0.00587158790283852*G0_1_0 + 0.0260959462348356*G0_1_1 + 0.0260959462348353*G0_1_2 - 0.00587158790283847*G0_2_0 + 0.0260959462348356*G0_2_1 + 0.0260959462348352*G0_2_2; A[1512] = 0.0153313684129654*G0_0_0 + 0.0153313684129654*G0_0_1 + 0.0153313684129654*G0_0_2 + 0.00480034930989779*G0_1_0 + 0.00480034930989778*G0_1_1 + 0.00480034930989781*G0_1_2 + 0.0048003493098978*G0_2_0 + 0.00480034930989779*G0_2_1 + 0.00480034930989782*G0_2_2; A[1513] = -0.0551276864210884*G0_0_0 - 0.0372571824394735*G0_1_0 - 0.0372571824394735*G0_2_0; A[1514] = -0.0048003493098979*G0_1_1 - 0.00480034930989788*G0_2_1; A[1515] = -0.00480034930989779*G0_1_2 - 0.00480034930989779*G0_2_2; A[1516] = 0.00537576492437601*G0_1_1 + 0.00537576492437589*G0_1_2 + 0.00537576492437604*G0_2_1 + 0.00537576492437596*G0_2_2; A[1517] = 0.0022899192821068*G0_1_1 + 0.00228991928210681*G0_1_2 + 0.00228991928210674*G0_2_1 + 0.0022899192821067*G0_2_2; A[1518] = 0.0022899192821068*G0_1_1 + 0.00228991928210679*G0_1_2 + 0.00228991928210686*G0_2_1 + 0.00228991928210689*G0_2_2; A[1519] = 0.00537576492437599*G0_1_1 + 0.00537576492437592*G0_1_2 + 0.00537576492437596*G0_2_1 + 0.00537576492437587*G0_2_2; A[1520] = 0.0196371995417133*G0_0_0 - 0.069911039963122*G0_0_2 - 0.0699110399631226*G0_1_0 - 0.139822079926244*G0_1_2 - 0.0699110399631226*G0_2_0 - 0.139822079926244*G0_2_2; A[1521] = -0.0186912214907004*G0_0_0 + 0.0387263842124945*G0_0_2 + 0.0387263842124951*G0_1_0 + 0.108637424175617*G0_1_2 + 0.0387263842124951*G0_2_0 + 0.108637424175617*G0_2_2; A[1522] = 0.00939454064454014*G0_0_0 - 0.0189782768992835*G0_0_2 - 0.0189782768992837*G0_1_0 - 0.0788945694544641*G0_1_2 - 0.0189782768992836*G0_2_0 - 0.0788945694544641*G0_2_2; A[1523] = 0.00537576492437584*G0_0_2 + 0.00537576492437608*G0_1_0 + 0.0328352243499808*G0_1_2 + 0.00537576492437604*G0_2_0 + 0.0328352243499808*G0_2_2; A[1524] = 0.0196371995417134*G0_0_0 - 0.0699110399631221*G0_0_1 - 0.0699110399631222*G0_1_0 - 0.139822079926245*G0_1_1 - 0.0699110399631223*G0_2_0 - 0.139822079926245*G0_2_1; A[1525] = -0.0186912214907005*G0_0_0 + 0.0387263842124949*G0_0_1 + 0.0387263842124948*G0_1_0 + 0.108637424175617*G0_1_1 + 0.0387263842124948*G0_2_0 + 0.108637424175617*G0_2_1; A[1526] = 0.00939454064454055*G0_0_0 - 0.0189782768992837*G0_0_1 - 0.0189782768992834*G0_1_0 - 0.0788945694544646*G0_1_1 - 0.0189782768992834*G0_2_0 - 0.0788945694544647*G0_2_1; A[1527] = 0.00537576492437586*G0_0_1 + 0.00537576492437589*G0_1_0 + 0.0328352243499812*G0_1_1 + 0.00537576492437596*G0_2_0 + 0.0328352243499812*G0_2_1; A[1528] = 0.0220836945012292*G0_0_0 + 0.0220836945012293*G0_0_1 - 0.00537576492437582*G0_0_2 - 0.00537576492437562*G0_1_0 - 0.0053757649243756*G0_1_1 - 0.00537576492437563*G0_2_0 - 0.00537576492437561*G0_2_1; A[1529] = 0.00658922642429538*G0_0_0 + 0.00658922642429531*G0_0_1 - 0.00228991928210715*G0_0_2 - 0.00228991928210741*G0_1_0 - 0.00228991928210754*G0_1_1 - 0.00228991928210742*G0_2_0 - 0.00228991928210755*G0_2_1; A[1530] = 0.00939454064454066*G0_0_0 + 0.00939454064454067*G0_0_1 - 0.00228991928210636*G0_0_2 - 0.0022899192821063*G0_1_0 - 0.00228991928210627*G0_1_1 - 0.00228991928210628*G0_2_0 - 0.00228991928210625*G0_2_1; A[1531] = -0.00537576492437618*G0_0_2 - 0.00537576492437606*G0_1_0 - 0.00537576492437605*G0_1_1 - 0.00537576492437602*G0_2_0 - 0.00537576492437601*G0_2_1; A[1532] = 0.0220836945012291*G0_0_0 - 0.00537576492437602*G0_0_1 + 0.0220836945012291*G0_0_2 - 0.00537576492437585*G0_1_0 - 0.00537576492437579*G0_1_2 - 0.00537576492437588*G0_2_0 - 0.00537576492437583*G0_2_2; A[1533] = 0.00658922642429585*G0_0_0 - 0.00228991928210664*G0_0_1 + 0.00658922642429579*G0_0_2 - 0.00228991928210676*G0_1_0 - 0.00228991928210679*G0_1_2 - 0.00228991928210679*G0_2_0 - 0.00228991928210681*G0_2_2; A[1534] = 0.00939454064454016*G0_0_0 - 0.00228991928210674*G0_0_1 + 0.0093945406445402*G0_0_2 - 0.00228991928210672*G0_1_0 - 0.00228991928210676*G0_1_2 - 0.00228991928210668*G0_2_0 - 0.00228991928210671*G0_2_2; A[1535] = -0.00537576492437601*G0_0_1 - 0.0053757649243759*G0_1_0 - 0.00537576492437589*G0_1_2 - 0.00537576492437597*G0_2_0 - 0.00537576492437596*G0_2_2; A[1536] = -0.0812105846828058*G0_0_0 - 0.0537511252572007*G0_0_1 - 0.0537511252572007*G0_0_2 - 0.0274594594256047*G0_1_0 - 0.0328352243499804*G0_1_1 - 0.0328352243499803*G0_1_2 - 0.0274594594256047*G0_2_0 - 0.0328352243499805*G0_2_1 - 0.0328352243499804*G0_2_2; A[1537] = 0.185268170294209*G0_0_0 + 0.103529142700148*G0_0_1 + 0.103529142700148*G0_0_2 + 0.0599162925551802*G0_1_0 + 0.0788945694544634*G0_1_1 + 0.0788945694544635*G0_1_2 + 0.0599162925551802*G0_2_0 + 0.0788945694544636*G0_2_1 + 0.0788945694544636*G0_2_2; A[1538] = -0.243357746612952*G0_0_0 - 0.135020425819035*G0_0_1 - 0.135020425819035*G0_0_2 - 0.0699110399631218*G0_1_0 - 0.108637424175616*G0_1_1 - 0.108637424175616*G0_1_2 - 0.0699110399631219*G0_2_0 - 0.108637424175617*G0_2_1 - 0.108637424175617*G0_2_2; A[1539] = 0.179096479009671*G0_0_0 + 0.069911039963122*G0_0_1 + 0.0699110399631221*G0_0_2 + 0.069911039963122*G0_1_0 + 0.139822079926244*G0_1_1 + 0.139822079926244*G0_1_2 + 0.0699110399631221*G0_2_0 + 0.139822079926244*G0_2_1 + 0.139822079926244*G0_2_2; A[1540] = -0.0606730749959908*G0_0_0 - 0.0284445813959697*G0_0_1 - 0.0284445813959695*G0_0_2 - 0.0284445813959696*G0_1_0 - 0.12473862300251*G0_1_1 - 0.12473862300251*G0_1_2 - 0.0284445813959696*G0_2_0 - 0.12473862300251*G0_2_1 - 0.12473862300251*G0_2_2; A[1541] = 0.0226708532915127*G0_0_0 + 0.000685018588664582*G0_0_1 + 0.000685018588664368*G0_0_2 + 0.000685018588664459*G0_1_0 + 0.0429604514890971*G0_1_1 + 0.042960451489097*G0_1_2 + 0.000685018588664462*G0_2_0 + 0.0429604514890971*G0_2_1 + 0.042960451489097*G0_2_2; A[1542] = 0.00939454064454073*G0_0_1 + 0.00939454064454051*G0_0_2 + 0.00939454064454065*G0_1_0 - 0.0118736555368498*G0_1_1 - 0.0118736555368495*G0_1_2 + 0.00939454064454069*G0_2_0 - 0.0118736555368498*G0_2_1 - 0.0118736555368493*G0_2_2; A[1543] = 0.0226708532915121*G0_0_0 + 0.000685018588663634*G0_0_1 + 0.000685018588663962*G0_0_2 + 0.00068501858866434*G0_1_0 + 0.0429604514890971*G0_1_1 + 0.0429604514890969*G0_1_2 + 0.000685018588664369*G0_2_0 + 0.0429604514890972*G0_2_1 + 0.0429604514890969*G0_2_2; A[1544] = 0.00329461321214825*G0_0_1 + 0.00329461321214836*G0_0_2 + 0.00329461321214791*G0_1_0 - 0.00254435475789676*G0_1_1 - 0.00254435475789669*G0_1_2 + 0.0032946132121479*G0_2_0 - 0.00254435475789677*G0_2_1 - 0.0025443547578968*G0_2_2; A[1545] = 0.0093945406445405*G0_0_1 + 0.00939454064454053*G0_0_2 + 0.0093945406445404*G0_1_0 - 0.0118736555368499*G0_1_1 - 0.01187365553685*G0_1_2 + 0.00939454064454043*G0_2_0 - 0.0118736555368499*G0_2_1 - 0.0118736555368499*G0_2_2; A[1546] = 0.0453417065830252*G0_0_0 - 0.00939454064454085*G0_0_1 - 0.00939454064454093*G0_0_2 - 0.00939454064454069*G0_1_0 - 0.00939454064454062*G0_2_0; A[1547] = 0.022670853291513*G0_0_0 - 0.00329461321214846*G0_0_1 - 0.00329461321214755*G0_0_2 - 0.00329461321214799*G0_1_0 - 0.00329461321214799*G0_2_0; A[1548] = -0.00939454064453984*G0_0_1 - 0.00939454064454037*G0_0_2 - 0.00939454064454063*G0_1_0 - 0.00939454064454067*G0_2_0; A[1549] = 0.0226708532915131*G0_0_0 - 0.0032946132121469*G0_0_1 - 0.00329461321214756*G0_0_2 - 0.0032946132121478*G0_1_0 - 0.0032946132121478*G0_2_0; A[1550] = -0.0032946132121487*G0_0_1 - 0.00329461321214847*G0_0_2 - 0.00329461321214796*G0_1_0 - 0.00329461321214795*G0_2_0; A[1551] = -0.00939454064454082*G0_0_1 - 0.00939454064454074*G0_0_2 - 0.00939454064454035*G0_1_0 - 0.00939454064454039*G0_2_0; A[1552] = -0.069349977119074*G0_0_0 - 0.014613729891508*G0_0_1 + 0.0212681961813898*G0_0_2 + 0.0212681961813898*G0_1_0 + 0.0118736555368493*G0_1_1 + 0.0212681961813899*G0_2_0 + 0.0118736555368494*G0_2_1; A[1553] = 0.0920860702761741*G0_0_0 - 0.0359145460056913*G0_0_1 - 0.0422754329004321*G0_0_2 - 0.0422754329004318*G0_1_0 - 0.0429604514890961*G0_1_1 - 0.042275432900432*G0_2_0 - 0.0429604514890963*G0_2_1; A[1554] = -0.0644569872000426*G0_0_0 + 0.0284445813959694*G0_0_1 + 0.0962940416065403*G0_0_2 + 0.0962940416065401*G0_1_0 + 0.12473862300251*G0_1_1 + 0.0962940416065402*G0_2_0 + 0.12473862300251*G0_2_1; A[1555] = -0.0318696743392922*G0_0_0 - 0.00590420783563205*G0_0_1 + 0.00583896797004452*G0_0_2 + 0.00583896797004491*G0_1_0 + 0.0025443547578964*G0_1_1 + 0.00583896797004495*G0_2_0 + 0.00254435475789647*G0_2_1; A[1556] = 0.043971669405697*G0_0_0 - 0.000685018588663664*G0_0_1 - 0.0422754329004322*G0_0_2 - 0.0422754329004325*G0_1_0 - 0.042960451489097*G0_1_1 - 0.0422754329004325*G0_2_0 - 0.0429604514890971*G0_2_1; A[1557] = -0.0187890812890808*G0_0_0 - 0.0093945406445405*G0_0_1 + 0.0212681961813905*G0_0_2 + 0.02126819618139*G0_1_0 + 0.0118736555368499*G0_1_1 + 0.0212681961813899*G0_2_0 + 0.0118736555368499*G0_2_1; A[1558] = -0.0693499771190739*G0_0_0 + 0.0212681961813903*G0_0_1 - 0.0146137298915077*G0_0_2 + 0.0212681961813903*G0_1_0 + 0.0118736555368498*G0_1_2 + 0.0212681961813905*G0_2_0 + 0.0118736555368501*G0_2_2; A[1559] = 0.0920860702761739*G0_0_0 - 0.0422754329004318*G0_0_1 - 0.0359145460056911*G0_0_2 - 0.0422754329004323*G0_1_0 - 0.0429604514890961*G0_1_2 - 0.0422754329004327*G0_2_0 - 0.0429604514890963*G0_2_2; A[1560] = -0.0644569872000425*G0_0_0 + 0.0962940416065401*G0_0_1 + 0.0284445813959693*G0_0_2 + 0.0962940416065402*G0_1_0 + 0.12473862300251*G0_1_2 + 0.0962940416065404*G0_2_0 + 0.124738623002509*G0_2_2; A[1561] = -0.0318696743392922*G0_0_0 + 0.00583896797004345*G0_0_1 - 0.00590420783563173*G0_0_2 + 0.00583896797004433*G0_1_0 + 0.0025443547578964*G0_1_2 + 0.00583896797004434*G0_2_0 + 0.0025443547578965*G0_2_2; A[1562] = 0.0439716694056967*G0_0_0 - 0.0422754329004323*G0_0_1 - 0.000685018588664256*G0_0_2 - 0.0422754329004323*G0_1_0 - 0.0429604514890968*G0_1_2 - 0.0422754329004323*G0_2_0 - 0.0429604514890968*G0_2_2; A[1563] = -0.0187890812890807*G0_0_0 + 0.0212681961813911*G0_0_1 - 0.00939454064454061*G0_0_2 + 0.0212681961813902*G0_1_0 + 0.0118736555368495*G0_1_2 + 0.0212681961813901*G0_2_0 + 0.0118736555368494*G0_2_2; A[1564] = -0.151356488162042*G0_0_0 + 0.00260959462348405*G0_0_1 + 0.00260959462348326*G0_0_2 + 0.00260959462348397*G0_1_0 + 0.00260959462348398*G0_2_0; A[1565] = 0.166687856575008*G0_0_0 + 0.0352295274170272*G0_0_1 + 0.0352295274170276*G0_0_2 + 0.0352295274170263*G0_1_0 + 0.0352295274170262*G0_2_0; A[1566] = -0.0453417065830255*G0_0_0 + 0.00260959462348318*G0_0_1 + 0.00260959462348344*G0_0_2 + 0.00260959462348351*G0_1_0 + 0.00260959462348351*G0_2_0; A[1567] = -0.0453417065830252*G0_0_0 + 0.00260959462348376*G0_0_1 + 0.00260959462348383*G0_0_2 + 0.00260959462348351*G0_1_0 + 0.00260959462348348*G0_2_0; A[1568] = -0.013742125287264*G0_0_0 - 0.013742125287264*G0_0_1 - 0.013742125287264*G0_0_2 - 0.0137421252872639*G0_1_0 - 0.013742125287264*G0_1_1 - 0.013742125287264*G0_1_2 - 0.0137421252872638*G0_2_0 - 0.0137421252872638*G0_2_1 - 0.0137421252872638*G0_2_2; A[1569] = 0.0479930547204848*G0_0_0 + 0.0143945239431349*G0_1_0 + 0.0143945239431348*G0_2_0; A[1570] = -0.00517743573299146*G0_0_1 + 0.013742125287264*G0_1_1 - 0.00517743573299144*G0_2_1; A[1571] = -0.00517743573299112*G0_0_2 - 0.00517743573299114*G0_1_2 + 0.013742125287264*G0_2_2; A[1572] = 0.0425363923627816*G0_0_1 + 0.0118736555368503*G0_0_2 - 0.0187890812890808*G0_1_1 - 0.00939454064454043*G0_1_2 + 0.0212681961813907*G0_2_1 + 0.0118736555368498*G0_2_2; A[1573] = 0.0403182369328191*G0_0_1 + 0.0540186087061077*G0_0_2 + 0.0148746893538555*G0_1_1 + 0.0149399292194429*G0_1_2 + 0.00123955744615442*G0_2_1 + 0.00117431758056796*G0_2_2; A[1574] = 0.0540186087061083*G0_0_1 + 0.0403182369328204*G0_0_2 + 0.00117431758056772*G0_1_1 + 0.00123955744615503*G0_1_2 + 0.0149399292194434*G0_2_1 + 0.0148746893538558*G0_2_2; A[1575] = 0.0118736555368501*G0_0_1 + 0.0425363923627807*G0_0_2 + 0.0118736555368501*G0_1_1 + 0.0212681961813904*G0_1_2 - 0.00939454064454038*G0_2_1 - 0.0187890812890807*G0_2_2; A[1576] = -0.0644569872000423*G0_0_0 + 0.0284445813959697*G0_0_2 + 0.192588083213081*G0_1_0 + 0.124738623002511*G0_1_2 + 0.0962940416065404*G0_2_0 + 0.12473862300251*G0_2_2; A[1577] = 0.132306447410613*G0_0_0 + 0.0733296089198867*G0_0_2 + 0.0109602974186305*G0_1_0 + 0.146659217839772*G0_1_2 - 0.0623693115012549*G0_2_0 - 0.12473862300251*G0_2_2; A[1578] = -0.0510175748891027*G0_0_0 - 0.0463855444324201*G0_0_2 + 0.00182671623643805*G0_1_0 - 0.0823327103709044*G0_1_2 + 0.0377738821749225*G0_2_0 + 0.127087258163645*G0_2_2; A[1579] = 0.0118736555368501*G0_0_0 + 0.0264873854283576*G0_0_2 + 0.01187365553685*G0_1_0 + 0.0477555816097477*G0_1_2 - 0.00939454064454051*G0_2_0 - 0.0641307878721068*G0_2_2; A[1580] = -0.0644569872000424*G0_0_0 + 0.0284445813959696*G0_0_1 + 0.0962940416065404*G0_1_0 + 0.124738623002511*G0_1_1 + 0.192588083213081*G0_2_0 + 0.12473862300251*G0_2_1; A[1581] = 0.132306447410613*G0_0_0 + 0.0733296089198868*G0_0_1 - 0.0623693115012549*G0_1_0 - 0.124738623002511*G0_1_1 + 0.0109602974186311*G0_2_0 + 0.146659217839772*G0_2_1; A[1582] = -0.0510175748891019*G0_0_0 - 0.0463855444324194*G0_0_1 + 0.0377738821749234*G0_1_0 + 0.127087258163646*G0_1_1 + 0.001826716236438*G0_2_0 - 0.082332710370904*G0_2_1; A[1583] = 0.0118736555368504*G0_0_0 + 0.0264873854283586*G0_0_1 - 0.00939454064454044*G0_1_0 - 0.0641307878721066*G0_1_1 + 0.0118736555368499*G0_2_0 + 0.0477555816097478*G0_2_1; A[1584] = 0.0187890812890812*G0_0_0 + 0.0187890812890811*G0_0_1 + 0.00939454064454082*G0_0_2 + 0.018789081289081*G0_1_0 + 0.0187890812890808*G0_1_1 + 0.00939454064454058*G0_1_2 + 0.00939454064454002*G0_2_0 + 0.00939454064453996*G0_2_1; A[1585] = -0.0148746893538559*G0_0_0 - 0.014874689353856*G0_0_1 + 6.52398655866334e-05*G0_0_2 - 0.0148746893538561*G0_1_0 - 0.0148746893538559*G0_1_1 + 6.52398655871618e-05*G0_1_2 + 6.52398655876063e-05*G0_2_0 + 6.52398655877945e-05*G0_2_1; A[1586] = -0.00117431758056721*G0_0_0 - 0.00117431758056704*G0_0_1 + 6.52398655877644e-05*G0_0_2 - 0.00117431758056751*G0_1_0 - 0.00117431758056759*G0_1_1 + 6.52398655872262e-05*G0_1_2 + 6.52398655866151e-05*G0_2_0 + 6.5239865586612e-05*G0_2_1; A[1587] = -0.0118736555368499*G0_0_0 - 0.01187365553685*G0_0_1 + 0.00939454064454027*G0_0_2 - 0.0118736555368499*G0_1_0 - 0.01187365553685*G0_1_1 + 0.00939454064454049*G0_1_2 + 0.00939454064454054*G0_2_0 + 0.00939454064454051*G0_2_1; A[1588] = 0.0187890812890812*G0_0_0 + 0.00939454064454071*G0_0_1 + 0.0187890812890812*G0_0_2 + 0.00939454064454064*G0_1_0 + 0.00939454064454057*G0_1_2 + 0.0187890812890806*G0_2_0 + 0.00939454064454019*G0_2_1 + 0.0187890812890805*G0_2_2; A[1589] = -0.0148746893538558*G0_0_0 + 6.52398655869629e-05*G0_0_1 - 0.0148746893538557*G0_0_2 + 6.52398655874572e-05*G0_1_0 + 6.52398655873824e-05*G0_1_2 - 0.0148746893538553*G0_2_0 + 6.52398655873469e-05*G0_2_1 - 0.0148746893538551*G0_2_2; A[1590] = -0.00117431758056682*G0_0_0 + 6.52398655871789e-05*G0_0_1 - 0.00117431758056687*G0_0_2 + 6.52398655869157e-05*G0_1_0 + 6.52398655870301e-05*G0_1_2 - 0.00117431758056785*G0_2_0 + 6.52398655869604e-05*G0_2_1 - 0.00117431758056791*G0_2_2; A[1591] = -0.0118736555368504*G0_0_0 + 0.00939454064454062*G0_0_1 - 0.0118736555368504*G0_0_2 + 0.00939454064454049*G0_1_0 + 0.0093945406445404*G0_1_2 - 0.0118736555368499*G0_2_0 + 0.00939454064454064*G0_2_1 - 0.0118736555368499*G0_2_2; A[1592] = 0.0453417065830256*G0_0_0 + 0.054736247227566*G0_0_1 + 0.0547362472275662*G0_0_2 + 0.0547362472275659*G0_1_0 + 0.0641307878721064*G0_1_1 + 0.0641307878721063*G0_1_2 + 0.0547362472275655*G0_2_0 + 0.0641307878721057*G0_2_1 + 0.0641307878721058*G0_2_2; A[1593] = -0.0665446628988285*G0_0_0 - 0.0893133759887221*G0_0_1 - 0.0893133759887221*G0_0_2 - 0.0893133759887218*G0_1_0 - 0.127087258163645*G0_1_1 - 0.127087258163645*G0_1_2 - 0.0893133759887213*G0_2_0 - 0.127087258163645*G0_2_1 - 0.127087258163645*G0_2_2; A[1594] = 0.047625101878573*G0_0_0 + 0.062369311501256*G0_0_1 + 0.0623693115012559*G0_0_2 + 0.0623693115012548*G0_1_0 + 0.12473862300251*G0_1_1 + 0.12473862300251*G0_1_2 + 0.0623693115012544*G0_2_0 + 0.12473862300251*G0_2_1 + 0.12473862300251*G0_2_2; A[1595] = -0.0606730749959908*G0_0_0 - 0.0284445813959696*G0_0_1 - 0.0284445813959696*G0_0_2 - 0.0284445813959697*G0_1_0 - 0.12473862300251*G0_1_1 - 0.12473862300251*G0_1_2 - 0.0284445813959695*G0_2_0 - 0.12473862300251*G0_2_1 - 0.12473862300251*G0_2_2; A[1596] = 0.647179466623907*G0_0_0 + 0.271397840842283*G0_0_1 + 0.271397840842283*G0_0_2 + 0.271397840842283*G0_1_0 + 0.542795681684566*G0_1_1 + 0.271397840842283*G0_1_2 + 0.271397840842283*G0_2_0 + 0.271397840842283*G0_2_1 + 0.542795681684565*G0_2_2; A[1597] = -0.268135847562928*G0_0_0 + 0.180714427676233*G0_0_1 + 0.0225077536275461*G0_0_2 - 0.0737210481134094*G0_1_0 - 0.20941996853455*G0_1_1 - 0.104709984267275*G0_1_2 - 0.0459941052388972*G0_2_0 + 0.0812236326559231*G0_2_1 - 0.0234863516113517*G0_2_2; A[1598] = 0.105688582251081*G0_0_0 - 0.0743734467692801*G0_0_1 + 0.000652398655872107*G0_0_2 + 0.0300103381700598*G0_1_0 + 0.10568858225108*G0_1_1 + 0.0528442911255403*G0_1_2 + 0.052844291125541*G0_2_0 + 0.000652398655870965*G0_2_1 + 0.0534966897814111*G0_2_2; A[1599] = -0.26813584756293*G0_0_0 + 0.0225077536275442*G0_0_1 + 0.180714427676231*G0_0_2 - 0.0459941052388978*G0_1_0 - 0.0234863516113526*G0_1_1 + 0.0812236326559224*G0_1_2 - 0.0737210481134108*G0_2_0 - 0.104709984267277*G0_2_1 - 0.209419968534551*G0_2_2; A[1600] = 0.113517366121533*G0_0_0 - 0.0851380245911483*G0_0_1 - 0.0851380245911499*G0_0_2 + 0.012721773789483*G0_1_0 - 0.0137003717732874*G0_1_1 - 0.0198981590040619*G0_1_2 + 0.0127217737894835*G0_2_0 - 0.0198981590040603*G0_2_1 - 0.0137003717732871*G0_2_2; A[1601] = 0.105688582251081*G0_0_0 + 0.000652398655869878*G0_0_1 - 0.0743734467692798*G0_0_2 + 0.0528442911255408*G0_1_0 + 0.0534966897814108*G0_1_1 + 0.00065239865587124*G0_1_2 + 0.0300103381700605*G0_2_0 + 0.0528442911255395*G0_2_1 + 0.10568858225108*G0_2_2; A[1602] = -0.0600206763401193*G0_0_0 - 0.0300103381700599*G0_0_1 - 0.0300103381700599*G0_0_2 - 0.0300103381700602*G0_1_0 - 0.0150051690850304*G0_1_2 - 0.03001033817006*G0_2_0 - 0.0150051690850294*G0_2_1; A[1603] = -0.0254435475789647*G0_0_0 - 0.00130479731174161*G0_0_1 - 0.0127217737894836*G0_0_2 - 0.00130479731174148*G0_1_0 - 0.000652398655871052*G0_1_2 - 0.0127217737894825*G0_2_0 - 0.000652398655871028*G0_2_1; A[1604] = -0.105688582251082*G0_0_0 - 0.0300103381700612*G0_0_1 - 0.0528442911255405*G0_0_2 - 0.03001033817006*G0_1_0 - 0.0150051690850298*G0_1_2 - 0.0528442911255412*G0_2_0 - 0.0150051690850304*G0_2_1; A[1605] = -0.0254435475789667*G0_0_0 - 0.0127217737894838*G0_0_1 - 0.00130479731174265*G0_0_2 - 0.0127217737894839*G0_1_0 - 0.000652398655871166*G0_1_2 - 0.00130479731174355*G0_2_0 - 0.000652398655872199*G0_2_1; A[1606] = -0.113517366121532*G0_0_0 - 0.0127217737894794*G0_0_1 - 0.012721773789481*G0_0_2 - 0.0127217737894825*G0_1_0 - 0.000652398655871421*G0_1_2 - 0.0127217737894829*G0_2_0 - 0.000652398655869758*G0_2_1; A[1607] = -0.105688582251081*G0_0_0 - 0.0528442911255416*G0_0_1 - 0.0300103381700597*G0_0_2 - 0.052844291125541*G0_1_0 - 0.0150051690850296*G0_1_2 - 0.0300103381700608*G0_2_0 - 0.0150051690850304*G0_2_1; A[1608] = -0.0456679059109615*G0_0_0 - 0.0756782440810211*G0_0_1 - 0.0378391220405107*G0_0_2 - 0.075678244081021*G0_1_0 - 0.105688582251081*G0_1_1 - 0.0528442911255409*G0_1_2 - 0.0378391220405099*G0_2_0 - 0.0528442911255404*G0_2_1; A[1609] = 0.0391439193522537*G0_0_0 + 0.135698920421144*G0_0_1 + 0.0678494602105708*G0_0_2 + 0.135698920421141*G0_1_0 + 0.20941996853455*G0_1_1 + 0.104709984267275*G0_1_2 + 0.0678494602105712*G0_2_0 + 0.104709984267276*G0_2_1; A[1610] = 0.0521918924696685*G0_0_0 - 0.271397840842283*G0_0_1 - 0.135698920421143*G0_0_2 - 0.271397840842283*G0_1_0 - 0.542795681684566*G0_1_1 - 0.271397840842283*G0_1_2 - 0.135698920421142*G0_2_0 - 0.271397840842282*G0_2_1; A[1611] = 0.0391439193522523*G0_0_0 + 0.0264221455627688*G0_0_1 - 0.00554538857490231*G0_0_2 + 0.0264221455627702*G0_1_0 + 0.0137003717732863*G0_1_1 - 0.00619778723077337*G0_1_2 - 0.00554538857490331*G0_2_0 - 0.0061977872307752*G0_2_1; A[1612] = -0.156575677409009*G0_0_0 - 0.0225077536275443*G0_0_1 + 0.0678494602105718*G0_0_2 - 0.0225077536275444*G0_1_0 + 0.0234863516113526*G0_1_1 + 0.104709984267276*G0_1_2 + 0.0678494602105707*G0_2_0 + 0.104709984267276*G0_2_1; A[1613] = 0.0521918924696693*G0_0_0 - 0.000652398655870127*G0_0_1 - 0.0378391220405109*G0_0_2 - 0.000652398655870843*G0_1_0 - 0.0534966897814111*G0_1_1 - 0.0528442911255404*G0_1_2 - 0.0378391220405093*G0_2_0 - 0.0528442911255396*G0_2_1; A[1614] = -0.0456679059109608*G0_0_0 - 0.0378391220405096*G0_0_1 - 0.0756782440810204*G0_0_2 - 0.0378391220405106*G0_1_0 - 0.0528442911255402*G0_1_2 - 0.0756782440810201*G0_2_0 - 0.0528442911255393*G0_2_1 - 0.105688582251081*G0_2_2; A[1615] = 0.0391439193522529*G0_0_0 + 0.0678494602105702*G0_0_1 + 0.135698920421143*G0_0_2 + 0.067849460210571*G0_1_0 + 0.104709984267275*G0_1_2 + 0.135698920421141*G0_2_0 + 0.104709984267274*G0_2_1 + 0.20941996853455*G0_2_2; A[1616] = 0.0521918924696691*G0_0_0 - 0.135698920421143*G0_0_1 - 0.271397840842284*G0_0_2 - 0.135698920421141*G0_1_0 - 0.271397840842283*G0_1_2 - 0.271397840842283*G0_2_0 - 0.271397840842283*G0_2_1 - 0.542795681684565*G0_2_2; A[1617] = 0.0391439193522519*G0_0_0 - 0.00554538857490291*G0_0_1 + 0.0264221455627708*G0_0_2 - 0.005545388574903*G0_1_0 - 0.00619778723077368*G0_1_2 + 0.0264221455627691*G0_2_0 - 0.00619778723077424*G0_2_1 + 0.0137003717732876*G0_2_2; A[1618] = -0.156575677409009*G0_0_0 + 0.0678494602105716*G0_0_1 - 0.0225077536275464*G0_0_2 + 0.0678494602105704*G0_1_0 + 0.104709984267275*G0_1_2 - 0.0225077536275449*G0_2_0 + 0.104709984267275*G0_2_1 + 0.023486351611351*G0_2_2; A[1619] = 0.0521918924696687*G0_0_0 - 0.037839122040512*G0_0_1 - 0.000652398655871973*G0_0_2 - 0.0378391220405104*G0_1_0 - 0.0528442911255403*G0_1_2 - 0.000652398655870285*G0_2_0 - 0.0528442911255402*G0_2_1 - 0.0534966897814111*G0_2_2; A[1620] = 0.195719596761262*G0_0_0 + 0.0750258454251492*G0_0_1 + 0.0750258454251472*G0_0_2 + 0.0750258454251487*G0_1_0 + 0.0260959462348325*G0_1_2 + 0.0750258454251491*G0_2_0 + 0.0260959462348333*G0_2_1; A[1621] = -0.78287838704505*G0_0_0 - 0.316413348097376*G0_0_1 - 0.316413348097374*G0_0_2 - 0.316413348097372*G0_1_0 - 0.185933616923198*G0_1_2 - 0.316413348097373*G0_2_0 - 0.1859336169232*G0_2_1; A[1622] = 0.293579395141893*G0_0_0 + 0.0750258454251517*G0_0_1 + 0.0587158790283785*G0_0_2 + 0.0750258454251508*G0_1_0 + 0.0260959462348354*G0_1_2 + 0.0587158790283796*G0_2_0 + 0.0260959462348366*G0_2_1; A[1623] = 0.293579395141896*G0_0_0 + 0.0587158790283796*G0_0_1 + 0.0750258454251527*G0_0_2 + 0.0587158790283811*G0_1_0 + 0.0260959462348366*G0_1_2 + 0.075025845425154*G0_2_0 + 0.0260959462348353*G0_2_1; A[1624] = -0.00946499969937464*G0_0_0 - 0.00946499969937453*G0_0_1 - 0.00946499969937457*G0_0_2 - 0.00946499969937472*G0_1_0 - 0.00946499969937462*G0_1_1 - 0.0094649996993747*G0_1_2 - 0.00946499969937449*G0_2_0 - 0.00946499969937446*G0_2_1 - 0.00946499969937445*G0_2_2; A[1625] = -0.0345719095719092*G0_0_0 - 0.00472467106581686*G0_1_0 - 0.0047246710658168*G0_2_0; A[1626] = -0.00472467106581678*G0_0_1 - 0.0345719095719095*G0_1_1 - 0.00472467106581675*G0_2_1; A[1627] = -0.00227817610630124*G0_0_2 - 0.00227817610630128*G0_1_2 + 0.00946499969937477*G0_2_2; A[1628] = -0.0845508658008655*G0_0_1 - 0.0429604514890973*G0_0_2 + 0.0439716694056967*G0_1_1 - 0.000685018588664596*G0_1_2 - 0.0422754329004323*G0_2_1 - 0.0429604514890964*G0_2_2; A[1629] = -0.0808321934624*G0_0_1 - 0.108232937008976*G0_0_2 - 0.0436454700777605*G0_1_1 - 0.0338921101724905*G0_1_2 - 0.00649136662591485*G0_2_1 - 0.00352295274170266*G0_2_2; A[1630] = -0.00939454064454107*G0_0_1 - 0.0377738821749247*G0_0_2 - 0.0155923278753142*G0_1_1 - 0.0188869410874628*G0_1_2 + 0.00949240044292055*G0_2_1 + 0.018984800885842*G0_2_2; A[1631] = 0.00254435475789694*G0_0_1 + 0.0142875305635731*G0_0_2 + 0.00254435475789687*G0_1_1 + 0.00844856259352884*G0_1_2 - 0.00329461321214729*G0_2_1 - 0.0292600797158083*G0_2_2; A[1632] = 0.0439716694056962*G0_0_0 - 0.000685018588664346*G0_0_2 - 0.0845508658008653*G0_1_0 - 0.0429604514890971*G0_1_2 - 0.0422754329004329*G0_2_0 - 0.0429604514890969*G0_2_2; A[1633] = -0.0436454700777609*G0_0_0 - 0.0338921101724924*G0_0_2 - 0.0808321934624006*G0_1_0 - 0.108232937008977*G0_1_2 - 0.00649136662591436*G0_2_0 - 0.00352295274170252*G0_2_2; A[1634] = -0.015592327875314*G0_0_0 - 0.0188869410874615*G0_0_2 - 0.00939454064454102*G0_1_0 - 0.0377738821749243*G0_1_2 + 0.00949240044292105*G0_2_0 + 0.0189848008858424*G0_2_2; A[1635] = 0.00254435475789684*G0_0_0 + 0.0084485625935283*G0_0_2 + 0.00254435475789687*G0_1_0 + 0.014287530563573*G0_1_2 - 0.00329461321214729*G0_2_0 - 0.029260079715808*G0_2_2; A[1636] = 0.1273155976932*G0_0_0 - 0.000685018588664421*G0_0_1 - 0.00704590548340577*G0_1_0 - 0.0429604514890972*G0_1_1 - 0.0493213383838382*G0_2_0 - 0.0429604514890972*G0_2_1; A[1637] = -0.166948816037356*G0_0_0 - 0.00616516729797969*G0_0_1 + 0.0838658472122008*G0_1_0 + 0.182410664181496*G0_1_1 + 0.167731694424401*G0_2_0 + 0.0777006799142214*G0_2_1; A[1638] = 0.182410664181495*G0_0_0 + 0.0838658472122002*G0_0_1 - 0.00616516729797989*G0_1_0 - 0.166948816037357*G0_1_1 + 0.0777006799142206*G0_2_0 + 0.1677316944244*G0_2_1; A[1639] = -0.0429604514890977*G0_0_0 - 0.00704590548340645*G0_0_1 - 0.000685018588664785*G0_1_0 + 0.127315597693201*G0_1_1 - 0.0429604514890964*G0_2_0 - 0.0493213383838373*G0_2_1; A[1640] = 0.00658922642429607*G0_0_0 + 0.00658922642429616*G0_0_1 + 0.00329461321214792*G0_0_2 + 0.00658922642429649*G0_1_0 + 0.00658922642429657*G0_1_1 + 0.0032946132121484*G0_1_2 + 0.00329461321214866*G0_2_0 + 0.00329461321214877*G0_2_1; A[1641] = 0.00450155072550854*G0_0_0 + 0.00450155072550862*G0_0_1 + 0.00257697469069003*G0_0_2 + 0.00450155072550876*G0_1_0 + 0.00450155072550874*G0_1_1 + 0.00257697469068951*G0_1_2 + 0.00257697469068916*G0_2_0 + 0.00257697469068909*G0_2_1; A[1642] = -0.0105036183595211*G0_0_0 - 0.0105036183595213*G0_0_1 + 0.00257697469068973*G0_0_2 - 0.0105036183595211*G0_1_0 - 0.0105036183595211*G0_1_1 + 0.00257697469068996*G0_1_2 + 0.00257697469069056*G0_2_0 + 0.00257697469069059*G0_2_1; A[1643] = -0.0025443547578969*G0_0_0 - 0.00254435475789687*G0_0_1 + 0.00329461321214797*G0_0_2 - 0.00254435475789682*G0_1_0 - 0.00254435475789674*G0_1_1 + 0.00329461321214815*G0_1_2 + 0.00329461321214731*G0_2_0 + 0.00329461321214734*G0_2_1; A[1644] = 0.0292600797158086*G0_0_0 + 0.0259654665036606*G0_0_1 + 0.0292600797158086*G0_0_2 + 0.0259654665036611*G0_1_0 + 0.0226708532915129*G0_1_1 + 0.0259654665036611*G0_1_2 + 0.0292600797158089*G0_2_0 + 0.0259654665036604*G0_2_1 + 0.029260079715809*G0_2_2; A[1645] = -0.0189848008858422*G0_0_0 - 0.00949240044292097*G0_0_1 - 0.0189848008858423*G0_0_2 - 0.00949240044292204*G0_1_0 - 0.000652398655871055*G0_1_1 - 0.00949240044292187*G0_1_2 - 0.018984800885843*G0_2_0 - 0.00949240044292102*G0_2_1 - 0.018984800885843*G0_2_2; A[1646] = 0.00352295274170183*G0_0_0 - 0.00296841388421278*G0_0_1 + 0.00352295274170181*G0_0_2 - 0.00296841388421244*G0_1_0 - 0.000652398655870814*G0_1_1 - 0.00296841388421258*G0_1_2 + 0.0035229527417034*G0_2_0 - 0.00296841388421242*G0_2_1 + 0.00352295274170335*G0_2_2; A[1647] = 0.0429604514890974*G0_0_0 + 0.00068501858866456*G0_0_1 + 0.0429604514890975*G0_0_2 + 0.000685018588664604*G0_1_0 + 0.022670853291513*G0_1_1 + 0.000685018588664741*G0_1_2 + 0.0429604514890962*G0_2_0 + 0.000685018588664364*G0_2_1 + 0.0429604514890962*G0_2_2; A[1648] = 0.0226708532915127*G0_0_0 + 0.0259654665036609*G0_0_1 + 0.0259654665036607*G0_0_2 + 0.0259654665036609*G0_1_0 + 0.0292600797158089*G0_1_1 + 0.029260079715809*G0_1_2 + 0.0259654665036604*G0_2_0 + 0.0292600797158091*G0_2_1 + 0.0292600797158092*G0_2_2; A[1649] = -0.000652398655870769*G0_0_0 - 0.0094924004429211*G0_0_1 - 0.00949240044292096*G0_0_2 - 0.00949240044292094*G0_1_0 - 0.0189848008858421*G0_1_1 - 0.0189848008858421*G0_1_2 - 0.00949240044292081*G0_2_0 - 0.0189848008858423*G0_2_1 - 0.0189848008858423*G0_2_2; A[1650] = -0.000652398655870923*G0_0_0 - 0.00296841388421264*G0_0_1 - 0.0029684138842127*G0_0_2 - 0.00296841388421298*G0_1_0 + 0.00352295274170308*G0_1_1 + 0.00352295274170309*G0_1_2 - 0.00296841388421263*G0_2_0 + 0.003522952741703*G0_2_1 + 0.00352295274170293*G0_2_2; A[1651] = 0.0226708532915127*G0_0_0 + 0.00068501858866446*G0_0_1 + 0.000685018588664462*G0_0_2 + 0.000685018588664582*G0_1_0 + 0.0429604514890971*G0_1_1 + 0.0429604514890971*G0_1_2 + 0.000685018588664364*G0_2_0 + 0.042960451489097*G0_2_1 + 0.042960451489097*G0_2_2; A[1652] = -0.268135847562928*G0_0_0 - 0.0737210481134094*G0_0_1 - 0.0459941052388972*G0_0_2 + 0.180714427676233*G0_1_0 - 0.20941996853455*G0_1_1 + 0.0812236326559231*G0_1_2 + 0.0225077536275461*G0_2_0 - 0.104709984267275*G0_2_1 - 0.0234863516113517*G0_2_2; A[1653] = 0.72611970398428*G0_0_0 + 0.270093043530542*G0_0_1 + 0.270093043530541*G0_0_2 + 0.270093043530542*G0_1_0 + 0.726119703984282*G0_1_1 + 0.270093043530542*G0_1_2 + 0.270093043530541*G0_2_0 + 0.270093043530542*G0_2_1 + 0.540186087061082*G0_2_2; A[1654] = -0.209419968534549*G0_0_0 + 0.180714427676232*G0_0_1 + 0.0812236326559217*G0_0_2 - 0.0737210481134067*G0_1_0 - 0.268135847562927*G0_1_1 - 0.0459941052388963*G0_1_2 - 0.104709984267273*G0_2_0 + 0.022507753627546*G0_2_1 - 0.0234863516113498*G0_2_2; A[1655] = 0.0655660649150221*G0_0_0 - 0.0748627457611823*G0_0_1 + 0.027890042538481*G0_0_2 + 0.0278900425384789*G0_1_0 - 0.149725491522365*G0_1_1 + 0.177126235068944*G0_1_2 - 0.0748627457611819*G0_2_0 - 0.0283793415303812*G0_2_1 - 0.149725491522363*G0_2_2; A[1656] = -0.149725491522366*G0_0_0 + 0.0278900425384781*G0_0_1 + 0.177126235068944*G0_0_2 - 0.0748627457611831*G0_1_0 + 0.0655660649150211*G0_1_1 + 0.027890042538481*G0_1_2 - 0.0283793415303846*G0_2_0 - 0.0748627457611847*G0_2_1 - 0.149725491522366*G0_2_2; A[1657] = -0.0137003717732882*G0_0_0 - 0.0198981590040612*G0_0_1 - 0.085138024591151*G0_0_2 - 0.0198981590040614*G0_1_0 - 0.0137003717732879*G0_1_1 - 0.0851380245911513*G0_1_2 + 0.012721773789482*G0_2_0 + 0.0127217737894826*G0_2_1 + 0.113517366121531*G0_2_2; A[1658] = -0.0254435475789649*G0_0_0 - 0.0241387502672229*G0_0_1 - 0.0127217737894825*G0_0_2 - 0.0241387502672233*G0_1_0 - 0.0228339529554823*G0_1_1 - 0.012069375133612*G0_1_2 - 0.0127217737894821*G0_2_0 - 0.0120693751336122*G0_2_1; A[1659] = 0.0567586830607661*G0_0_0 + 0.028379341530383*G0_0_1 + 0.0283793415303847*G0_0_2 + 0.0283793415303832*G0_1_0 - 0.00489298991903052*G0_1_1 + 0.0141896707651932*G0_1_2 + 0.0283793415303826*G0_2_0 + 0.014189670765192*G0_2_1; A[1660] = 0.209419968534549*G0_0_0 + 0.0737210481134091*G0_0_1 + 0.104709984267274*G0_0_2 + 0.0737210481134068*G0_1_0 - 0.0228339529554804*G0_1_1 + 0.0368605240567028*G0_1_2 + 0.104709984267273*G0_2_0 + 0.0368605240567038*G0_2_1; A[1661] = -0.0166361657247059*G0_0_0 + 0.00146789697571112*G0_0_1 - 0.0181040627004162*G0_0_2 + 0.00146789697571068*G0_1_0 + 0.0195719596761277*G0_1_1 - 0.0102752788299657*G0_1_2 - 0.0181040627004157*G0_2_0 - 0.0102752788299649*G0_2_1; A[1662] = 0.149725491522365*G0_0_0 + 0.07486274576118*G0_0_1 + 0.0283793415303828*G0_0_2 + 0.0748627457611832*G0_1_0 + 0.0195719596761242*G0_1_1 + 0.0141896707651923*G0_1_2 + 0.0283793415303845*G0_2_0 + 0.0141896707651908*G0_2_1; A[1663] = 0.013700371773288*G0_0_0 + 0.0198981590040624*G0_0_1 - 0.0127217737894832*G0_0_2 + 0.019898159004061*G0_1_0 + 0.0260959462348353*G0_1_1 - 0.0120693751336129*G0_1_2 - 0.0127217737894822*G0_2_0 - 0.0120693751336111*G0_2_1; A[1664] = -0.022833952955481*G0_0_0 - 0.0241387502672228*G0_0_1 - 0.0120693751336121*G0_0_2 - 0.0241387502672233*G0_1_0 - 0.0254435475789645*G0_1_1 - 0.012721773789483*G0_1_2 - 0.0120693751336116*G0_2_0 - 0.0127217737894816*G0_2_1; A[1665] = -0.00489298991903126*G0_0_0 + 0.0283793415303827*G0_0_1 + 0.0141896707651914*G0_0_2 + 0.0283793415303844*G0_1_0 + 0.0567586830607674*G0_1_1 + 0.0283793415303825*G0_1_2 + 0.0141896707651913*G0_2_0 + 0.0283793415303838*G0_2_1; A[1666] = -0.02283395295548*G0_0_0 + 0.0737210481134095*G0_0_1 + 0.0368605240567049*G0_0_2 + 0.0737210481134075*G0_1_0 + 0.20941996853455*G0_1_1 + 0.104709984267274*G0_1_2 + 0.0368605240567044*G0_2_0 + 0.104709984267275*G0_2_1; A[1667] = 0.0195719596761266*G0_0_0 + 0.00146789697570975*G0_0_1 - 0.0102752788299654*G0_0_2 + 0.00146789697570909*G0_1_0 - 0.0166361657247075*G0_1_1 - 0.0181040627004158*G0_1_2 - 0.0102752788299653*G0_2_0 - 0.018104062700416*G0_2_1; A[1668] = 0.0195719596761256*G0_0_0 + 0.0748627457611825*G0_0_1 + 0.0141896707651914*G0_0_2 + 0.0748627457611829*G0_1_0 + 0.149725491522365*G0_1_1 + 0.028379341530384*G0_1_2 + 0.0141896707651907*G0_2_0 + 0.0283793415303813*G0_2_1; A[1669] = 0.0260959462348353*G0_0_0 + 0.019898159004061*G0_0_1 - 0.0120693751336121*G0_0_2 + 0.019898159004062*G0_1_0 + 0.0137003717732879*G0_1_1 - 0.0127217737894833*G0_1_2 - 0.0120693751336116*G0_2_0 - 0.0127217737894827*G0_2_1; A[1670] = -0.0880738185425675*G0_0_0 - 0.088726217198439*G0_0_1 - 0.10079559233205*G0_0_2 - 0.0887262171984383*G0_1_0 - 0.088073818542568*G0_1_1 - 0.10079559233205*G0_1_2 - 0.100795592332049*G0_2_0 - 0.10079559233205*G0_2_1 - 0.113517366121531*G0_2_2; A[1671] = 0.0195719596761259*G0_0_0 + 0.0606730749959908*G0_0_1 + 0.0748627457611819*G0_0_2 + 0.0606730749959905*G0_1_0 + 0.0929668084615986*G0_1_1 + 0.121346149991984*G0_1_2 + 0.0748627457611814*G0_2_0 + 0.121346149991981*G0_2_1 + 0.149725491522365*G0_2_2; A[1672] = -0.0880738185425675*G0_0_0 + 0.00913358118219258*G0_0_1 + 0.0459941052388971*G0_0_2 + 0.00913358118219224*G0_1_0 - 0.185933616923199*G0_1_1 - 0.0812236326559233*G0_1_2 + 0.0459941052388967*G0_2_0 - 0.0812236326559238*G0_2_1 + 0.0234863516113515*G0_2_2; A[1673] = 0.0929668084615987*G0_0_0 + 0.0606730749959906*G0_0_1 + 0.12134614999198*G0_0_2 + 0.0606730749959914*G0_1_0 + 0.0195719596761258*G0_1_1 + 0.0748627457611822*G0_1_2 + 0.121346149991982*G0_2_0 + 0.0748627457611827*G0_2_1 + 0.149725491522364*G0_2_2; A[1674] = 0.0929668084615994*G0_0_0 - 0.13504652176527*G0_0_1 - 0.27009304353054*G0_0_2 - 0.13504652176527*G0_1_0 + 0.0929668084615996*G0_1_1 - 0.270093043530542*G0_1_2 - 0.27009304353054*G0_2_0 - 0.27009304353054*G0_2_1 - 0.540186087061081*G0_2_2; A[1675] = -0.185933616923197*G0_0_0 + 0.00913358118219372*G0_0_1 - 0.0812236326559222*G0_0_2 + 0.00913358118219241*G0_1_0 - 0.0880738185425673*G0_1_1 + 0.0459941052388959*G0_1_2 - 0.0812236326559239*G0_2_0 + 0.0459941052388955*G0_2_1 + 0.0234863516113496*G0_2_2; A[1676] = 0.146789697570947*G0_0_0 + 0.141896707651916*G0_0_1 + 0.0929668084616005*G0_0_2 + 0.141896707651916*G0_1_0 + 0.146789697570947*G0_1_1 + 0.0929668084615992*G0_1_2 + 0.0929668084616*G0_2_0 + 0.0929668084615979*G0_2_1; A[1677] = 0.146789697570947*G0_0_0 - 0.298472385060924*G0_0_1 - 0.102752788299663*G0_0_2 - 0.298472385060926*G0_1_0 - 0.782878387045049*G0_1_1 - 0.298472385060927*G0_1_2 - 0.102752788299664*G0_2_0 - 0.298472385060925*G0_2_1; A[1678] = -0.782878387045047*G0_0_0 - 0.298472385060925*G0_0_1 - 0.298472385060924*G0_0_2 - 0.298472385060925*G0_1_0 + 0.146789697570943*G0_1_1 - 0.102752788299663*G0_1_2 - 0.298472385060924*G0_2_0 - 0.102752788299663*G0_2_1; A[1679] = -0.0489298991903158*G0_0_0 - 0.0293579395141874*G0_0_1 + 0.0929668084616001*G0_0_2 - 0.0293579395141895*G0_1_0 - 0.0489298991903127*G0_1_1 + 0.0929668084616013*G0_1_2 + 0.0929668084615977*G0_2_0 + 0.0929668084616012*G0_2_1; A[1680] = -0.013742125287264*G0_0_0 - 0.0137421252872641*G0_0_1 - 0.0137421252872641*G0_0_2 - 0.0137421252872638*G0_1_0 - 0.0137421252872639*G0_1_1 - 0.0137421252872639*G0_1_2 - 0.0137421252872641*G0_2_0 - 0.0137421252872641*G0_2_1 - 0.0137421252872641*G0_2_2; A[1681] = 0.0137421252872641*G0_0_0 - 0.00517743573299118*G0_1_0 - 0.00517743573299106*G0_2_0; A[1682] = 0.014394523943135*G0_0_1 + 0.0479930547204851*G0_1_1 + 0.0143945239431351*G0_2_1; A[1683] = -0.00517743573299118*G0_0_2 - 0.00517743573299111*G0_1_2 + 0.0137421252872641*G0_2_2; A[1684] = 0.192588083213083*G0_0_1 + 0.124738623002512*G0_0_2 - 0.0644569872000418*G0_1_1 + 0.0284445813959708*G0_1_2 + 0.096294041606541*G0_2_1 + 0.124738623002511*G0_2_2; A[1685] = 0.0109602974186291*G0_0_1 + 0.146659217839771*G0_0_2 + 0.132306447410612*G0_1_1 + 0.0733296089198848*G0_1_2 - 0.0623693115012554*G0_2_1 - 0.124738623002511*G0_2_2; A[1686] = 0.00182671623643954*G0_0_1 - 0.082332710370903*G0_0_2 - 0.0510175748891019*G0_1_1 - 0.0463855444324182*G0_1_2 + 0.0377738821749241*G0_2_1 + 0.127087258163647*G0_2_2; A[1687] = 0.0118736555368494*G0_0_1 + 0.0477555816097473*G0_0_2 + 0.0118736555368498*G0_1_1 + 0.0264873854283569*G0_1_2 - 0.00939454064454079*G0_2_1 - 0.0641307878721074*G0_2_2; A[1688] = -0.018789081289081*G0_0_0 - 0.00939454064454079*G0_0_2 + 0.0425363923627806*G0_1_0 + 0.0118736555368498*G0_1_2 + 0.0212681961813897*G0_2_0 + 0.0118736555368495*G0_2_2; A[1689] = 0.0148746893538553*G0_0_0 + 0.0149399292194428*G0_0_2 + 0.0403182369328194*G0_1_0 + 0.0540186087061075*G0_1_2 + 0.00123955744615501*G0_2_0 + 0.0011743175805679*G0_2_2; A[1690] = 0.00117431758056766*G0_0_0 + 0.00123955744615485*G0_0_2 + 0.0540186087061083*G0_1_0 + 0.0403182369328204*G0_1_2 + 0.0149399292194429*G0_2_0 + 0.0148746893538558*G0_2_2; A[1691] = 0.0118736555368492*G0_0_0 + 0.0212681961813897*G0_0_2 + 0.0118736555368496*G0_1_0 + 0.0425363923627803*G0_1_2 - 0.00939454064454094*G0_2_0 - 0.0187890812890816*G0_2_2; A[1692] = -0.064130787872107*G0_0_0 - 0.00939454064454083*G0_0_1 + 0.0264873854283573*G0_1_0 + 0.0118736555368497*G0_1_1 + 0.0477555816097469*G0_2_0 + 0.0118736555368492*G0_2_1; A[1693] = 0.127087258163647*G0_0_0 + 0.0377738821749244*G0_0_1 - 0.046385544432418*G0_1_0 - 0.0510175748891013*G0_1_1 - 0.0823327103709021*G0_2_0 + 0.00182671623643963*G0_2_1; A[1694] = -0.124738623002512*G0_0_0 - 0.0623693115012558*G0_0_1 + 0.0733296089198849*G0_1_0 + 0.132306447410612*G0_1_1 + 0.14665921783977*G0_2_0 + 0.0109602974186302*G0_2_1; A[1695] = 0.124738623002512*G0_0_0 + 0.0962940416065418*G0_0_1 + 0.0284445813959708*G0_1_0 - 0.0644569872000419*G0_1_1 + 0.124738623002511*G0_2_0 + 0.192588083213081*G0_2_1; A[1696] = 0.0187890812890808*G0_0_0 + 0.0187890812890808*G0_0_1 + 0.0093945406445406*G0_0_2 + 0.0187890812890805*G0_1_0 + 0.0187890812890806*G0_1_1 + 0.00939454064454017*G0_1_2 + 0.00939454064454046*G0_2_0 + 0.00939454064454049*G0_2_1; A[1697] = -0.0148746893538559*G0_0_0 - 0.0148746893538559*G0_0_1 + 6.52398655870016e-05*G0_0_2 - 0.014874689353856*G0_1_0 - 0.014874689353856*G0_1_1 + 6.52398655872774e-05*G0_1_2 + 6.5239865586761e-05*G0_2_0 + 6.52398655868126e-05*G0_2_1; A[1698] = -0.00117431758056754*G0_0_0 - 0.00117431758056749*G0_0_1 + 6.52398655874975e-05*G0_0_2 - 0.00117431758056711*G0_1_0 - 0.0011743175805671*G0_1_1 + 6.52398655875675e-05*G0_1_2 + 6.52398655871517e-05*G0_2_0 + 6.52398655871336e-05*G0_2_1; A[1699] = -0.0118736555368494*G0_0_0 - 0.0118736555368494*G0_0_1 + 0.0093945406445403*G0_0_2 - 0.0118736555368497*G0_1_0 - 0.0118736555368498*G0_1_1 + 0.00939454064454001*G0_1_2 + 0.00939454064454082*G0_2_0 + 0.00939454064454078*G0_2_1; A[1700] = 0.0641307878721065*G0_0_0 + 0.0547362472275662*G0_0_1 + 0.0641307878721066*G0_0_2 + 0.0547362472275656*G0_1_0 + 0.0453417065830254*G0_1_1 + 0.0547362472275657*G0_1_2 + 0.0641307878721061*G0_2_0 + 0.0547362472275662*G0_2_1 + 0.0641307878721064*G0_2_2; A[1701] = -0.127087258163646*G0_0_0 - 0.0893133759887224*G0_0_1 - 0.127087258163646*G0_0_2 - 0.0893133759887215*G0_1_0 - 0.0665446628988288*G0_1_1 - 0.0893133759887216*G0_1_2 - 0.127087258163645*G0_2_0 - 0.089313375988722*G0_2_1 - 0.127087258163645*G0_2_2; A[1702] = 0.124738623002511*G0_0_0 + 0.0623693115012555*G0_0_1 + 0.124738623002511*G0_0_2 + 0.0623693115012551*G0_1_0 + 0.0476251018785737*G0_1_1 + 0.0623693115012552*G0_1_2 + 0.12473862300251*G0_2_0 + 0.062369311501255*G0_2_1 + 0.12473862300251*G0_2_2; A[1703] = -0.124738623002512*G0_0_0 - 0.0284445813959704*G0_0_1 - 0.124738623002512*G0_0_2 - 0.0284445813959708*G0_1_0 - 0.0606730749959916*G0_1_1 - 0.0284445813959709*G0_1_2 - 0.124738623002511*G0_2_0 - 0.0284445813959703*G0_2_1 - 0.124738623002511*G0_2_2; A[1704] = 0.0093945406445402*G0_0_1 + 0.00939454064454021*G0_0_2 + 0.0093945406445401*G0_1_0 + 0.0187890812890806*G0_1_1 + 0.0187890812890805*G0_1_2 + 0.0093945406445405*G0_2_0 + 0.0187890812890806*G0_2_1 + 0.0187890812890806*G0_2_2; A[1705] = 6.52398655872312e-05*G0_0_1 + 6.52398655871416e-05*G0_0_2 + 6.52398655874685e-05*G0_1_0 - 0.0148746893538558*G0_1_1 - 0.0148746893538558*G0_1_2 + 6.52398655873144e-05*G0_2_0 - 0.0148746893538556*G0_2_1 - 0.0148746893538556*G0_2_2; A[1706] = 6.52398655872142e-05*G0_0_1 + 6.52398655872343e-05*G0_0_2 + 6.52398655868331e-05*G0_1_0 - 0.00117431758056766*G0_1_1 - 0.00117431758056774*G0_1_2 + 6.52398655869951e-05*G0_2_0 - 0.00117431758056734*G0_2_1 - 0.0011743175805674*G0_2_2; A[1707] = 0.00939454064454065*G0_0_1 + 0.00939454064454069*G0_0_2 + 0.00939454064454073*G0_1_0 - 0.0118736555368498*G0_1_1 - 0.0118736555368498*G0_1_2 + 0.00939454064454051*G0_2_0 - 0.0118736555368495*G0_2_1 - 0.0118736555368493*G0_2_2; A[1708] = 0.105688582251081*G0_0_0 + 0.0300103381700598*G0_0_1 + 0.052844291125541*G0_0_2 - 0.0743734467692801*G0_1_0 + 0.10568858225108*G0_1_1 + 0.00065239865587097*G0_1_2 + 0.000652398655872107*G0_2_0 + 0.0528442911255403*G0_2_1 + 0.053496689781411*G0_2_2; A[1709] = -0.209419968534549*G0_0_0 - 0.0737210481134067*G0_0_1 - 0.104709984267273*G0_0_2 + 0.180714427676232*G0_1_0 - 0.268135847562927*G0_1_1 + 0.022507753627546*G0_1_2 + 0.0812236326559217*G0_2_0 - 0.0459941052388963*G0_2_1 - 0.0234863516113498*G0_2_2; A[1710] = 0.542795681684567*G0_0_0 + 0.271397840842282*G0_0_1 + 0.271397840842284*G0_0_2 + 0.271397840842282*G0_1_0 + 0.647179466623903*G0_1_1 + 0.271397840842282*G0_1_2 + 0.271397840842284*G0_2_0 + 0.271397840842282*G0_2_1 + 0.542795681684564*G0_2_2; A[1711] = -0.0137003717732881*G0_0_0 + 0.0127217737894813*G0_0_1 - 0.0198981590040624*G0_0_2 - 0.0851380245911487*G0_1_0 + 0.113517366121531*G0_1_1 - 0.0851380245911494*G0_1_2 - 0.0198981590040631*G0_2_0 + 0.0127217737894821*G0_2_1 - 0.0137003717732892*G0_2_2; A[1712] = -0.0234863516113507*G0_0_0 - 0.0459941052388944*G0_0_1 + 0.0812236326559233*G0_0_2 + 0.0225077536275454*G0_1_0 - 0.268135847562927*G0_1_1 + 0.180714427676231*G0_1_2 - 0.104709984267274*G0_2_0 - 0.0737210481134087*G0_2_1 - 0.209419968534551*G0_2_2; A[1713] = 0.0534966897814117*G0_0_0 + 0.0528442911255398*G0_0_1 + 0.000652398655871853*G0_0_2 + 0.00065239865587058*G0_1_0 + 0.105688582251081*G0_1_1 - 0.0743734467692792*G0_1_2 + 0.0528442911255403*G0_2_0 + 0.0300103381700589*G0_2_1 + 0.105688582251082*G0_2_2; A[1714] = -0.105688582251081*G0_0_0 - 0.0756782440810208*G0_0_1 - 0.0528442911255404*G0_0_2 - 0.07567824408102*G0_1_0 - 0.0456679059109596*G0_1_1 - 0.0378391220405097*G0_1_2 - 0.0528442911255406*G0_2_0 - 0.0378391220405102*G0_2_1; A[1715] = 0.209419968534551*G0_0_0 + 0.135698920421142*G0_0_1 + 0.104709984267274*G0_0_2 + 0.135698920421141*G0_1_0 + 0.0391439193522518*G0_1_1 + 0.0678494602105694*G0_1_2 + 0.104709984267276*G0_2_0 + 0.0678494602105705*G0_2_1; A[1716] = -0.542795681684567*G0_0_0 - 0.271397840842285*G0_0_1 - 0.271397840842283*G0_0_2 - 0.271397840842282*G0_1_0 + 0.0521918924696689*G0_1_1 - 0.13569892042114*G0_1_2 - 0.271397840842284*G0_2_0 - 0.135698920421142*G0_2_1; A[1717] = 0.0137003717732856*G0_0_0 + 0.026422145562769*G0_0_1 - 0.00619778723077408*G0_0_2 + 0.026422145562768*G0_1_0 + 0.0391439193522508*G0_1_1 - 0.00554538857490313*G0_1_2 - 0.00619778723077394*G0_2_0 - 0.00554538857490227*G0_2_1; A[1718] = 0.0234863516113514*G0_0_0 - 0.0225077536275426*G0_0_1 + 0.104709984267275*G0_0_2 - 0.0225077536275452*G0_1_0 - 0.156575677409007*G0_1_1 + 0.0678494602105698*G0_1_2 + 0.104709984267274*G0_2_0 + 0.0678494602105706*G0_2_1; A[1719] = -0.0534966897814118*G0_0_0 - 0.000652398655872*G0_0_1 - 0.0528442911255397*G0_0_2 - 0.00065239865587045*G0_1_0 + 0.0521918924696691*G0_1_1 - 0.0378391220405097*G0_1_2 - 0.0528442911255404*G0_2_0 - 0.0378391220405113*G0_2_1; A[1720] = -0.0300103381700608*G0_0_1 - 0.0150051690850298*G0_0_2 - 0.0300103381700597*G0_1_0 - 0.0600206763401204*G0_1_1 - 0.0300103381700597*G0_1_2 - 0.0150051690850302*G0_2_0 - 0.0300103381700608*G0_2_1; A[1721] = -0.00130479731174017*G0_0_1 - 0.000652398655870451*G0_0_2 - 0.00130479731174144*G0_1_0 - 0.0254435475789639*G0_1_1 - 0.0127217737894819*G0_1_2 - 0.000652398655870142*G0_2_0 - 0.0127217737894815*G0_2_1; A[1722] = -0.0300103381700599*G0_0_1 - 0.0150051690850302*G0_0_2 - 0.0300103381700602*G0_1_0 - 0.105688582251081*G0_1_1 - 0.05284429112554*G0_1_2 - 0.01500516908503*G0_2_0 - 0.0528442911255402*G0_2_1; A[1723] = -0.0127217737894837*G0_0_1 - 0.000652398655871104*G0_0_2 - 0.012721773789482*G0_1_0 - 0.0254435475789651*G0_1_1 - 0.00130479731174182*G0_1_2 - 0.000652398655870527*G0_2_0 - 0.0013047973117425*G0_2_1; A[1724] = -0.0127217737894813*G0_0_1 - 0.000652398655871523*G0_0_2 - 0.0127217737894816*G0_1_0 - 0.113517366121531*G0_1_1 - 0.0127217737894826*G0_1_2 - 0.000652398655871369*G0_2_0 - 0.0127217737894819*G0_2_1; A[1725] = -0.0528442911255399*G0_0_1 - 0.0150051690850287*G0_0_2 - 0.052844291125541*G0_1_0 - 0.105688582251081*G0_1_1 - 0.0300103381700594*G0_1_2 - 0.01500516908503*G0_2_0 - 0.0300103381700591*G0_2_1; A[1726] = -0.0378391220405098*G0_0_1 - 0.0528442911255406*G0_0_2 - 0.0378391220405097*G0_1_0 - 0.0456679059109597*G0_1_1 - 0.0756782440810203*G0_1_2 - 0.0528442911255395*G0_2_0 - 0.0756782440810197*G0_2_1 - 0.10568858225108*G0_2_2; A[1727] = -0.00554538857490317*G0_0_1 - 0.00619778723077287*G0_0_2 - 0.0055453885749023*G0_1_0 + 0.039143919352252*G0_1_1 + 0.0264221455627697*G0_1_2 - 0.00619778723077374*G0_2_0 + 0.0264221455627691*G0_2_1 + 0.0137003717732876*G0_2_2; A[1728] = -0.0378391220405114*G0_0_1 - 0.0528442911255414*G0_0_2 - 0.0378391220405108*G0_1_0 + 0.0521918924696692*G0_1_1 - 0.000652398655871254*G0_1_2 - 0.0528442911255398*G0_2_0 - 0.000652398655871654*G0_2_1 - 0.0534966897814114*G0_2_2; A[1729] = 0.0678494602105706*G0_0_1 + 0.104709984267275*G0_0_2 + 0.067849460210569*G0_1_0 + 0.0391439193522513*G0_1_1 + 0.13569892042114*G0_1_2 + 0.104709984267273*G0_2_0 + 0.13569892042114*G0_2_1 + 0.209419968534549*G0_2_2; A[1730] = 0.0678494602105716*G0_0_1 + 0.104709984267274*G0_0_2 + 0.0678494602105706*G0_1_0 - 0.156575677409008*G0_1_1 - 0.0225077536275455*G0_1_2 + 0.104709984267274*G0_2_0 - 0.0225077536275441*G0_2_1 + 0.0234863516113504*G0_2_2; A[1731] = -0.135698920421143*G0_0_1 - 0.271397840842284*G0_0_2 - 0.13569892042114*G0_1_0 + 0.0521918924696697*G0_1_1 - 0.271397840842282*G0_1_2 - 0.271397840842281*G0_2_0 - 0.271397840842282*G0_2_1 - 0.542795681684564*G0_2_2; A[1732] = 0.0750258454251495*G0_0_1 + 0.0260959462348318*G0_0_2 + 0.0750258454251478*G0_1_0 + 0.19571959676126*G0_1_1 + 0.0750258454251475*G0_1_2 + 0.0260959462348348*G0_2_0 + 0.0750258454251521*G0_2_1; A[1733] = 0.0750258454251472*G0_0_1 + 0.0260959462348355*G0_0_2 + 0.075025845425152*G0_1_0 + 0.293579395141891*G0_1_1 + 0.0587158790283796*G0_1_2 + 0.0260959462348334*G0_2_0 + 0.0587158790283778*G0_2_1; A[1734] = -0.316413348097371*G0_0_1 - 0.185933616923199*G0_0_2 - 0.316413348097373*G0_1_0 - 0.782878387045044*G0_1_1 - 0.316413348097372*G0_1_2 - 0.185933616923198*G0_2_0 - 0.316413348097374*G0_2_1; A[1735] = 0.058715879028378*G0_0_1 + 0.0260959462348366*G0_0_2 + 0.0587158790283802*G0_1_0 + 0.293579395141892*G0_1_1 + 0.0750258454251521*G0_1_2 + 0.0260959462348368*G0_2_0 + 0.0750258454251511*G0_2_1; A[1736] = -0.00946499969937515*G0_0_0 - 0.00946499969937512*G0_0_1 - 0.00946499969937511*G0_0_2 - 0.00946499969937498*G0_1_0 - 0.009464999699375*G0_1_1 - 0.00946499969937495*G0_1_2 - 0.00946499969937518*G0_2_0 - 0.00946499969937513*G0_2_1 - 0.00946499969937513*G0_2_2; A[1737] = -0.0345719095719092*G0_0_0 - 0.00472467106581681*G0_1_0 - 0.00472467106581688*G0_2_0; A[1738] = -0.0022781761063012*G0_0_1 + 0.00946499969937457*G0_1_1 - 0.00227817610630127*G0_2_1; A[1739] = -0.00472467106581698*G0_0_2 - 0.0047246710658167*G0_1_2 - 0.0345719095719093*G0_2_2; A[1740] = 0.0142875305635719*G0_0_1 + 0.00254435475789566*G0_0_2 - 0.0292600797158085*G0_1_1 - 0.00329461321214807*G0_1_2 + 0.00844856259352771*G0_2_1 + 0.00254435475789601*G0_2_2; A[1741] = -0.0377738821749232*G0_0_1 - 0.00939454064453925*G0_0_2 + 0.0189848008858419*G0_1_1 + 0.00949240044292105*G0_1_2 - 0.0188869410874618*G0_2_1 - 0.0155923278753135*G0_2_2; A[1742] = -0.108232937008977*G0_0_1 - 0.0808321934624015*G0_0_2 - 0.00352295274170229*G0_1_1 - 0.00649136662591462*G0_1_2 - 0.0338921101724918*G0_2_1 - 0.0436454700777614*G0_2_2; A[1743] = -0.0429604514890971*G0_0_1 - 0.0845508658008646*G0_0_2 - 0.0429604514890969*G0_1_1 - 0.0422754329004329*G0_1_2 - 0.000685018588664389*G0_2_1 + 0.0439716694056969*G0_2_2; A[1744] = 0.127315597693201*G0_0_0 - 0.000685018588664263*G0_0_2 - 0.0493213383838382*G0_1_0 - 0.042960451489097*G0_1_2 - 0.00704590548340515*G0_2_0 - 0.0429604514890966*G0_2_2; A[1745] = -0.166948816037356*G0_0_0 - 0.00616516729797981*G0_0_2 + 0.167731694424401*G0_1_0 + 0.077700679914221*G0_1_2 + 0.0838658472121997*G0_2_0 + 0.182410664181495*G0_2_2; A[1746] = 0.182410664181496*G0_0_0 + 0.0838658472122011*G0_0_2 + 0.0777006799142213*G0_1_0 + 0.167731694424401*G0_1_2 - 0.00616516729797903*G0_2_0 - 0.166948816037356*G0_2_2; A[1747] = -0.0429604514890972*G0_0_0 - 0.00704590548340534*G0_0_2 - 0.0429604514890968*G0_1_0 - 0.0493213383838378*G0_1_2 - 0.000685018588664367*G0_2_0 + 0.127315597693201*G0_2_2; A[1748] = 0.0439716694056962*G0_0_0 - 0.000685018588664218*G0_0_1 - 0.042275432900433*G0_1_0 - 0.042960451489097*G0_1_1 - 0.084550865800865*G0_2_0 - 0.0429604514890965*G0_2_1; A[1749] = -0.0436454700777612*G0_0_0 - 0.0338921101724927*G0_0_1 - 0.00649136662591477*G0_1_0 - 0.00352295274170276*G0_1_1 - 0.0808321934624007*G0_2_0 - 0.108232937008978*G0_2_1; A[1750] = -0.0155923278753138*G0_0_0 - 0.0188869410874608*G0_0_1 + 0.00949240044292169*G0_1_0 + 0.018984800885843*G0_1_1 - 0.00939454064453995*G0_2_0 - 0.0377738821749229*G0_2_1; A[1751] = 0.00254435475789558*G0_0_0 + 0.0084485625935267*G0_0_1 - 0.00329461321214806*G0_1_0 - 0.0292600797158086*G0_1_1 + 0.00254435475789578*G0_2_0 + 0.0142875305635719*G0_2_1; A[1752] = 0.0292600797158092*G0_0_0 + 0.0292600797158091*G0_0_1 + 0.0259654665036619*G0_0_2 + 0.0292600797158092*G0_1_0 + 0.0292600797158091*G0_1_1 + 0.0259654665036617*G0_1_2 + 0.0259654665036615*G0_2_0 + 0.0259654665036613*G0_2_1 + 0.0226708532915143*G0_2_2; A[1753] = -0.0189848008858428*G0_0_0 - 0.0189848008858424*G0_0_1 - 0.00949240044292227*G0_0_2 - 0.018984800885843*G0_1_0 - 0.018984800885843*G0_1_1 - 0.00949240044292239*G0_1_2 - 0.00949240044292169*G0_2_0 - 0.00949240044292165*G0_2_1 - 0.0006523986558725*G0_2_2; A[1754] = 0.00352295274170269*G0_0_0 + 0.00352295274170249*G0_0_1 - 0.00296841388421213*G0_0_2 + 0.00352295274170358*G0_1_0 + 0.00352295274170355*G0_1_1 - 0.00296841388421156*G0_1_2 - 0.00296841388421186*G0_2_0 - 0.00296841388421189*G0_2_1 - 0.000652398655869812*G0_2_2; A[1755] = 0.0429604514890971*G0_0_0 + 0.0429604514890972*G0_0_1 + 0.000685018588664586*G0_0_2 + 0.0429604514890969*G0_1_0 + 0.0429604514890969*G0_1_1 + 0.000685018588664059*G0_1_2 + 0.000685018588664485*G0_2_0 + 0.000685018588664485*G0_2_1 + 0.0226708532915126*G0_2_2; A[1756] = 0.00658922642429628*G0_0_0 + 0.00329461321214902*G0_0_1 + 0.00658922642429631*G0_0_2 + 0.00329461321214832*G0_1_0 + 0.00329461321214847*G0_1_2 + 0.00658922642429651*G0_2_0 + 0.00329461321214921*G0_2_1 + 0.00658922642429655*G0_2_2; A[1757] = 0.00450155072550864*G0_0_0 + 0.00257697469068891*G0_0_1 + 0.00450155072550848*G0_0_2 + 0.00257697469068966*G0_1_0 + 0.00257697469068942*G0_1_2 + 0.00450155072550859*G0_2_0 + 0.00257697469068884*G0_2_1 + 0.00450155072550834*G0_2_2; A[1758] = -0.0105036183595216*G0_0_0 + 0.00257697469069036*G0_0_1 - 0.0105036183595215*G0_0_2 + 0.00257697469069002*G0_1_0 + 0.00257697469069015*G0_1_2 - 0.0105036183595213*G0_2_0 + 0.00257697469069027*G0_2_1 - 0.0105036183595211*G0_2_2; A[1759] = -0.0025443547578956*G0_0_0 + 0.00329461321214809*G0_0_1 - 0.00254435475789552*G0_0_2 + 0.00329461321214811*G0_1_0 + 0.00329461321214807*G0_1_2 - 0.00254435475789578*G0_2_0 + 0.00329461321214817*G0_2_1 - 0.00254435475789574*G0_2_2; A[1760] = 0.0226708532915136*G0_0_0 + 0.0259654665036607*G0_0_1 + 0.0259654665036607*G0_0_2 + 0.0259654665036613*G0_1_0 + 0.0292600797158088*G0_1_1 + 0.0292600797158089*G0_1_2 + 0.0259654665036618*G0_2_0 + 0.029260079715809*G0_2_1 + 0.029260079715809*G0_2_2; A[1761] = -0.000652398655871817*G0_0_0 - 0.00949240044292137*G0_0_1 - 0.00949240044292135*G0_0_2 - 0.00949240044292198*G0_1_0 - 0.0189848008858428*G0_1_1 - 0.0189848008858428*G0_1_2 - 0.00949240044292217*G0_2_0 - 0.0189848008858427*G0_2_1 - 0.0189848008858425*G0_2_2; A[1762] = -0.000652398655869626*G0_0_0 - 0.00296841388421228*G0_0_1 - 0.00296841388421226*G0_0_2 - 0.0029684138842112*G0_1_0 + 0.00352295274170314*G0_1_1 + 0.00352295274170312*G0_1_2 - 0.00296841388421163*G0_2_0 + 0.00352295274170342*G0_2_1 + 0.0035229527417034*G0_2_2; A[1763] = 0.0226708532915121*G0_0_0 + 0.000685018588664338*G0_0_1 + 0.000685018588664369*G0_0_2 + 0.000685018588663633*G0_1_0 + 0.0429604514890971*G0_1_1 + 0.0429604514890972*G0_1_2 + 0.00068501858866396*G0_2_0 + 0.0429604514890969*G0_2_1 + 0.0429604514890969*G0_2_2; A[1764] = -0.26813584756293*G0_0_0 - 0.0459941052388977*G0_0_1 - 0.0737210481134108*G0_0_2 + 0.0225077536275442*G0_1_0 - 0.0234863516113526*G0_1_1 - 0.104709984267277*G0_1_2 + 0.180714427676231*G0_2_0 + 0.0812236326559224*G0_2_1 - 0.209419968534551*G0_2_2; A[1765] = 0.0655660649150221*G0_0_0 + 0.0278900425384789*G0_0_1 - 0.0748627457611819*G0_0_2 - 0.0748627457611823*G0_1_0 - 0.149725491522365*G0_1_1 - 0.0283793415303812*G0_1_2 + 0.027890042538481*G0_2_0 + 0.177126235068944*G0_2_1 - 0.149725491522363*G0_2_2; A[1766] = -0.0137003717732881*G0_0_0 - 0.0851380245911487*G0_0_1 - 0.0198981590040631*G0_0_2 + 0.0127217737894813*G0_1_0 + 0.113517366121531*G0_1_1 + 0.0127217737894821*G0_1_2 - 0.0198981590040624*G0_2_0 - 0.0851380245911494*G0_2_1 - 0.0137003717732892*G0_2_2; A[1767] = 0.726119703984282*G0_0_0 + 0.270093043530543*G0_0_1 + 0.270093043530542*G0_0_2 + 0.270093043530543*G0_1_0 + 0.540186087061084*G0_1_1 + 0.270093043530542*G0_1_2 + 0.270093043530542*G0_2_0 + 0.270093043530542*G0_2_1 + 0.726119703984282*G0_2_2; A[1768] = -0.149725491522366*G0_0_0 + 0.177126235068941*G0_0_1 + 0.027890042538479*G0_0_2 - 0.0283793415303835*G0_1_0 - 0.149725491522365*G0_1_1 - 0.0748627457611851*G0_1_2 - 0.0748627457611835*G0_2_0 + 0.0278900425384787*G0_2_1 + 0.0655660649150213*G0_2_2; A[1769] = -0.209419968534549*G0_0_0 + 0.0812236326559243*G0_0_1 + 0.180714427676233*G0_0_2 - 0.104709984267274*G0_1_0 - 0.0234863516113507*G0_1_1 + 0.0225077536275476*G0_1_2 - 0.0737210481134087*G0_2_0 - 0.0459941052388958*G0_2_1 - 0.268135847562928*G0_2_2; A[1770] = -0.0254435475789653*G0_0_0 - 0.0127217737894836*G0_0_1 - 0.0241387502672237*G0_0_2 - 0.0127217737894821*G0_1_0 - 0.0120693751336116*G0_1_2 - 0.0241387502672225*G0_2_0 - 0.0120693751336123*G0_2_1 - 0.0228339529554815*G0_2_2; A[1771] = -0.0166361657247046*G0_0_0 - 0.018104062700415*G0_0_1 + 0.00146789697571268*G0_0_2 - 0.0181040627004147*G0_1_0 - 0.0102752788299648*G0_1_2 + 0.00146789697571147*G0_2_0 - 0.010275278829965*G0_2_1 + 0.0195719596761283*G0_2_2; A[1772] = 0.0137003717732883*G0_0_0 - 0.0127217737894825*G0_0_1 + 0.0198981590040606*G0_0_2 - 0.0127217737894812*G0_1_0 - 0.0120693751336108*G0_1_2 + 0.0198981590040624*G0_2_0 - 0.0120693751336118*G0_2_1 + 0.0260959462348344*G0_2_2; A[1773] = 0.0567586830607682*G0_0_0 + 0.0283793415303848*G0_0_1 + 0.0283793415303842*G0_0_2 + 0.0283793415303847*G0_1_0 + 0.014189670765192*G0_1_2 + 0.0283793415303844*G0_2_0 + 0.0141896707651925*G0_2_1 - 0.00489298991903098*G0_2_2; A[1774] = 0.149725491522365*G0_0_0 + 0.0283793415303807*G0_0_1 + 0.0748627457611801*G0_0_2 + 0.0283793415303833*G0_1_0 + 0.0141896707651891*G0_1_2 + 0.0748627457611836*G0_2_0 + 0.0141896707651905*G0_2_1 + 0.0195719596761246*G0_2_2; A[1775] = 0.209419968534549*G0_0_0 + 0.104709984267275*G0_0_1 + 0.073721048113408*G0_0_2 + 0.104709984267275*G0_1_0 + 0.0368605240567046*G0_1_2 + 0.0737210481134085*G0_2_0 + 0.0368605240567038*G0_2_1 - 0.022833952955481*G0_2_2; A[1776] = -0.088073818542568*G0_0_0 - 0.10079559233205*G0_0_1 - 0.0887262171984387*G0_0_2 - 0.10079559233205*G0_1_0 - 0.113517366121531*G0_1_1 - 0.10079559233205*G0_1_2 - 0.0887262171984395*G0_2_0 - 0.10079559233205*G0_2_1 - 0.088073818542568*G0_2_2; A[1777] = 0.0195719596761257*G0_0_0 + 0.0748627457611798*G0_0_1 + 0.0606730749959903*G0_0_2 + 0.0748627457611814*G0_1_0 + 0.149725491522363*G0_1_1 + 0.121346149991981*G0_1_2 + 0.0606730749959912*G0_2_0 + 0.121346149991981*G0_2_1 + 0.0929668084615977*G0_2_2; A[1778] = -0.0880738185425672*G0_0_0 + 0.0459941052388978*G0_0_1 + 0.00913358118219202*G0_0_2 + 0.0459941052388975*G0_1_0 + 0.0234863516113522*G0_1_1 - 0.0812236326559243*G0_1_2 + 0.00913358118219196*G0_2_0 - 0.081223632655923*G0_2_1 - 0.185933616923199*G0_2_2; A[1779] = 0.0929668084615984*G0_0_0 + 0.121346149991982*G0_0_1 + 0.0606730749959907*G0_0_2 + 0.121346149991982*G0_1_0 + 0.149725491522366*G0_1_1 + 0.0748627457611828*G0_1_2 + 0.0606730749959906*G0_2_0 + 0.0748627457611825*G0_2_1 + 0.0195719596761266*G0_2_2; A[1780] = 0.0929668084615999*G0_0_0 - 0.270093043530542*G0_0_1 - 0.13504652176527*G0_0_2 - 0.270093043530541*G0_1_0 - 0.540186087061084*G0_1_1 - 0.27009304353054*G0_1_2 - 0.135046521765269*G0_2_0 - 0.270093043530541*G0_2_1 + 0.0929668084616017*G0_2_2; A[1781] = -0.185933616923199*G0_0_0 - 0.0812236326559244*G0_0_1 + 0.00913358118219228*G0_0_2 - 0.0812236326559249*G0_1_0 + 0.0234863516113503*G0_1_1 + 0.0459941052388958*G0_1_2 + 0.00913358118219068*G0_2_0 + 0.0459941052388955*G0_2_1 - 0.088073818542569*G0_2_2; A[1782] = -0.0228339529554805*G0_0_0 - 0.0120693751336114*G0_0_1 - 0.0241387502672223*G0_0_2 - 0.0120693751336113*G0_1_0 - 0.0127217737894815*G0_1_2 - 0.0241387502672229*G0_2_0 - 0.0127217737894822*G0_2_1 - 0.0254435475789636*G0_2_2; A[1783] = -0.00489298991903258*G0_0_0 + 0.0141896707651913*G0_0_1 + 0.0283793415303808*G0_0_2 + 0.0141896707651907*G0_1_0 + 0.0283793415303819*G0_1_2 + 0.0283793415303829*G0_2_0 + 0.0283793415303831*G0_2_1 + 0.056758683060766*G0_2_2; A[1784] = -0.0228339529554794*G0_0_0 + 0.0368605240567048*G0_0_1 + 0.0737210481134104*G0_0_2 + 0.0368605240567053*G0_1_0 + 0.104709984267276*G0_1_2 + 0.0737210481134086*G0_2_0 + 0.104709984267274*G0_2_1 + 0.20941996853455*G0_2_2; A[1785] = 0.0195719596761264*G0_0_0 - 0.010275278829966*G0_0_1 + 0.00146789697570957*G0_0_2 - 0.0102752788299654*G0_1_0 - 0.0181040627004155*G0_1_2 + 0.00146789697571045*G0_2_0 - 0.0181040627004167*G0_2_1 - 0.0166361657247065*G0_2_2; A[1786] = 0.019571959676126*G0_0_0 + 0.0141896707651908*G0_0_1 + 0.0748627457611822*G0_0_2 + 0.0141896707651905*G0_1_0 + 0.0283793415303815*G0_1_2 + 0.0748627457611816*G0_2_0 + 0.0283793415303825*G0_2_1 + 0.149725491522363*G0_2_2; A[1787] = 0.0260959462348353*G0_0_0 - 0.0120693751336101*G0_0_1 + 0.0198981590040626*G0_0_2 - 0.0120693751336118*G0_1_0 - 0.0127217737894821*G0_1_2 + 0.0198981590040612*G0_2_0 - 0.012721773789482*G0_2_1 + 0.0137003717732887*G0_2_2; A[1788] = 0.146789697570945*G0_0_0 + 0.0929668084616009*G0_0_1 + 0.141896707651916*G0_0_2 + 0.0929668084615988*G0_1_0 + 0.0929668084616004*G0_1_2 + 0.141896707651913*G0_2_0 + 0.0929668084616006*G0_2_1 + 0.146789697570946*G0_2_2; A[1789] = 0.14678969757095*G0_0_0 - 0.102752788299659*G0_0_1 - 0.298472385060923*G0_0_2 - 0.102752788299661*G0_1_0 - 0.298472385060923*G0_1_2 - 0.298472385060922*G0_2_0 - 0.298472385060924*G0_2_1 - 0.782878387045047*G0_2_2; A[1790] = -0.0489298991903171*G0_0_0 + 0.0929668084615975*G0_0_1 - 0.0293579395141878*G0_0_2 + 0.0929668084615971*G0_1_0 + 0.0929668084616005*G0_1_2 - 0.0293579395141925*G0_2_0 + 0.092966808461598*G0_2_1 - 0.0489298991903143*G0_2_2; A[1791] = -0.78287838704505*G0_0_0 - 0.298472385060923*G0_0_1 - 0.298472385060927*G0_0_2 - 0.298472385060928*G0_1_0 - 0.102752788299666*G0_1_2 - 0.298472385060927*G0_2_0 - 0.102752788299661*G0_2_1 + 0.146789697570946*G0_2_2; A[1792] = -0.00946499969937443*G0_0_0 - 0.00946499969937449*G0_0_1 - 0.00946499969937445*G0_0_2 - 0.00946499969937471*G0_1_0 - 0.00946499969937472*G0_1_1 - 0.00946499969937471*G0_1_2 - 0.00946499969937452*G0_2_0 - 0.00946499969937457*G0_2_1 - 0.00946499969937457*G0_2_2; A[1793] = 0.00946499969937466*G0_0_0 - 0.002278176106301*G0_1_0 - 0.00227817610630108*G0_2_0; A[1794] = -0.00472467106581698*G0_0_1 - 0.0345719095719095*G0_1_1 - 0.00472467106581701*G0_2_1; A[1795] = -0.0047246710658167*G0_0_2 - 0.00472467106581696*G0_1_2 - 0.0345719095719095*G0_2_2; A[1796] = -0.0493213383838372*G0_0_1 - 0.0429604514890968*G0_0_2 + 0.127315597693202*G0_1_1 - 0.000685018588664574*G0_1_2 - 0.00704590548340516*G0_2_1 - 0.0429604514890976*G0_2_2; A[1797] = 0.167731694424402*G0_0_1 + 0.0777006799142212*G0_0_2 - 0.166948816037356*G0_1_1 - 0.00616516729797829*G0_1_2 + 0.0838658472122007*G0_2_1 + 0.182410664181497*G0_2_2; A[1798] = 0.0777006799142205*G0_0_1 + 0.167731694424401*G0_0_2 + 0.182410664181496*G0_1_1 + 0.0838658472121997*G0_1_2 - 0.00616516729797958*G0_2_1 - 0.166948816037357*G0_2_2; A[1799] = -0.0429604514890965*G0_0_1 - 0.0493213383838378*G0_0_2 - 0.0429604514890971*G0_1_1 - 0.00704590548340493*G0_1_2 - 0.000685018588664337*G0_2_1 + 0.127315597693202*G0_2_2; A[1800] = -0.0292600797158088*G0_0_0 - 0.00329461321214798*G0_0_2 + 0.0142875305635723*G0_1_0 + 0.00254435475789672*G0_1_2 + 0.00844856259352799*G0_2_0 + 0.00254435475789664*G0_2_2; A[1801] = 0.0189848008858428*G0_0_0 + 0.00949240044292135*G0_0_2 - 0.0377738821749234*G0_1_0 - 0.00939454064454095*G0_1_2 - 0.0188869410874624*G0_2_0 - 0.015592327875315*G0_2_2; A[1802] = -0.00352295274170358*G0_0_0 - 0.00649136662591524*G0_0_2 - 0.108232937008978*G0_1_0 - 0.0808321934624003*G0_1_2 - 0.0338921101724924*G0_2_0 - 0.0436454700777611*G0_2_2; A[1803] = -0.0429604514890967*G0_0_0 - 0.0422754329004329*G0_0_2 - 0.0429604514890973*G0_1_0 - 0.0845508658008658*G0_1_2 - 0.000685018588664522*G0_2_0 + 0.0439716694056963*G0_2_2; A[1804] = -0.0292600797158084*G0_0_0 - 0.0032946132121479*G0_0_1 + 0.00844856259352827*G0_1_0 + 0.00254435475789684*G0_1_1 + 0.0142875305635729*G0_2_0 + 0.00254435475789689*G0_2_1; A[1805] = 0.0189848008858422*G0_0_0 + 0.00949240044292156*G0_0_1 - 0.018886941087462*G0_1_0 - 0.015592327875314*G0_1_1 - 0.037773882174924*G0_2_0 - 0.00939454064454084*G0_2_1; A[1806] = -0.00352295274170261*G0_0_0 - 0.0064913666259159*G0_0_1 - 0.0338921101724922*G0_1_0 - 0.0436454700777618*G0_1_1 - 0.108232937008978*G0_2_0 - 0.0808321934624012*G0_2_1; A[1807] = -0.0429604514890967*G0_0_0 - 0.0422754329004317*G0_0_1 - 0.000685018588664817*G0_1_0 + 0.0439716694056967*G0_1_1 - 0.0429604514890976*G0_2_0 - 0.0845508658008655*G0_2_1; A[1808] = 0.0292600797158081*G0_0_0 + 0.0292600797158083*G0_0_1 + 0.0259654665036602*G0_0_2 + 0.0292600797158082*G0_1_0 + 0.0292600797158083*G0_1_1 + 0.0259654665036607*G0_1_2 + 0.0259654665036597*G0_2_0 + 0.0259654665036598*G0_2_1 + 0.0226708532915122*G0_2_2; A[1809] = -0.0189848008858417*G0_0_0 - 0.018984800885842*G0_0_1 - 0.00949240044292078*G0_0_2 - 0.0189848008858414*G0_1_0 - 0.0189848008858414*G0_1_1 - 0.00949240044292091*G0_1_2 - 0.00949240044292048*G0_2_0 - 0.00949240044292056*G0_2_1 - 0.000652398655870131*G0_2_2; A[1810] = 0.00352295274170246*G0_0_0 + 0.00352295274170262*G0_0_1 - 0.00296841388421237*G0_0_2 + 0.00352295274170128*G0_1_0 + 0.00352295274170135*G0_1_1 - 0.00296841388421284*G0_1_2 - 0.0029684138842133*G0_2_0 - 0.00296841388421324*G0_2_1 - 0.000652398655870943*G0_2_2; A[1811] = 0.0429604514890967*G0_0_0 + 0.0429604514890966*G0_0_1 + 0.00068501858866407*G0_0_2 + 0.0429604514890973*G0_1_0 + 0.0429604514890973*G0_1_1 + 0.000685018588664572*G0_1_2 + 0.000685018588664434*G0_2_0 + 0.000685018588664418*G0_2_1 + 0.0226708532915127*G0_2_2; A[1812] = 0.0292600797158083*G0_0_0 + 0.0259654665036604*G0_0_1 + 0.0292600797158082*G0_0_2 + 0.0259654665036604*G0_1_0 + 0.0226708532915128*G0_1_1 + 0.0259654665036603*G0_1_2 + 0.029260079715808*G0_2_0 + 0.0259654665036607*G0_2_1 + 0.0292600797158079*G0_2_2; A[1813] = -0.0189848008858421*G0_0_0 - 0.00949240044292061*G0_0_1 - 0.0189848008858421*G0_0_2 - 0.00949240044292104*G0_1_0 - 0.000652398655870358*G0_1_1 - 0.00949240044292106*G0_1_2 - 0.0189848008858422*G0_2_0 - 0.00949240044292108*G0_2_1 - 0.0189848008858422*G0_2_2; A[1814] = 0.00352295274170291*G0_0_0 - 0.00296841388421309*G0_0_1 + 0.00352295274170308*G0_0_2 - 0.00296841388421254*G0_1_0 - 0.000652398655871613*G0_1_1 - 0.00296841388421243*G0_1_2 + 0.00352295274170208*G0_2_0 - 0.00296841388421258*G0_2_1 + 0.00352295274170225*G0_2_2; A[1815] = 0.0429604514890967*G0_0_0 + 0.00068501858866488*G0_0_1 + 0.0429604514890965*G0_0_2 + 0.000685018588664768*G0_1_0 + 0.0226708532915134*G0_1_1 + 0.000685018588664629*G0_1_2 + 0.0429604514890975*G0_2_0 + 0.000685018588664585*G0_2_1 + 0.0429604514890973*G0_2_2; A[1816] = 0.00329461321214764*G0_0_1 + 0.00329461321214763*G0_0_2 + 0.00329461321214798*G0_1_0 + 0.00658922642429551*G0_1_1 + 0.00658922642429549*G0_1_2 + 0.00329461321214782*G0_2_0 + 0.00658922642429524*G0_2_1 + 0.00658922642429505*G0_2_2; A[1817] = 0.00257697469069007*G0_0_1 + 0.00257697469069005*G0_0_2 + 0.00257697469069005*G0_1_0 + 0.00450155072550912*G0_1_1 + 0.0045015507255091*G0_1_2 + 0.00257697469069009*G0_2_0 + 0.00450155072550921*G0_2_1 + 0.00450155072550929*G0_2_2; A[1818] = 0.00257697469068955*G0_0_1 + 0.00257697469068947*G0_0_2 + 0.00257697469068938*G0_1_0 - 0.0105036183595214*G0_1_1 - 0.0105036183595214*G0_1_2 + 0.0025769746906893*G0_2_0 - 0.0105036183595219*G0_2_1 - 0.0105036183595219*G0_2_2; A[1819] = 0.00329461321214791*G0_0_1 + 0.0032946132121479*G0_0_2 + 0.00329461321214825*G0_1_0 - 0.00254435475789676*G0_1_1 - 0.00254435475789677*G0_1_2 + 0.00329461321214836*G0_2_0 - 0.0025443547578967*G0_2_1 - 0.0025443547578968*G0_2_2; A[1820] = 0.113517366121533*G0_0_0 + 0.012721773789483*G0_0_1 + 0.0127217737894835*G0_0_2 - 0.0851380245911483*G0_1_0 - 0.0137003717732875*G0_1_1 - 0.0198981590040603*G0_1_2 - 0.0851380245911499*G0_2_0 - 0.0198981590040619*G0_2_1 - 0.0137003717732871*G0_2_2; A[1821] = -0.149725491522366*G0_0_0 - 0.0748627457611831*G0_0_1 - 0.0283793415303846*G0_0_2 + 0.0278900425384781*G0_1_0 + 0.0655660649150211*G0_1_1 - 0.0748627457611847*G0_1_2 + 0.177126235068944*G0_2_0 + 0.027890042538481*G0_2_1 - 0.149725491522366*G0_2_2; A[1822] = -0.0234863516113507*G0_0_0 + 0.0225077536275454*G0_0_1 - 0.104709984267274*G0_0_2 - 0.0459941052388944*G0_1_0 - 0.268135847562927*G0_1_1 - 0.0737210481134087*G0_1_2 + 0.0812236326559233*G0_2_0 + 0.180714427676231*G0_2_1 - 0.209419968534551*G0_2_2; A[1823] = -0.149725491522366*G0_0_0 - 0.0283793415303835*G0_0_1 - 0.0748627457611835*G0_0_2 + 0.177126235068941*G0_1_0 - 0.149725491522365*G0_1_1 + 0.0278900425384787*G0_1_2 + 0.027890042538479*G0_2_0 - 0.0748627457611851*G0_2_1 + 0.0655660649150213*G0_2_2; A[1824] = 0.540186087061084*G0_0_0 + 0.270093043530542*G0_0_1 + 0.270093043530543*G0_0_2 + 0.270093043530542*G0_1_0 + 0.726119703984281*G0_1_1 + 0.270093043530544*G0_1_2 + 0.270093043530543*G0_2_0 + 0.270093043530544*G0_2_1 + 0.726119703984285*G0_2_2; A[1825] = -0.0234863516113513*G0_0_0 - 0.104709984267275*G0_0_1 + 0.022507753627545*G0_0_2 + 0.0812236326559233*G0_1_0 - 0.209419968534551*G0_1_1 + 0.180714427676231*G0_1_2 - 0.0459941052388959*G0_2_0 - 0.0737210481134088*G0_2_1 - 0.26813584756293*G0_2_2; A[1826] = -0.113517366121532*G0_0_0 - 0.100795592332049*G0_0_1 - 0.100795592332049*G0_0_2 - 0.100795592332051*G0_1_0 - 0.0880738185425685*G0_1_1 - 0.0887262171984383*G0_1_2 - 0.10079559233205*G0_2_0 - 0.088726217198438*G0_2_1 - 0.0880738185425664*G0_2_2; A[1827] = 0.149725491522364*G0_0_0 + 0.0748627457611828*G0_0_1 + 0.12134614999198*G0_0_2 + 0.074862745761183*G0_1_0 + 0.0195719596761274*G0_1_1 + 0.0606730749959911*G0_1_2 + 0.121346149991981*G0_2_0 + 0.0606730749959913*G0_2_1 + 0.0929668084615985*G0_2_2; A[1828] = 0.0234863516113502*G0_0_0 + 0.0459941052388955*G0_0_1 - 0.0812236326559235*G0_0_2 + 0.0459941052388942*G0_1_0 - 0.0880738185425689*G0_1_1 + 0.00913358118219037*G0_1_2 - 0.0812236326559235*G0_2_0 + 0.00913358118219191*G0_2_1 - 0.185933616923198*G0_2_2; A[1829] = 0.149725491522362*G0_0_0 + 0.12134614999198*G0_0_1 + 0.0748627457611808*G0_0_2 + 0.12134614999198*G0_1_0 + 0.0929668084615981*G0_1_1 + 0.0606730749959895*G0_1_2 + 0.0748627457611798*G0_2_0 + 0.0606730749959896*G0_2_1 + 0.0195719596761242*G0_2_2; A[1830] = -0.540186087061084*G0_0_0 - 0.270093043530539*G0_0_1 - 0.27009304353054*G0_0_2 - 0.270093043530542*G0_1_0 + 0.0929668084615991*G0_1_1 - 0.135046521765269*G0_1_2 - 0.270093043530543*G0_2_0 - 0.13504652176527*G0_2_1 + 0.0929668084616001*G0_2_2; A[1831] = 0.0234863516113515*G0_0_0 - 0.0812236326559231*G0_0_1 + 0.0459941052388976*G0_0_2 - 0.0812236326559233*G0_1_0 - 0.185933616923197*G0_1_1 + 0.00913358118219308*G0_1_2 + 0.0459941052388961*G0_2_0 + 0.00913358118219296*G0_2_1 - 0.0880738185425672*G0_2_2; A[1832] = -0.0127217737894818*G0_0_1 - 0.0120693751336103*G0_0_2 - 0.0127217737894822*G0_1_0 - 0.0254435475789644*G0_1_1 - 0.0241387502672215*G0_1_2 - 0.0120693751336104*G0_2_0 - 0.024138750267223*G0_2_1 - 0.0228339529554794*G0_2_2; A[1833] = -0.0181040627004153*G0_0_1 - 0.0102752788299655*G0_0_2 - 0.0181040627004156*G0_1_0 - 0.0166361657247061*G0_1_1 + 0.00146789697571052*G0_1_2 - 0.0102752788299655*G0_2_0 + 0.00146789697570992*G0_2_1 + 0.0195719596761265*G0_2_2; A[1834] = -0.0127217737894831*G0_0_1 - 0.0120693751336109*G0_0_2 - 0.0127217737894829*G0_1_0 + 0.0137003717732876*G0_1_1 + 0.0198981590040623*G0_1_2 - 0.0120693751336118*G0_2_0 + 0.0198981590040618*G0_2_1 + 0.026095946234837*G0_2_2; A[1835] = 0.0283793415303816*G0_0_1 + 0.0141896707651901*G0_0_2 + 0.0283793415303822*G0_1_0 + 0.0567586830607643*G0_1_1 + 0.0283793415303809*G0_1_2 + 0.0141896707651904*G0_2_0 + 0.0283793415303811*G0_2_1 - 0.00489298991903318*G0_2_2; A[1836] = 0.0283793415303838*G0_0_1 + 0.0141896707651907*G0_0_2 + 0.0283793415303826*G0_1_0 + 0.149725491522366*G0_1_1 + 0.074862745761181*G0_1_2 + 0.0141896707651923*G0_2_0 + 0.0748627457611852*G0_2_1 + 0.0195719596761255*G0_2_2; A[1837] = 0.104709984267275*G0_0_1 + 0.0368605240567055*G0_0_2 + 0.104709984267277*G0_1_0 + 0.20941996853455*G0_1_1 + 0.0737210481134107*G0_1_2 + 0.0368605240567058*G0_2_0 + 0.0737210481134088*G0_2_1 - 0.0228339529554791*G0_2_2; A[1838] = -0.012069375133611*G0_0_1 - 0.0127217737894825*G0_0_2 - 0.0120693751336113*G0_1_0 - 0.0228339529554809*G0_1_1 - 0.0241387502672235*G0_1_2 - 0.0127217737894818*G0_2_0 - 0.0241387502672222*G0_2_1 - 0.0254435475789656*G0_2_2; A[1839] = -0.0102752788299663*G0_0_1 - 0.018104062700416*G0_0_2 - 0.0102752788299654*G0_1_0 + 0.0195719596761256*G0_1_1 + 0.0014678969757095*G0_1_2 - 0.0181040627004158*G0_2_0 + 0.00146789697570994*G0_2_1 - 0.0166361657247065*G0_2_2; A[1840] = -0.0120693751336111*G0_0_1 - 0.0127217737894832*G0_0_2 - 0.0120693751336119*G0_1_0 + 0.0260959462348353*G0_1_1 + 0.0198981590040605*G0_1_2 - 0.0127217737894833*G0_2_0 + 0.0198981590040623*G0_2_1 + 0.0137003717732873*G0_2_2; A[1841] = 0.0141896707651922*G0_0_1 + 0.0283793415303832*G0_0_2 + 0.0141896707651911*G0_1_0 - 0.00489298991903035*G0_1_1 + 0.0283793415303827*G0_1_2 + 0.028379341530383*G0_2_0 + 0.0283793415303832*G0_2_1 + 0.0567586830607654*G0_2_2; A[1842] = 0.0141896707651919*G0_0_1 + 0.0283793415303839*G0_0_2 + 0.0141896707651921*G0_1_0 + 0.0195719596761269*G0_1_1 + 0.0748627457611842*G0_1_2 + 0.0283793415303832*G0_2_0 + 0.0748627457611822*G0_2_1 + 0.149725491522366*G0_2_2; A[1843] = 0.0368605240567031*G0_0_1 + 0.104709984267274*G0_0_2 + 0.0368605240567048*G0_1_0 - 0.0228339529554809*G0_1_1 + 0.0737210481134087*G0_1_2 + 0.104709984267276*G0_2_0 + 0.0737210481134092*G0_2_1 + 0.209419968534551*G0_2_2; A[1844] = 0.0929668084615963*G0_0_1 + 0.0929668084615972*G0_0_2 + 0.0929668084615995*G0_1_0 + 0.146789697570945*G0_1_1 + 0.141896707651915*G0_1_2 + 0.0929668084615976*G0_2_0 + 0.141896707651913*G0_2_1 + 0.146789697570945*G0_2_2; A[1845] = 0.0929668084615984*G0_0_1 + 0.0929668084615997*G0_0_2 + 0.0929668084615994*G0_1_0 - 0.0489298991903157*G0_1_1 - 0.0293579395141881*G0_1_2 + 0.0929668084616024*G0_2_0 - 0.0293579395141906*G0_2_1 - 0.0489298991903149*G0_2_2; A[1846] = -0.10275278829966*G0_0_1 - 0.298472385060926*G0_0_2 - 0.102752788299661*G0_1_0 + 0.146789697570947*G0_1_1 - 0.298472385060926*G0_1_2 - 0.298472385060925*G0_2_0 - 0.298472385060922*G0_2_1 - 0.78287838704505*G0_2_2; A[1847] = -0.298472385060924*G0_0_1 - 0.10275278829966*G0_0_2 - 0.298472385060921*G0_1_0 - 0.782878387045045*G0_1_1 - 0.298472385060923*G0_1_2 - 0.102752788299659*G0_2_0 - 0.298472385060925*G0_2_1 + 0.14678969757095*G0_2_2; A[1848] = -0.013742125287264*G0_0_0 - 0.0137421252872641*G0_0_1 - 0.013742125287264*G0_0_2 - 0.0137421252872641*G0_1_0 - 0.0137421252872641*G0_1_1 - 0.0137421252872641*G0_1_2 - 0.0137421252872641*G0_2_0 - 0.0137421252872641*G0_2_1 - 0.0137421252872641*G0_2_2; A[1849] = 0.013742125287264*G0_0_0 - 0.00517743573299122*G0_1_0 - 0.00517743573299114*G0_2_0; A[1850] = -0.00517743573299136*G0_0_1 + 0.013742125287264*G0_1_1 - 0.00517743573299131*G0_2_1; A[1851] = 0.0143945239431351*G0_0_2 + 0.0143945239431351*G0_1_2 + 0.0479930547204851*G0_2_2; A[1852] = 0.0477555816097483*G0_0_1 + 0.01187365553685*G0_0_2 - 0.064130787872107*G0_1_1 - 0.00939454064454082*G0_1_2 + 0.0264873854283579*G0_2_1 + 0.0118736555368501*G0_2_2; A[1853] = -0.0823327103709047*G0_0_1 + 0.00182671623643838*G0_0_2 + 0.127087258163646*G0_1_1 + 0.0377738821749235*G0_1_2 - 0.0463855444324194*G0_2_1 - 0.0510175748891021*G0_2_2; A[1854] = 0.146659217839772*G0_0_1 + 0.0109602974186305*G0_0_2 - 0.124738623002511*G0_1_1 - 0.0623693115012553*G0_1_2 + 0.0733296089198864*G0_2_1 + 0.132306447410613*G0_2_2; A[1855] = 0.124738623002511*G0_0_1 + 0.192588083213081*G0_0_2 + 0.124738623002511*G0_1_1 + 0.0962940416065406*G0_1_2 + 0.0284445813959699*G0_2_1 - 0.0644569872000428*G0_2_2; A[1856] = -0.0641307878721064*G0_0_0 - 0.00939454064454034*G0_0_2 + 0.0477555816097477*G0_1_0 + 0.01187365553685*G0_1_2 + 0.0264873854283572*G0_2_0 + 0.01187365553685*G0_2_2; A[1857] = 0.127087258163646*G0_0_0 + 0.037773882174923*G0_0_2 - 0.082332710370904*G0_1_0 + 0.00182671623643801*G0_1_2 - 0.0463855444324181*G0_2_0 - 0.0510175748891019*G0_2_2; A[1858] = -0.12473862300251*G0_0_0 - 0.0623693115012546*G0_0_2 + 0.146659217839772*G0_1_0 + 0.0109602974186312*G0_1_2 + 0.0733296089198862*G0_2_0 + 0.132306447410614*G0_2_2; A[1859] = 0.124738623002511*G0_0_0 + 0.0962940416065404*G0_0_2 + 0.124738623002511*G0_1_0 + 0.192588083213082*G0_1_2 + 0.02844458139597*G0_2_0 - 0.0644569872000429*G0_2_2; A[1860] = -0.0187890812890808*G0_0_0 - 0.00939454064454038*G0_0_1 + 0.02126819618139*G0_1_0 + 0.0118736555368499*G0_1_1 + 0.0425363923627803*G0_2_0 + 0.0118736555368498*G0_2_1; A[1861] = 0.0148746893538561*G0_0_0 + 0.0149399292194429*G0_0_1 + 0.00123955744615505*G0_1_0 + 0.00117431758056714*G0_1_1 + 0.0403182369328202*G0_2_0 + 0.0540186087061078*G0_2_1; A[1862] = 0.0011743175805671*G0_0_0 + 0.00123955744615469*G0_0_1 + 0.0149399292194426*G0_1_0 + 0.0148746893538564*G0_1_1 + 0.0540186087061078*G0_2_0 + 0.0403182369328203*G0_2_1; A[1863] = 0.0118736555368501*G0_0_0 + 0.0212681961813904*G0_0_1 - 0.00939454064454059*G0_1_0 - 0.0187890812890817*G0_1_1 + 0.0118736555368501*G0_2_0 + 0.0425363923627808*G0_2_1; A[1864] = 0.0641307878721065*G0_0_0 + 0.0641307878721067*G0_0_1 + 0.0547362472275662*G0_0_2 + 0.064130787872107*G0_1_0 + 0.064130787872107*G0_1_1 + 0.0547362472275665*G0_1_2 + 0.0547362472275664*G0_2_0 + 0.0547362472275665*G0_2_1 + 0.0453417065830258*G0_2_2; A[1865] = -0.127087258163646*G0_0_0 - 0.127087258163646*G0_0_1 - 0.0893133759887225*G0_0_2 - 0.127087258163646*G0_1_0 - 0.127087258163647*G0_1_1 - 0.0893133759887231*G0_1_2 - 0.0893133759887224*G0_2_0 - 0.0893133759887226*G0_2_1 - 0.0665446628988292*G0_2_2; A[1866] = 0.124738623002511*G0_0_0 + 0.124738623002511*G0_0_1 + 0.0623693115012559*G0_0_2 + 0.124738623002511*G0_1_0 + 0.124738623002511*G0_1_1 + 0.0623693115012563*G0_1_2 + 0.0623693115012552*G0_2_0 + 0.0623693115012553*G0_2_1 + 0.0476251018785738*G0_2_2; A[1867] = -0.124738623002511*G0_0_0 - 0.124738623002511*G0_0_1 - 0.0284445813959704*G0_0_2 - 0.124738623002511*G0_1_0 - 0.124738623002511*G0_1_1 - 0.0284445813959705*G0_1_2 - 0.0284445813959698*G0_2_0 - 0.0284445813959698*G0_2_1 - 0.0606730749959914*G0_2_2; A[1868] = 0.0187890812890809*G0_0_0 + 0.00939454064454046*G0_0_1 + 0.0187890812890809*G0_0_2 + 0.00939454064454057*G0_1_0 + 0.00939454064454056*G0_1_2 + 0.0187890812890811*G0_2_0 + 0.00939454064454051*G0_2_1 + 0.0187890812890812*G0_2_2; A[1869] = -0.0148746893538554*G0_0_0 + 6.52398655875395e-05*G0_0_1 - 0.0148746893538553*G0_0_2 + 6.5239865587495e-05*G0_1_0 + 6.52398655875395e-05*G0_1_2 - 0.0148746893538554*G0_2_0 + 6.5239865587457e-05*G0_2_1 - 0.0148746893538554*G0_2_2; A[1870] = -0.00117431758056768*G0_0_0 + 6.5239865586614e-05*G0_0_1 - 0.00117431758056777*G0_0_2 + 6.52398655865773e-05*G0_1_0 + 6.52398655864882e-05*G0_1_2 - 0.00117431758056755*G0_2_0 + 6.52398655865975e-05*G0_2_1 - 0.00117431758056762*G0_2_2; A[1871] = -0.0118736555368499*G0_0_0 + 0.00939454064454082*G0_0_1 - 0.01187365553685*G0_0_2 + 0.00939454064454069*G0_1_0 + 0.00939454064454071*G0_1_2 - 0.01187365553685*G0_2_0 + 0.00939454064454092*G0_2_1 - 0.01187365553685*G0_2_2; A[1872] = 0.00939454064454047*G0_0_1 + 0.00939454064454042*G0_0_2 + 0.00939454064454068*G0_1_0 + 0.0187890812890811*G0_1_1 + 0.0187890812890811*G0_1_2 + 0.00939454064454037*G0_2_0 + 0.0187890812890811*G0_2_1 + 0.0187890812890812*G0_2_2; A[1873] = 6.52398655873181e-05*G0_0_1 + 6.52398655872576e-05*G0_0_2 + 6.52398655870905e-05*G0_1_0 - 0.0148746893538556*G0_1_1 - 0.0148746893538557*G0_1_2 + 6.52398655873932e-05*G0_2_0 - 0.0148746893538558*G0_2_1 - 0.014874689353856*G0_2_2; A[1874] = 6.52398655869826e-05*G0_0_1 + 6.52398655869624e-05*G0_0_2 + 6.52398655871096e-05*G0_1_0 - 0.00117431758056771*G0_1_1 - 0.00117431758056765*G0_1_2 + 6.52398655869911e-05*G0_2_0 - 0.00117431758056757*G0_2_1 - 0.00117431758056756*G0_2_2; A[1875] = 0.0093945406445404*G0_0_1 + 0.00939454064454043*G0_0_2 + 0.0093945406445405*G0_1_0 - 0.0118736555368499*G0_1_1 - 0.0118736555368499*G0_1_2 + 0.00939454064454053*G0_2_0 - 0.01187365553685*G0_2_1 - 0.0118736555368499*G0_2_2; A[1876] = 0.105688582251081*G0_0_0 + 0.0528442911255408*G0_0_1 + 0.0300103381700605*G0_0_2 + 0.000652398655869878*G0_1_0 + 0.0534966897814108*G0_1_1 + 0.0528442911255395*G0_1_2 - 0.0743734467692798*G0_2_0 + 0.000652398655871245*G0_2_1 + 0.10568858225108*G0_2_2; A[1877] = -0.0137003717732882*G0_0_0 - 0.0198981590040614*G0_0_1 + 0.012721773789482*G0_0_2 - 0.0198981590040612*G0_1_0 - 0.0137003717732879*G0_1_1 + 0.0127217737894826*G0_1_2 - 0.085138024591151*G0_2_0 - 0.0851380245911513*G0_2_1 + 0.113517366121531*G0_2_2; A[1878] = 0.0534966897814117*G0_0_0 + 0.000652398655870581*G0_0_1 + 0.0528442911255403*G0_0_2 + 0.0528442911255398*G0_1_0 + 0.105688582251081*G0_1_1 + 0.0300103381700589*G0_1_2 + 0.000652398655871856*G0_2_0 - 0.0743734467692792*G0_2_1 + 0.105688582251082*G0_2_2; A[1879] = -0.209419968534549*G0_0_0 - 0.104709984267274*G0_0_1 - 0.0737210481134087*G0_0_2 + 0.0812236326559243*G0_1_0 - 0.0234863516113507*G0_1_1 - 0.0459941052388958*G0_1_2 + 0.180714427676233*G0_2_0 + 0.0225077536275476*G0_2_1 - 0.268135847562928*G0_2_2; A[1880] = -0.0234863516113513*G0_0_0 + 0.0812236326559233*G0_0_1 - 0.0459941052388959*G0_0_2 - 0.104709984267275*G0_1_0 - 0.209419968534551*G0_1_1 - 0.0737210481134088*G0_1_2 + 0.022507753627545*G0_2_0 + 0.180714427676231*G0_2_1 - 0.26813584756293*G0_2_2; A[1881] = 0.542795681684565*G0_0_0 + 0.271397840842283*G0_0_1 + 0.271397840842283*G0_0_2 + 0.271397840842283*G0_1_0 + 0.542795681684566*G0_1_1 + 0.271397840842283*G0_1_2 + 0.271397840842283*G0_2_0 + 0.271397840842283*G0_2_1 + 0.647179466623906*G0_2_2; A[1882] = -0.105688582251083*G0_0_0 - 0.0528442911255413*G0_0_1 - 0.0756782440810216*G0_0_2 - 0.0528442911255414*G0_1_0 - 0.0378391220405115*G0_1_2 - 0.0756782440810225*G0_2_0 - 0.0378391220405116*G0_2_1 - 0.0456679059109624*G0_2_2; A[1883] = 0.013700371773289*G0_0_0 - 0.00619778723077154*G0_0_1 + 0.0264221455627703*G0_0_2 - 0.00619778723077266*G0_1_0 - 0.00554538857490166*G0_1_2 + 0.0264221455627714*G0_2_0 - 0.00554538857490054*G0_2_1 + 0.0391439193522527*G0_2_2; A[1884] = -0.0534966897814119*G0_0_0 - 0.052844291125542*G0_0_1 - 0.000652398655871015*G0_0_2 - 0.0528442911255398*G0_1_0 - 0.03783912204051*G0_1_2 - 0.000652398655871901*G0_2_0 - 0.037839122040512*G0_2_1 + 0.0521918924696694*G0_2_2; A[1885] = 0.209419968534547*G0_0_0 + 0.104709984267274*G0_0_1 + 0.135698920421141*G0_0_2 + 0.104709984267273*G0_1_0 + 0.0678494602105713*G0_1_2 + 0.135698920421139*G0_2_0 + 0.0678494602105703*G0_2_1 + 0.039143919352253*G0_2_2; A[1886] = 0.0234863516113519*G0_0_0 + 0.104709984267276*G0_0_1 - 0.0225077536275447*G0_0_2 + 0.104709984267275*G0_1_0 + 0.0678494602105695*G0_1_2 - 0.0225077536275449*G0_2_0 + 0.0678494602105717*G0_2_1 - 0.15657567740901*G0_2_2; A[1887] = -0.542795681684565*G0_0_0 - 0.271397840842283*G0_0_1 - 0.271397840842282*G0_0_2 - 0.271397840842283*G0_1_0 - 0.135698920421141*G0_1_2 - 0.271397840842282*G0_2_0 - 0.135698920421142*G0_2_1 + 0.0521918924696706*G0_2_2; A[1888] = -0.052844291125542*G0_0_1 - 0.037839122040511*G0_0_2 - 0.052844291125541*G0_1_0 - 0.105688582251082*G0_1_1 - 0.0756782440810221*G0_1_2 - 0.0378391220405111*G0_2_0 - 0.075678244081022*G0_2_1 - 0.0456679059109617*G0_2_2; A[1889] = -0.00619778723077111*G0_0_1 - 0.00554538857490159*G0_0_2 - 0.00619778723077245*G0_1_0 + 0.0137003717732892*G0_1_1 + 0.0264221455627706*G0_1_2 - 0.00554538857490143*G0_2_0 + 0.0264221455627716*G0_2_1 + 0.0391439193522536*G0_2_2; A[1890] = -0.052844291125541*G0_0_1 - 0.0378391220405104*G0_0_2 - 0.0528442911255414*G0_1_0 - 0.0534966897814108*G0_1_1 - 0.000652398655870718*G0_1_2 - 0.0378391220405113*G0_2_0 - 0.000652398655870967*G0_2_1 + 0.0521918924696692*G0_2_2; A[1891] = 0.104709984267272*G0_0_1 + 0.0678494602105708*G0_0_2 + 0.104709984267275*G0_1_0 + 0.209419968534548*G0_1_1 + 0.135698920421142*G0_1_2 + 0.0678494602105709*G0_2_0 + 0.13569892042114*G0_2_1 + 0.0391439193522524*G0_2_2; A[1892] = 0.104709984267274*G0_0_1 + 0.067849460210569*G0_0_2 + 0.104709984267275*G0_1_0 + 0.0234863516113505*G0_1_1 - 0.0225077536275462*G0_1_2 + 0.0678494602105697*G0_2_0 - 0.0225077536275474*G0_2_1 - 0.156575677409012*G0_2_2; A[1893] = -0.271397840842283*G0_0_1 - 0.13569892042114*G0_0_2 - 0.271397840842283*G0_1_0 - 0.542795681684566*G0_1_1 - 0.271397840842283*G0_1_2 - 0.135698920421141*G0_2_0 - 0.271397840842282*G0_2_1 + 0.0521918924696713*G0_2_2; A[1894] = -0.01500516908503*G0_0_1 - 0.0300103381700608*G0_0_2 - 0.0150051690850295*G0_1_0 - 0.0300103381700599*G0_1_2 - 0.0300103381700599*G0_2_0 - 0.0300103381700601*G0_2_1 - 0.0600206763401204*G0_2_2; A[1895] = -0.000652398655871247*G0_0_1 - 0.00130479731174086*G0_0_2 - 0.000652398655871236*G0_1_0 - 0.0127217737894821*G0_1_2 - 0.00130479731174187*G0_2_0 - 0.0127217737894827*G0_2_1 - 0.025443547578965*G0_2_2; A[1896] = -0.0150051690850301*G0_0_1 - 0.0300103381700609*G0_0_2 - 0.0150051690850297*G0_1_0 - 0.05284429112554*G0_1_2 - 0.0300103381700594*G0_2_0 - 0.05284429112554*G0_2_1 - 0.10568858225108*G0_2_2; A[1897] = -0.000652398655870446*G0_0_1 - 0.0127217737894816*G0_0_2 - 0.000652398655871328*G0_1_0 - 0.00130479731174187*G0_1_2 - 0.0127217737894828*G0_2_0 - 0.00130479731174115*G0_2_1 - 0.0254435475789638*G0_2_2; A[1898] = -0.000652398655870605*G0_0_1 - 0.0127217737894817*G0_0_2 - 0.000652398655871092*G0_1_0 - 0.0127217737894822*G0_1_2 - 0.0127217737894818*G0_2_0 - 0.0127217737894818*G0_2_1 - 0.113517366121531*G0_2_2; A[1899] = -0.0150051690850303*G0_0_1 - 0.0528442911255404*G0_0_2 - 0.0150051690850292*G0_1_0 - 0.0300103381700591*G0_1_2 - 0.0528442911255404*G0_2_0 - 0.0300103381700605*G0_2_1 - 0.105688582251082*G0_2_2; A[1900] = 0.0260959462348348*G0_0_1 + 0.0750258454251482*G0_0_2 + 0.0260959462348348*G0_1_0 + 0.0750258454251486*G0_1_2 + 0.0750258454251518*G0_2_0 + 0.0750258454251505*G0_2_1 + 0.195719596761262*G0_2_2; A[1901] = 0.0260959462348326*G0_0_1 + 0.0750258454251502*G0_0_2 + 0.0260959462348365*G0_1_0 + 0.0587158790283786*G0_1_2 + 0.0750258454251501*G0_2_0 + 0.0587158790283789*G0_2_1 + 0.293579395141893*G0_2_2; A[1902] = 0.0260959462348366*G0_0_1 + 0.0587158790283774*G0_0_2 + 0.0260959462348339*G0_1_0 + 0.0750258454251506*G0_1_2 + 0.0587158790283796*G0_2_0 + 0.075025845425151*G0_2_1 + 0.293579395141893*G0_2_2; A[1903] = -0.185933616923196*G0_0_1 - 0.316413348097371*G0_0_2 - 0.185933616923198*G0_1_0 - 0.316413348097372*G0_1_2 - 0.316413348097372*G0_2_0 - 0.316413348097372*G0_2_1 - 0.782878387045048*G0_2_2; A[1904] = 0.0479930547204846*G0_0_0 + 0.0479930547204847*G0_0_1 + 0.0479930547204846*G0_0_2 + 0.0335985307773498*G0_1_0 + 0.0335985307773497*G0_1_1 + 0.0335985307773498*G0_1_2 + 0.0335985307773498*G0_2_0 + 0.0335985307773498*G0_2_1 + 0.0335985307773498*G0_2_2; A[1905] = -0.0137421252872639*G0_0_0; A[1906] = 0.00517743573299139*G0_0_1 + 0.0189195610202554*G0_1_1; A[1907] = 0.00517743573299109*G0_0_2 + 0.0189195610202552*G0_2_2; A[1908] = -0.0425363923627816*G0_0_1 - 0.0118736555368501*G0_0_2 - 0.0613254736518624*G0_1_1 - 0.0212681961813909*G0_1_2 - 0.0212681961813908*G0_2_1; A[1909] = -0.0403182369328191*G0_0_1 - 0.0540186087061077*G0_0_2 - 0.0254435475789636*G0_1_1 - 0.0390786794866645*G0_1_2 - 0.0390786794866649*G0_2_1 - 0.0528442911255397*G0_2_2; A[1910] = -0.0540186087061085*G0_0_1 - 0.0403182369328202*G0_0_2 - 0.0528442911255407*G0_1_1 - 0.0390786794866657*G0_1_2 - 0.0390786794866649*G0_2_1 - 0.0254435475789647*G0_2_2; A[1911] = -0.0118736555368507*G0_0_1 - 0.0425363923627814*G0_0_2 - 0.0212681961813908*G0_1_2 - 0.021268196181391*G0_2_1 - 0.0613254736518623*G0_2_2; A[1912] = 0.0187890812890808*G0_0_0 + 0.00939454064454063*G0_0_2 + 0.00939454064454005*G0_2_0; A[1913] = -0.0148746893538556*G0_0_0 - 0.0149399292194431*G0_0_2 - 0.0149399292194425*G0_2_0 - 0.0150051690850305*G0_2_2; A[1914] = -0.0011743175805672*G0_0_0 - 0.00123955744615452*G0_0_2 - 0.00123955744615471*G0_2_0 - 0.0013047973117414*G0_2_2; A[1915] = -0.0118736555368505*G0_0_0 - 0.0212681961813907*G0_0_2 - 0.0212681961813909*G0_2_0 - 0.0306627368259314*G0_2_2; A[1916] = 0.0187890812890809*G0_0_0 + 0.00939454064454076*G0_0_1 + 0.00939454064454064*G0_1_0; A[1917] = -0.0148746893538559*G0_0_0 - 0.0149399292194432*G0_0_1 - 0.0149399292194432*G0_1_0 - 0.0150051690850306*G0_1_1; A[1918] = -0.00117431758056738*G0_0_0 - 0.0012395574461541*G0_0_1 - 0.00123955744615428*G0_1_0 - 0.00130479731174135*G0_1_1; A[1919] = -0.01187365553685*G0_0_0 - 0.0212681961813911*G0_0_1 - 0.0212681961813908*G0_1_0 - 0.0306627368259315*G0_1_1; A[1920] = -0.0644569872000423*G0_0_0 - 0.0644569872000424*G0_0_1 - 0.0929015685960117*G0_0_2 - 0.257045070413124*G0_1_0 - 0.257045070413124*G0_1_1 - 0.160751028806583*G0_1_2 - 0.160751028806583*G0_2_0 - 0.160751028806583*G0_2_1 - 0.0644569872000417*G0_2_2; A[1921] = 0.132306447410614*G0_0_0 + 0.132306447410614*G0_0_1 + 0.0589768384907261*G0_0_2 + 0.121346149991983*G0_1_0 + 0.121346149991984*G0_1_1 + 0.194675758911868*G0_1_2 + 0.194675758911869*G0_2_0 + 0.194675758911869*G0_2_1 - 0.0033924730105293*G0_2_2; A[1922] = -0.0510175748891029*G0_0_0 - 0.0510175748891029*G0_0_1 - 0.00463203045668279*G0_0_2 - 0.0528442911255416*G0_1_0 - 0.0528442911255416*G0_1_1 - 0.0887914570640259*G0_1_2 - 0.0887914570640259*G0_2_0 - 0.088791457064026*G0_2_1 + 0.08468134553204*G0_2_2; A[1923] = 0.0118736555368504*G0_0_0 + 0.0118736555368505*G0_0_1 - 0.0146137298915075*G0_0_2 + 0.0212681961813906*G0_1_2 + 0.0212681961813909*G0_2_0 + 0.0212681961813909*G0_2_1 - 0.069349977119074*G0_2_2; A[1924] = -0.0644569872000424*G0_0_0 - 0.0929015685960119*G0_0_1 - 0.0644569872000425*G0_0_2 - 0.160751028806583*G0_1_0 - 0.0644569872000419*G0_1_1 - 0.160751028806583*G0_1_2 - 0.257045070413124*G0_2_0 - 0.160751028806583*G0_2_1 - 0.257045070413124*G0_2_2; A[1925] = 0.132306447410612*G0_0_0 + 0.0589768384907262*G0_0_1 + 0.132306447410612*G0_0_2 + 0.194675758911868*G0_1_0 - 0.00339247301052903*G0_1_1 + 0.194675758911868*G0_1_2 + 0.121346149991982*G0_2_0 + 0.194675758911868*G0_2_1 + 0.121346149991982*G0_2_2; A[1926] = -0.0510175748891018*G0_0_0 - 0.00463203045668221*G0_0_1 - 0.0510175748891019*G0_0_2 - 0.0887914570640258*G0_1_0 + 0.0846813455320396*G0_1_1 - 0.0887914570640259*G0_1_2 - 0.0528442911255407*G0_2_0 - 0.0887914570640249*G0_2_1 - 0.0528442911255408*G0_2_2; A[1927] = 0.0118736555368501*G0_0_0 - 0.0146137298915083*G0_0_1 + 0.01187365553685*G0_0_2 + 0.0212681961813908*G0_1_0 - 0.0693499771190738*G0_1_1 + 0.0212681961813907*G0_1_2 + 0.0212681961813901*G0_2_1; A[1928] = -0.060673074995991*G0_0_0 - 0.0322284936000217*G0_0_1 - 0.0322284936000216*G0_0_2 - 0.0322284936000211*G0_1_0 - 0.128522535206562*G0_1_1 - 0.128522535206562*G0_1_2 - 0.0322284936000211*G0_2_0 - 0.128522535206562*G0_2_1 - 0.128522535206562*G0_2_2; A[1929] = 0.0476251018785735*G0_0_0 - 0.0147442096226815*G0_0_1 - 0.0147442096226814*G0_0_2 - 0.0147442096226818*G0_1_0 + 0.0476251018785739*G0_1_1 + 0.0476251018785739*G0_1_2 - 0.0147442096226816*G0_2_0 + 0.0476251018785734*G0_2_1 + 0.0476251018785735*G0_2_2; A[1930] = -0.0665446628988285*G0_0_0 + 0.0227687130898933*G0_0_1 + 0.0227687130898934*G0_0_2 + 0.0227687130898937*G0_1_0 - 0.0150051690850304*G0_1_1 - 0.0150051690850303*G0_1_2 + 0.0227687130898937*G0_2_0 - 0.0150051690850299*G0_2_1 - 0.0150051690850299*G0_2_2; A[1931] = 0.0453417065830252*G0_0_0 - 0.0093945406445407*G0_0_1 - 0.00939454064454062*G0_0_2 - 0.00939454064454086*G0_1_0 - 0.00939454064454092*G0_2_0; A[1932] = -0.0600206763401193*G0_0_0 - 0.0300103381700602*G0_0_1 - 0.03001033817006*G0_0_2 - 0.0300103381700599*G0_1_0 - 0.0150051690850294*G0_1_2 - 0.0300103381700599*G0_2_0 - 0.0150051690850304*G0_2_1; A[1933] = -0.0254435475789649*G0_0_0 - 0.0241387502672233*G0_0_1 - 0.0127217737894821*G0_0_2 - 0.024138750267223*G0_1_0 - 0.0228339529554823*G0_1_1 - 0.0120693751336122*G0_1_2 - 0.0127217737894825*G0_2_0 - 0.012069375133612*G0_2_1; A[1934] = -0.105688582251081*G0_0_0 - 0.07567824408102*G0_0_1 - 0.0528442911255406*G0_0_2 - 0.0756782440810208*G0_1_0 - 0.0456679059109596*G0_1_1 - 0.0378391220405102*G0_1_2 - 0.0528442911255404*G0_2_0 - 0.0378391220405097*G0_2_1; A[1935] = -0.0254435475789654*G0_0_0 - 0.0127217737894821*G0_0_1 - 0.0241387502672225*G0_0_2 - 0.0127217737894836*G0_1_0 - 0.0120693751336123*G0_1_2 - 0.0241387502672237*G0_2_0 - 0.0120693751336116*G0_2_1 - 0.0228339529554815*G0_2_2; A[1936] = -0.113517366121532*G0_0_0 - 0.100795592332051*G0_0_1 - 0.10079559233205*G0_0_2 - 0.100795592332049*G0_1_0 - 0.0880738185425685*G0_1_1 - 0.088726217198438*G0_1_2 - 0.100795592332049*G0_2_0 - 0.0887262171984383*G0_2_1 - 0.0880738185425664*G0_2_2; A[1937] = -0.105688582251083*G0_0_0 - 0.0528442911255414*G0_0_1 - 0.0756782440810225*G0_0_2 - 0.0528442911255413*G0_1_0 - 0.0378391220405116*G0_1_2 - 0.0756782440810216*G0_2_0 - 0.0378391220405115*G0_2_1 - 0.0456679059109623*G0_2_2; A[1938] = 0.647179466623907*G0_0_0 + 0.375781625781623*G0_0_1 + 0.375781625781624*G0_0_2 + 0.375781625781623*G0_1_0 + 0.647179466623906*G0_1_1 + 0.375781625781623*G0_1_2 + 0.375781625781624*G0_2_0 + 0.375781625781623*G0_2_1 + 0.647179466623907*G0_2_2; A[1939] = -0.268135847562928*G0_0_0 - 0.448850275239161*G0_0_1 - 0.290643601190473*G0_0_2 - 0.19441479944952*G0_1_0 - 0.584549195660303*G0_1_1 - 0.321632537344339*G0_1_2 - 0.222141742324032*G0_2_0 - 0.321632537344342*G0_2_1 - 0.268135847562928*G0_2_2; A[1940] = 0.105688582251081*G0_0_0 + 0.180062029020362*G0_0_1 + 0.10503618359521*G0_0_2 + 0.075678244081021*G0_1_0 + 0.255740273101383*G0_1_1 + 0.127870136550691*G0_1_2 + 0.0528442911255407*G0_2_0 + 0.127870136550692*G0_2_1 + 0.105688582251081*G0_2_2; A[1941] = -0.268135847562926*G0_0_0 - 0.290643601190473*G0_0_1 - 0.448850275239162*G0_0_2 - 0.222141742324031*G0_1_0 - 0.268135847562929*G0_1_1 - 0.321632537344341*G0_1_2 - 0.194414799449519*G0_2_0 - 0.32163253734434*G0_2_1 - 0.584549195660303*G0_2_2; A[1942] = 0.113517366121531*G0_0_0 + 0.19865539071268*G0_0_1 + 0.198655390712681*G0_0_2 + 0.100795592332049*G0_1_0 + 0.17223324514991*G0_1_1 + 0.166035457919136*G0_1_2 + 0.100795592332049*G0_2_0 + 0.166035457919136*G0_2_1 + 0.17223324514991*G0_2_2; A[1943] = 0.105688582251082*G0_0_0 + 0.105036183595211*G0_0_1 + 0.180062029020361*G0_0_2 + 0.0528442911255412*G0_1_0 + 0.105688582251082*G0_1_1 + 0.127870136550692*G0_1_2 + 0.0756782440810217*G0_2_0 + 0.127870136550691*G0_2_1 + 0.255740273101382*G0_2_2; A[1944] = 0.0521918924696705*G0_0_0 + 0.323589733311955*G0_0_1 + 0.187890812890813*G0_0_2 + 0.323589733311953*G0_1_0 + 0.0521918924696707*G0_1_1 + 0.187890812890813*G0_1_2 + 0.187890812890811*G0_2_0 + 0.187890812890813*G0_2_1 + 0.323589733311954*G0_2_2; A[1945] = 0.0391439193522506*G0_0_0 - 0.096555001068891*G0_0_1 - 0.0287055408583199*G0_0_2 - 0.0965550010688899*G0_1_0 - 0.0228339529554818*G0_1_1 - 0.0596944770121856*G0_1_2 - 0.0287055408583187*G0_2_0 - 0.059694477012186*G0_2_1 - 0.0965550010688896*G0_2_2; A[1946] = -0.045667905910959*G0_0_0 + 0.0300103381700605*G0_0_1 - 0.00782878387045005*G0_0_2 + 0.0300103381700611*G0_1_0 + 0.0150051690850311*G0_1_2 - 0.00782878387044972*G0_2_0 + 0.0150051690850306*G0_2_1 + 0.0300103381700611*G0_2_2; A[1947] = -0.15657567740901*G0_0_0 - 0.134067923781463*G0_0_1 - 0.224425137619582*G0_0_2 - 0.134067923781465*G0_1_0 - 0.0880738185425671*G0_1_1 - 0.0972073997247614*G0_1_2 - 0.22442513761958*G0_2_0 - 0.0972073997247593*G0_2_1 - 0.292274597830152*G0_2_2; A[1948] = 0.0391439193522512*G0_0_0 + 0.0127217737894814*G0_0_1 + 0.0446893079271555*G0_0_2 + 0.0127217737894815*G0_1_0 + 0.0120693751336108*G0_1_2 + 0.0446893079271539*G0_2_0 + 0.012069375133611*G0_2_1 + 0.0502346965020567*G0_2_2; A[1949] = 0.0521918924696702*G0_0_0 + 0.0528442911255417*G0_0_1 + 0.0900310145101804*G0_0_2 + 0.0528442911255415*G0_1_0 + 0.0378391220405116*G0_1_2 + 0.0900310145101807*G0_2_0 + 0.0378391220405117*G0_2_1 + 0.127870136550692*G0_2_2; A[1950] = 0.0521918924696704*G0_0_0 + 0.187890812890812*G0_0_1 + 0.323589733311953*G0_0_2 + 0.187890812890811*G0_1_0 + 0.323589733311953*G0_1_1 + 0.187890812890811*G0_1_2 + 0.323589733311953*G0_2_0 + 0.187890812890813*G0_2_1 + 0.0521918924696703*G0_2_2; A[1951] = 0.0391439193522516*G0_0_0 - 0.028705540858318*G0_0_1 - 0.0965550010688895*G0_0_2 - 0.0287055408583187*G0_1_0 - 0.0965550010688888*G0_1_1 - 0.059694477012185*G0_1_2 - 0.0965550010688891*G0_2_0 - 0.0596944770121843*G0_2_1 - 0.0228339529554807*G0_2_2; A[1952] = -0.0456679059109603*G0_0_0 - 0.00782878387045044*G0_0_1 + 0.0300103381700601*G0_0_2 - 0.00782878387045028*G0_1_0 + 0.0300103381700605*G0_1_1 + 0.0150051690850297*G0_1_2 + 0.0300103381700599*G0_2_0 + 0.0150051690850301*G0_2_1; A[1953] = -0.156575677409008*G0_0_0 - 0.22442513761958*G0_0_1 - 0.134067923781463*G0_0_2 - 0.224425137619579*G0_1_0 - 0.29227459783015*G0_1_1 - 0.0972073997247595*G0_1_2 - 0.134067923781464*G0_2_0 - 0.0972073997247611*G0_2_1 - 0.0880738185425678*G0_2_2; A[1954] = 0.0391439193522517*G0_0_0 + 0.0446893079271541*G0_0_1 + 0.0127217737894822*G0_0_2 + 0.0446893079271543*G0_1_0 + 0.0502346965020568*G0_1_1 + 0.0120693751336118*G0_1_2 + 0.0127217737894818*G0_2_0 + 0.0120693751336107*G0_2_1; A[1955] = 0.0521918924696692*G0_0_0 + 0.0900310145101811*G0_0_1 + 0.0528442911255409*G0_0_2 + 0.0900310145101802*G0_1_0 + 0.127870136550691*G0_1_1 + 0.0378391220405105*G0_1_2 + 0.0528442911255405*G0_2_0 + 0.0378391220405116*G0_2_1; A[1956] = -0.782878387045048*G0_0_0 - 0.466465038947673*G0_0_1 - 0.466465038947671*G0_0_2 - 0.466465038947673*G0_1_0 - 0.150051690850299*G0_1_1 - 0.335985307773496*G0_1_2 - 0.466465038947675*G0_2_0 - 0.335985307773498*G0_2_1 - 0.150051690850299*G0_2_2; A[1957] = 0.19571959676126*G0_0_0 + 0.120693751336114*G0_0_1 + 0.120693751336112*G0_0_2 + 0.12069375133611*G0_1_0 + 0.0456679059109638*G0_1_1 + 0.0717638521457968*G0_1_2 + 0.12069375133611*G0_2_0 + 0.0717638521457975*G0_2_1 + 0.0456679059109614*G0_2_2; A[1958] = 0.293579395141893*G0_0_0 + 0.218553549716739*G0_0_1 + 0.234863516113514*G0_0_2 + 0.218553549716743*G0_1_0 + 0.143527704291589*G0_1_1 + 0.185933616923198*G0_1_2 + 0.234863516113515*G0_2_0 + 0.185933616923197*G0_2_1 + 0.176147637085135*G0_2_2; A[1959] = 0.293579395141892*G0_0_0 + 0.234863516113514*G0_0_1 + 0.218553549716741*G0_0_2 + 0.234863516113515*G0_1_0 + 0.176147637085136*G0_1_1 + 0.185933616923197*G0_1_2 + 0.218553549716742*G0_2_0 + 0.185933616923198*G0_2_1 + 0.143527704291592*G0_2_2; A[1960] = -0.0345719095719093*G0_0_0 - 0.0345719095719093*G0_0_1 - 0.0345719095719094*G0_0_2 - 0.0298472385060924*G0_1_0 - 0.0298472385060922*G0_1_1 - 0.0298472385060923*G0_1_2 - 0.0298472385060922*G0_2_0 - 0.0298472385060922*G0_2_1 - 0.0298472385060921*G0_2_2; A[1961] = -0.00946499969937475*G0_0_0; A[1962] = 0.00472467106581695*G0_0_1 - 0.0298472385060925*G0_1_1; A[1963] = 0.00227817610630121*G0_0_2 + 0.0117431758056759*G0_2_2; A[1964] = 0.0845508658008659*G0_0_1 + 0.042960451489098*G0_0_2 + 0.128522535206562*G0_1_1 + 0.0422754329004331*G0_1_2 + 0.042275432900433*G0_2_1; A[1965] = 0.0808321934624001*G0_0_1 + 0.108232937008977*G0_0_2 + 0.0371867233846399*G0_1_1 + 0.0743408268364856*G0_1_2 + 0.0743408268364849*G0_2_1 + 0.104709984267273*G0_2_2; A[1966] = 0.00939454064454087*G0_0_1 + 0.0377738821749243*G0_0_2 - 0.00619778723077316*G0_1_1 + 0.0188869410874624*G0_1_2 + 0.0188869410874614*G0_2_1 + 0.0567586830607663*G0_2_2; A[1967] = -0.00254435475789594*G0_0_1 - 0.014287530563572*G0_0_2 - 0.00583896797004368*G0_1_2 - 0.00583896797004371*G0_2_1 - 0.0435476102793807*G0_2_2; A[1968] = 0.00658922642429623*G0_0_0 + 0.00329461321214809*G0_0_2 + 0.00329461321214883*G0_2_0; A[1969] = 0.00450155072550939*G0_0_0 + 0.00192457603481923*G0_0_2 + 0.00192457603481873*G0_2_0 - 0.00065239865587083*G0_2_2; A[1970] = -0.0105036183595208*G0_0_0 - 0.0130805930502105*G0_0_2 - 0.0130805930502107*G0_2_0 - 0.0156575677409005*G0_2_2; A[1971] = -0.00254435475789623*G0_0_0 - 0.0058389679700443*G0_0_2 - 0.00583896797004395*G0_2_0 - 0.00913358118219211*G0_2_2; A[1972] = 0.029260079715809*G0_0_0 + 0.00329461321214802*G0_0_1 + 0.00329461321214773*G0_1_0; A[1973] = -0.018984800885843*G0_0_0 - 0.00949240044292142*G0_0_1 - 0.00949240044292076*G0_1_0 - 0.00065239865587058*G0_1_1; A[1974] = 0.00352295274170252*G0_0_0 + 0.00649136662591491*G0_0_1 + 0.00649136662591433*G0_1_0 + 0.00880738185425623*G0_1_1; A[1975] = 0.042960451489098*G0_0_0 + 0.0422754329004335*G0_0_1 + 0.0422754329004331*G0_1_0 + 0.0642612676032815*G0_1_1; A[1976] = 0.0439716694056967*G0_0_0 + 0.0439716694056967*G0_0_1 + 0.0446566879943614*G0_0_2 + 0.128522535206563*G0_1_0 + 0.128522535206563*G0_1_1 + 0.0862471023061294*G0_1_2 + 0.086247102306129*G0_2_0 + 0.086247102306129*G0_2_1 + 0.0439716694056964*G0_2_2; A[1977] = -0.0436454700777614*G0_0_0 - 0.0436454700777615*G0_0_1 - 0.00975335990526935*G0_0_2 + 0.0371867233846378*G0_1_0 + 0.0371867233846379*G0_1_1 - 0.0371541034518461*G0_1_2 - 0.0371541034518461*G0_2_0 - 0.0371541034518462*G0_2_1 - 0.00678494602105647*G0_2_2; A[1978] = -0.0155923278753132*G0_0_0 - 0.0155923278753132*G0_0_1 + 0.00329461321214766*G0_0_2 - 0.00619778723077192*G0_1_0 - 0.00619778723077206*G0_1_1 - 0.0250847283182352*G0_1_2 - 0.0250847283182344*G0_2_0 - 0.0250847283182343*G0_2_1 + 0.0127870136550687*G0_2_2; A[1979] = 0.00254435475789599*G0_0_0 + 0.002544354757896*G0_0_1 - 0.00590420783563141*G0_0_2 + 0.00583896797004423*G0_1_2 + 0.0058389679700438*G0_2_0 + 0.00583896797004378*G0_2_1 - 0.0318696743392922*G0_2_2; A[1980] = 0.127315597693201*G0_0_0 + 0.128000616281866*G0_0_1 + 0.127315597693201*G0_0_2 + 0.134361503176607*G0_1_0 + 0.0920860702761736*G0_1_1 + 0.134361503176607*G0_1_2 + 0.176636936077038*G0_2_0 + 0.134361503176606*G0_2_1 + 0.176636936077038*G0_2_2; A[1981] = -0.166948816037356*G0_0_0 - 0.160783648739377*G0_0_1 - 0.166948816037356*G0_0_2 - 0.250814663249557*G0_1_0 - 0.0622388317700808*G0_1_1 - 0.250814663249557*G0_1_2 - 0.334680510461756*G0_2_0 - 0.250814663249556*G0_2_1 - 0.334680510461756*G0_2_2; A[1982] = 0.182410664181496*G0_0_0 + 0.0985448169692951*G0_0_1 + 0.182410664181497*G0_0_2 + 0.188575831479476*G0_1_0 - 0.0622388317700816*G0_1_1 + 0.188575831479476*G0_1_2 + 0.104709984267275*G0_2_0 + 0.188575831479475*G0_2_1 + 0.104709984267275*G0_2_2; A[1983] = -0.0429604514890978*G0_0_0 - 0.0359145460056914*G0_0_1 - 0.0429604514890979*G0_0_2 - 0.042275432900433*G0_1_0 + 0.0920860702761739*G0_1_1 - 0.042275432900433*G0_1_2 - 0.0422754329004321*G0_2_1; A[1984] = 0.0226708532915134*G0_0_0 + 0.0219858347028488*G0_0_1 + 0.0219858347028487*G0_0_2 + 0.0219858347028488*G0_1_0 + 0.064261267603282*G0_1_1 + 0.064261267603282*G0_1_2 + 0.0219858347028485*G0_2_0 + 0.0642612676032812*G0_2_1 + 0.064261267603281*G0_2_2; A[1985] = -0.00065239865587139*G0_0_0 + 0.0023160152283415*G0_0_1 + 0.00231601522834142*G0_0_2 + 0.00231601522834099*G0_1_0 + 0.00880738185425605*G0_1_1 + 0.00880738185425601*G0_1_2 + 0.0023160152283413*G0_2_0 + 0.00880738185425646*G0_2_1 + 0.00880738185425649*G0_2_2; A[1986] = -0.000652398655870775*G0_0_0 + 0.00884000178705073*G0_0_1 + 0.00884000178705067*G0_0_2 + 0.00884000178705098*G0_1_0 - 0.000652398655869813*G0_1_1 - 0.000652398655869828*G0_1_2 + 0.0088400017870502*G0_2_0 - 0.000652398655870288*G0_2_1 - 0.000652398655870434*G0_2_2; A[1987] = 0.022670853291513*G0_0_0 - 0.00329461321214799*G0_0_1 - 0.00329461321214799*G0_0_2 - 0.00329461321214846*G0_1_0 - 0.00329461321214756*G0_2_0; A[1988] = -0.0254435475789647*G0_0_0 - 0.00130479731174148*G0_0_1 - 0.0127217737894825*G0_0_2 - 0.00130479731174159*G0_1_0 - 0.000652398655871023*G0_1_2 - 0.0127217737894836*G0_2_0 - 0.000652398655871051*G0_2_1; A[1989] = 0.0567586830607661*G0_0_0 + 0.0283793415303832*G0_0_1 + 0.0283793415303826*G0_0_2 + 0.028379341530383*G0_1_0 - 0.00489298991903052*G0_1_1 + 0.014189670765192*G0_1_2 + 0.0283793415303847*G0_2_0 + 0.0141896707651932*G0_2_1; A[1990] = 0.209419968534551*G0_0_0 + 0.135698920421141*G0_0_1 + 0.104709984267276*G0_0_2 + 0.135698920421142*G0_1_0 + 0.0391439193522518*G0_1_1 + 0.0678494602105705*G0_1_2 + 0.104709984267274*G0_2_0 + 0.0678494602105694*G0_2_1; A[1991] = -0.0166361657247046*G0_0_0 - 0.0181040627004147*G0_0_1 + 0.00146789697571146*G0_0_2 - 0.018104062700415*G0_1_0 - 0.010275278829965*G0_1_2 + 0.00146789697571268*G0_2_0 - 0.0102752788299648*G0_2_1 + 0.0195719596761283*G0_2_2; A[1992] = 0.149725491522364*G0_0_0 + 0.074862745761183*G0_0_1 + 0.121346149991981*G0_0_2 + 0.0748627457611828*G0_1_0 + 0.0195719596761274*G0_1_1 + 0.0606730749959912*G0_1_2 + 0.12134614999198*G0_2_0 + 0.0606730749959911*G0_2_1 + 0.0929668084615985*G0_2_2; A[1993] = 0.013700371773289*G0_0_0 - 0.00619778723077266*G0_0_1 + 0.0264221455627714*G0_0_2 - 0.00619778723077154*G0_1_0 - 0.00554538857490054*G0_1_2 + 0.0264221455627703*G0_2_0 - 0.00554538857490166*G0_2_1 + 0.0391439193522527*G0_2_2; A[1994] = -0.268135847562928*G0_0_0 - 0.19441479944952*G0_0_1 - 0.222141742324032*G0_0_2 - 0.448850275239161*G0_1_0 - 0.584549195660302*G0_1_1 - 0.321632537344342*G0_1_2 - 0.290643601190473*G0_2_0 - 0.321632537344339*G0_2_1 - 0.268135847562928*G0_2_2; A[1995] = 0.726119703984281*G0_0_0 + 0.45602666045374*G0_0_1 + 0.456026660453739*G0_0_2 + 0.45602666045374*G0_1_0 + 0.912053320907479*G0_1_1 + 0.45602666045374*G0_1_2 + 0.456026660453739*G0_2_0 + 0.45602666045374*G0_2_1 + 0.726119703984278*G0_2_2; A[1996] = -0.209419968534551*G0_0_0 - 0.390134396210784*G0_0_1 - 0.290643601190474*G0_0_2 - 0.135698920421142*G0_1_0 - 0.584549195660303*G0_1_1 - 0.262916658315962*G0_1_2 - 0.104709984267274*G0_2_0 - 0.262916658315963*G0_2_1 - 0.209419968534549*G0_2_2; A[1997] = 0.0655660649150223*G0_0_0 + 0.140428810676204*G0_0_1 + 0.0376760223765434*G0_0_2 + 0.0376760223765437*G0_1_0 - 0.037186723384638*G0_1_1 + 0.186912214907007*G0_1_2 + 0.140428810676204*G0_2_0 + 0.186912214907003*G0_2_1 - 0.0371867233846391*G0_2_2; A[1998] = -0.149725491522364*G0_0_0 - 0.177615534060843*G0_0_1 - 0.326851726591307*G0_0_2 - 0.0748627457611829*G0_1_0 - 0.0371867233846404*G0_1_1 - 0.224098938291645*G0_1_2 - 0.12134614999198*G0_2_0 - 0.224098938291642*G0_2_1 - 0.448197876583288*G0_2_2; A[1999] = -0.0137003717732894*G0_0_0 + 0.00619778723077262*G0_0_1 + 0.0714376528178596*G0_0_2 + 0.00619778723077152*G0_1_0 + 0.0123955744615455*G0_1_1 + 0.0061977872307718*G0_1_2 - 0.0264221455627704*G0_2_0 + 0.00619778723077331*G0_2_1 + 0.172233245149909*G0_2_2; A[2000] = -0.0228339529554805*G0_0_0 - 0.0965550010688894*G0_0_1 - 0.0596944770121854*G0_0_2 - 0.0965550010688895*G0_1_0 + 0.0391439193522511*G0_1_1 - 0.0287055408583207*G0_1_2 - 0.0596944770121848*G0_2_0 - 0.0287055408583187*G0_2_1 - 0.0965550010688894*G0_2_2; A[2001] = -0.00489298991903091*G0_0_0 - 0.0332723314494142*G0_0_1 - 0.019082660684223*G0_0_2 - 0.0332723314494141*G0_1_0 - 0.0048929899190305*G0_1_1 - 0.0190826606842222*G0_1_2 - 0.0190826606842217*G0_2_0 - 0.0190826606842219*G0_2_1 - 0.0332723314494138*G0_2_2; A[2002] = -0.0228339529554815*G0_0_0 + 0.00130479731174149*G0_0_1 - 0.0107645778218701*G0_0_2 + 0.00130479731174098*G0_1_0 + 0.000652398655869514*G0_1_2 - 0.0107645778218714*G0_2_0 + 0.000652398655870641*G0_2_1 + 0.00130479731174118*G0_2_2; A[2003] = 0.0195719596761255*G0_0_0 - 0.0552907860850559*G0_0_1 + 0.00538228891093553*G0_0_2 - 0.0552907860850552*G0_1_0 + 0.0195719596761265*G0_1_1 - 0.0411011153198627*G0_1_2 + 0.00538228891093379*G0_2_0 - 0.0411011153198655*G0_2_1 - 0.00880738185425649*G0_2_2; A[2004] = 0.0195719596761264*G0_0_0 + 0.0181040627004152*G0_0_1 + 0.0298472385060926*G0_0_2 + 0.0181040627004168*G0_1_0 + 0.0102752788299666*G0_1_2 + 0.0298472385060935*G0_2_0 + 0.0102752788299653*G0_2_1 + 0.0401225173360585*G0_2_2; A[2005] = 0.0260959462348342*G0_0_0 + 0.00619778723077259*G0_0_1 + 0.0381653213684452*G0_0_2 + 0.00619778723077253*G0_1_0 + 0.0055453885749008*G0_1_2 + 0.0381653213684453*G0_2_0 + 0.00554538857490167*G0_2_1 + 0.0502346965020567*G0_2_2; A[2006] = -0.0880738185425682*G0_0_0 - 0.0972073997247608*G0_0_1 - 0.134067923781464*G0_0_2 - 0.0972073997247606*G0_1_0 - 0.292274597830152*G0_1_1 - 0.22442513761958*G0_1_2 - 0.134067923781464*G0_2_0 - 0.22442513761958*G0_2_1 - 0.156575677409009*G0_2_2; A[2007] = 0.0195719596761272*G0_0_0 - 0.041101115319866*G0_0_1 - 0.0552907860850572*G0_0_2 - 0.0411011153198646*G0_1_0 - 0.00880738185425727*G0_1_1 + 0.0053822889109346*G0_1_2 - 0.0552907860850557*G0_2_0 + 0.00538228891093384*G0_2_1 + 0.0195719596761258*G0_2_2; A[2008] = -0.0880738185425689*G0_0_0 + 0.000652398655870729*G0_0_1 + 0.0127217737894826*G0_0_2 + 0.000652398655870538*G0_1_0 + 0.00130479731174096*G0_1_1 + 0.000652398655870952*G0_1_2 + 0.012721773789481*G0_2_0 + 0.000652398655870822*G0_2_1; A[2009] = 0.0929668084615976*G0_0_0 + 0.228013330226871*G0_0_1 + 0.36305985199214*G0_0_2 + 0.228013330226868*G0_1_0 + 0.456026660453739*G0_1_1 + 0.228013330226869*G0_1_2 + 0.363059851992138*G0_2_0 + 0.22801333022687*G0_2_1 + 0.0929668084615986*G0_2_2; A[2010] = 0.092966808461601*G0_0_0 + 0.0322937334656095*G0_0_1 - 0.0283793415303826*G0_0_2 + 0.0322937334656088*G0_1_0 - 0.00880738185425563*G0_1_1 - 0.0141896707651918*G0_1_2 - 0.0283793415303817*G0_2_0 - 0.0141896707651903*G0_2_1; A[2011] = -0.185933616923199*G0_0_0 - 0.195067198105393*G0_0_1 - 0.104709984267276*G0_0_2 - 0.19506719810539*G0_1_0 - 0.292274597830151*G0_1_1 - 0.0678494602105706*G0_1_2 - 0.104709984267275*G0_2_0 - 0.0678494602105721*G0_2_1; A[2012] = 0.146789697570943*G0_0_0 + 0.445262082631867*G0_0_1 + 0.249542485870607*G0_0_2 + 0.44526208263187*G0_1_0 - 0.0391439193522525*G0_1_1 + 0.249542485870607*G0_1_2 + 0.249542485870605*G0_2_0 + 0.249542485870604*G0_2_1 + 0.352295274170267*G0_2_2; A[2013] = 0.146789697570949*G0_0_0 + 0.00489298991903092*G0_0_1 + 0.0538228891093454*G0_0_2 + 0.00489298991903262*G0_1_0 + 0.00978597983806055*G0_1_1 + 0.00489298991903041*G0_1_2 + 0.053822889109351*G0_2_0 + 0.00489298991902956*G0_2_1 - 0.0391439193522538*G0_2_2; A[2014] = -0.782878387045047*G0_0_0 - 0.484406001984119*G0_0_1 - 0.484406001984121*G0_0_2 - 0.484406001984124*G0_1_0 - 0.0391439193522513*G0_1_1 - 0.288686405222861*G0_1_2 - 0.484406001984124*G0_2_0 - 0.288686405222857*G0_2_1 - 0.185933616923198*G0_2_2; A[2015] = -0.0489298991903176*G0_0_0 - 0.0195719596761273*G0_0_1 - 0.141896707651914*G0_0_2 - 0.0195719596761286*G0_1_0 - 0.0391439193522537*G0_1_1 - 0.0195719596761274*G0_1_2 - 0.141896707651916*G0_2_0 - 0.0195719596761258*G0_2_1 - 0.234863516113511*G0_2_2; A[2016] = 0.013742125287264*G0_0_0 + 0.0137421252872641*G0_0_1 + 0.0137421252872641*G0_0_2 + 0.0189195610202555*G0_1_0 + 0.0189195610202554*G0_1_1 + 0.0189195610202555*G0_1_2 + 0.0189195610202552*G0_2_0 + 0.0189195610202552*G0_2_1 + 0.0189195610202553*G0_2_2; A[2017] = -0.0137421252872642*G0_0_0; A[2018] = -0.014394523943135*G0_0_1 + 0.03359853077735*G0_1_1; A[2019] = 0.00517743573299117*G0_0_2 + 0.0189195610202552*G0_2_2; A[2020] = -0.192588083213083*G0_0_1 - 0.124738623002512*G0_0_2 - 0.257045070413124*G0_1_1 - 0.0962940416065416*G0_1_2 - 0.0962940416065417*G0_2_1; A[2021] = -0.0109602974186293*G0_0_1 - 0.146659217839771*G0_0_2 + 0.121346149991982*G0_1_1 - 0.0733296089198862*G0_1_2 - 0.0733296089198849*G0_2_1 - 0.271397840842282*G0_2_2; A[2022] = -0.00182671623643963*G0_0_1 + 0.082332710370903*G0_0_2 - 0.0528442911255415*G0_1_1 + 0.0359471659384843*G0_1_2 + 0.0359471659384845*G0_2_1 + 0.209419968534549*G0_2_2; A[2023] = -0.0118736555368494*G0_0_1 - 0.0477555816097474*G0_0_2 - 0.0212681961813907*G0_1_2 - 0.0212681961813902*G0_2_1 - 0.111886369481854*G0_2_2; A[2024] = 0.0187890812890811*G0_0_0 + 0.00939454064454076*G0_0_2 + 0.00939454064454047*G0_2_0; A[2025] = -0.0148746893538554*G0_0_0 - 0.0149399292194429*G0_0_2 - 0.0149399292194427*G0_2_0 - 0.0150051690850297*G0_2_2; A[2026] = -0.00117431758056757*G0_0_0 - 0.00123955744615479*G0_0_2 - 0.00123955744615444*G0_2_0 - 0.00130479731174191*G0_2_2; A[2027] = -0.0118736555368493*G0_0_0 - 0.0212681961813898*G0_0_2 - 0.0212681961813902*G0_2_0 - 0.0306627368259305*G0_2_2; A[2028] = 0.0641307878721071*G0_0_0 + 0.0093945406445408*G0_0_1 + 0.00939454064454091*G0_1_0; A[2029] = -0.127087258163647*G0_0_0 - 0.0377738821749245*G0_0_1 - 0.0377738821749243*G0_1_0 - 0.0150051690850302*G0_1_1; A[2030] = 0.124738623002512*G0_0_0 + 0.0623693115012559*G0_0_1 + 0.0623693115012565*G0_1_0 + 0.0476251018785739*G0_1_1; A[2031] = -0.124738623002512*G0_0_0 - 0.0962940416065418*G0_0_1 - 0.0962940416065416*G0_1_0 - 0.128522535206562*G0_1_1; A[2032] = -0.0187890812890809*G0_0_0 - 0.0187890812890809*G0_0_1 - 0.00939454064454072*G0_0_2 - 0.0613254736518626*G0_1_0 - 0.0613254736518625*G0_1_1 - 0.0400572774704723*G0_1_2 - 0.0400572774704714*G0_2_0 - 0.0400572774704715*G0_2_1 - 0.0187890812890811*G0_2_2; A[2033] = 0.0148746893538561*G0_0_0 + 0.0148746893538561*G0_0_1 - 6.52398655868782e-05*G0_0_2 - 0.0254435475789627*G0_1_0 - 0.0254435475789628*G0_1_1 + 0.0136351319077019*G0_1_2 + 0.0136351319077011*G0_2_0 + 0.0136351319077011*G0_2_1 - 0.000130479731174252*G0_2_2; A[2034] = 0.00117431758056736*G0_0_0 + 0.00117431758056732*G0_0_1 - 6.52398655876235e-05*G0_0_2 - 0.0528442911255415*G0_1_0 - 0.0528442911255414*G0_1_1 - 0.0137656116388759*G0_1_2 - 0.0137656116388754*G0_2_0 - 0.0137656116388754*G0_2_1 - 0.000130479731174421*G0_2_2; A[2035] = 0.0118736555368495*G0_0_0 + 0.0118736555368495*G0_0_1 - 0.00939454064454024*G0_0_2 + 0.0212681961813907*G0_1_2 + 0.0212681961813903*G0_2_0 + 0.0212681961813903*G0_2_1 - 0.0187890812890809*G0_2_2; A[2036] = -0.0641307878721066*G0_0_0 - 0.0547362472275663*G0_0_1 - 0.0641307878721066*G0_0_2 - 0.0906181733004647*G0_1_0 - 0.0693499771190742*G0_1_1 - 0.0906181733004648*G0_1_2 - 0.111886369481855*G0_2_0 - 0.0906181733004644*G0_2_1 - 0.111886369481855*G0_2_2; A[2037] = 0.127087258163646*G0_0_0 + 0.0893133759887224*G0_0_1 + 0.127087258163646*G0_0_2 + 0.173472802596065*G0_1_0 + 0.0846813455320393*G0_1_1 + 0.173472802596065*G0_1_2 + 0.20941996853455*G0_2_0 + 0.173472802596065*G0_2_1 + 0.20941996853455*G0_2_2; A[2038] = -0.124738623002511*G0_0_0 - 0.0623693115012555*G0_0_1 - 0.124738623002511*G0_0_2 - 0.198068231922397*G0_1_0 - 0.00339247301052852*G0_1_1 - 0.198068231922397*G0_1_2 - 0.271397840842283*G0_2_0 - 0.198068231922397*G0_2_1 - 0.271397840842283*G0_2_2; A[2039] = 0.124738623002512*G0_0_0 + 0.0284445813959704*G0_0_1 + 0.124738623002512*G0_0_2 + 0.0962940416065414*G0_1_0 - 0.0644569872000422*G0_1_1 + 0.0962940416065415*G0_1_2 + 0.0962940416065409*G0_2_1; A[2040] = -0.00939454064454024*G0_0_1 - 0.00939454064454024*G0_0_2 - 0.00939454064454128*G0_1_0 - 0.0306627368259316*G0_1_1 - 0.0306627368259316*G0_1_2 - 0.00939454064454075*G0_2_0 - 0.0306627368259311*G0_2_1 - 0.030662736825931*G0_2_2; A[2041] = -6.52398655871564e-05*G0_0_1 - 6.52398655870678e-05*G0_0_2 - 6.52398655863307e-05*G0_1_0 - 0.0013047973117416*G0_1_1 - 0.00130479731174153*G0_1_2 - 6.52398655868807e-05*G0_2_0 - 0.00130479731174148*G0_2_1 - 0.0013047973117415*G0_2_2; A[2042] = -6.52398655872805e-05*G0_0_1 - 6.52398655873005e-05*G0_0_2 - 6.52398655878975e-05*G0_1_0 - 0.0150051690850308*G0_1_1 - 0.0150051690850308*G0_1_2 - 6.52398655872228e-05*G0_2_0 - 0.0150051690850305*G0_2_1 - 0.0150051690850304*G0_2_2; A[2043] = -0.00939454064454063*G0_0_1 - 0.00939454064454067*G0_0_2 - 0.00939454064453984*G0_1_0 - 0.00939454064454037*G0_2_0; A[2044] = -0.105688582251082*G0_0_0 - 0.03001033817006*G0_0_1 - 0.0528442911255412*G0_0_2 - 0.0300103381700612*G0_1_0 - 0.0150051690850304*G0_1_2 - 0.0528442911255405*G0_2_0 - 0.0150051690850298*G0_2_1; A[2045] = 0.209419968534549*G0_0_0 + 0.0737210481134068*G0_0_1 + 0.104709984267273*G0_0_2 + 0.0737210481134091*G0_1_0 - 0.0228339529554804*G0_1_1 + 0.0368605240567038*G0_1_2 + 0.104709984267274*G0_2_0 + 0.0368605240567028*G0_2_1; A[2046] = -0.542795681684567*G0_0_0 - 0.271397840842282*G0_0_1 - 0.271397840842284*G0_0_2 - 0.271397840842285*G0_1_0 + 0.0521918924696689*G0_1_1 - 0.135698920421142*G0_1_2 - 0.271397840842283*G0_2_0 - 0.13569892042114*G0_2_1; A[2047] = 0.0137003717732883*G0_0_0 - 0.0127217737894812*G0_0_1 + 0.0198981590040624*G0_0_2 - 0.0127217737894825*G0_1_0 - 0.0120693751336118*G0_1_2 + 0.0198981590040606*G0_2_0 - 0.0120693751336108*G0_2_1 + 0.0260959462348344*G0_2_2; A[2048] = 0.0234863516113502*G0_0_0 + 0.0459941052388942*G0_0_1 - 0.0812236326559236*G0_0_2 + 0.0459941052388955*G0_1_0 - 0.0880738185425689*G0_1_1 + 0.00913358118219191*G0_1_2 - 0.0812236326559235*G0_2_0 + 0.00913358118219037*G0_2_1 - 0.185933616923198*G0_2_2; A[2049] = -0.0534966897814119*G0_0_0 - 0.0528442911255398*G0_0_1 - 0.000652398655871907*G0_0_2 - 0.052844291125542*G0_1_0 - 0.037839122040512*G0_1_2 - 0.00065239865587101*G0_2_0 - 0.03783912204051*G0_2_1 + 0.0521918924696694*G0_2_2; A[2050] = 0.105688582251081*G0_0_0 + 0.075678244081021*G0_0_1 + 0.0528442911255407*G0_0_2 + 0.180062029020362*G0_1_0 + 0.255740273101383*G0_1_1 + 0.127870136550692*G0_1_2 + 0.10503618359521*G0_2_0 + 0.127870136550691*G0_2_1 + 0.105688582251081*G0_2_2; A[2051] = -0.209419968534551*G0_0_0 - 0.135698920421142*G0_0_1 - 0.104709984267274*G0_0_2 - 0.390134396210784*G0_1_0 - 0.584549195660303*G0_1_1 - 0.262916658315963*G0_1_2 - 0.290643601190474*G0_2_0 - 0.262916658315962*G0_2_1 - 0.209419968534549*G0_2_2; A[2052] = 0.542795681684568*G0_0_0 + 0.271397840842285*G0_0_1 + 0.271397840842283*G0_0_2 + 0.271397840842285*G0_1_0 + 0.647179466623906*G0_1_1 + 0.271397840842284*G0_1_2 + 0.271397840842283*G0_2_0 + 0.271397840842284*G0_2_1 + 0.542795681684565*G0_2_2; A[2053] = -0.0137003717732859*G0_0_0 - 0.0264221455627692*G0_0_1 + 0.00619778723077377*G0_0_2 + 0.0714376528178592*G0_1_0 + 0.172233245149909*G0_1_1 + 0.00619778723077239*G0_1_2 + 0.00619778723077445*G0_2_0 + 0.00619778723077407*G0_2_1 + 0.0123955744615472*G0_2_2; A[2054] = -0.0234863516113509*G0_0_0 + 0.0225077536275429*G0_0_1 - 0.104709984267275*G0_0_2 - 0.0459941052388957*G0_1_0 - 0.268135847562928*G0_1_1 + 0.0534966897814128*G0_1_2 + 0.0812236326559233*G0_2_0 + 0.0534966897814102*G0_2_1 - 0.20941996853455*G0_2_2; A[2055] = 0.053496689781412*G0_0_0 + 0.000652398655872257*G0_0_1 + 0.05284429112554*G0_0_2 + 0.0528442911255423*G0_1_0 + 0.105688582251083*G0_1_1 - 0.022181554299609*G0_1_2 + 0.000652398655871128*G0_2_0 - 0.0221815542996091*G0_2_1 + 0.105688582251081*G0_2_2; A[2056] = 0.030010338170061*G0_0_1 + 0.0150051690850299*G0_0_2 + 0.0300103381700602*G0_1_0 - 0.0456679059109604*G0_1_1 - 0.0078287838704492*G0_1_2 + 0.01500516908503*G0_2_0 - 0.00782878387045048*G0_2_1 + 0.0300103381700598*G0_2_2; A[2057] = 0.00130479731174014*G0_0_1 + 0.000652398655870397*G0_0_2 + 0.00130479731174215*G0_1_0 - 0.0228339529554808*G0_1_1 - 0.0107645778218691*G0_1_2 + 0.000652398655870573*G0_2_0 - 0.0107645778218702*G0_2_1 + 0.00130479731174155*G0_2_2; A[2058] = 0.0300103381700601*G0_0_1 + 0.0150051690850303*G0_0_2 + 0.0300103381700602*G0_1_0 + 0.0150051690850311*G0_1_2 + 0.0150051690850304*G0_2_0 + 0.0150051690850297*G0_2_1 + 0.0300103381700601*G0_2_2; A[2059] = 0.0127217737894835*G0_0_1 + 0.000652398655870933*G0_0_2 + 0.0127217737894811*G0_1_0 - 0.0880738185425683*G0_1_1 + 0.000652398655869457*G0_1_2 + 0.00065239865587089*G0_2_0 + 0.000652398655871224*G0_2_1 + 0.00130479731174211*G0_2_2; A[2060] = 0.0127217737894812*G0_0_1 + 0.000652398655871443*G0_0_2 + 0.0127217737894822*G0_1_0 + 0.0120693751336105*G0_1_2 + 0.000652398655870766*G0_2_0 + 0.0120693751336108*G0_2_1 + 0.00130479731174169*G0_2_2; A[2061] = 0.0528442911255399*G0_0_1 + 0.0150051690850289*G0_0_2 + 0.0528442911255413*G0_1_0 + 0.0378391220405115*G0_1_2 + 0.0150051690850298*G0_2_0 + 0.03783912204051*G0_2_1 + 0.0300103381700596*G0_2_2; A[2062] = 0.0378391220405098*G0_0_1 + 0.0528442911255407*G0_0_2 + 0.0378391220405105*G0_1_0 + 0.127870136550692*G0_1_1 + 0.0900310145101806*G0_1_2 + 0.0528442911255407*G0_2_0 + 0.0900310145101808*G0_2_1 + 0.0521918924696706*G0_2_2; A[2063] = 0.00554538857490315*G0_0_1 + 0.00619778723077287*G0_0_2 + 0.00554538857490299*G0_1_0 + 0.0502346965020582*G0_1_1 + 0.0381653213684463*G0_1_2 + 0.00619778723077285*G0_2_0 + 0.0381653213684463*G0_2_1 + 0.0260959462348347*G0_2_2; A[2064] = 0.0378391220405115*G0_0_1 + 0.0528442911255415*G0_0_2 + 0.0378391220405103*G0_1_0 + 0.0300103381700607*G0_1_1 + 0.0150051690850305*G0_1_2 + 0.0528442911255409*G0_2_0 + 0.0150051690850307*G0_2_1; A[2065] = -0.0678494602105707*G0_0_1 - 0.104709984267275*G0_0_2 - 0.0678494602105701*G0_1_0 - 0.292274597830152*G0_1_1 - 0.195067198105391*G0_1_2 - 0.104709984267274*G0_2_0 - 0.195067198105392*G0_2_1 - 0.185933616923199*G0_2_2; A[2066] = -0.0678494602105718*G0_0_1 - 0.104709984267274*G0_0_2 - 0.0678494602105709*G0_1_0 - 0.0965550010688902*G0_1_1 - 0.036860524056704*G0_1_2 - 0.104709984267275*G0_2_0 - 0.036860524056705*G0_2_1; A[2067] = 0.135698920421143*G0_0_1 + 0.271397840842283*G0_0_2 + 0.135698920421141*G0_1_0 + 0.323589733311953*G0_1_1 + 0.135698920421142*G0_1_2 + 0.271397840842283*G0_2_0 + 0.135698920421143*G0_2_1; A[2068] = -0.0750258454251499*G0_0_1 - 0.0260959462348322*G0_0_2 - 0.0750258454251506*G0_1_0 + 0.143527704291591*G0_1_1 - 0.0424059126316074*G0_1_2 - 0.026095946234834*G0_2_0 - 0.0424059126316053*G0_2_1 - 0.0521918924696696*G0_2_2; A[2069] = -0.0750258454251473*G0_0_1 - 0.0260959462348355*G0_0_2 - 0.0750258454251499*G0_1_0 + 0.0456679059109624*G0_1_1 - 0.0260959462348345*G0_1_2 - 0.0260959462348352*G0_2_0 - 0.0260959462348324*G0_2_1 - 0.0521918924696688*G0_2_2; A[2070] = 0.316413348097371*G0_0_1 + 0.1859336169232*G0_0_2 + 0.316413348097375*G0_1_0 - 0.150051690850299*G0_1_1 + 0.1859336169232*G0_1_2 + 0.185933616923199*G0_2_0 + 0.185933616923196*G0_2_1 + 0.371867233846398*G0_2_2; A[2071] = -0.0587158790283778*G0_0_1 - 0.0260959462348363*G0_0_2 - 0.0587158790283767*G0_1_0 + 0.176147637085137*G0_1_1 - 0.00978597983806069*G0_1_2 - 0.0260959462348348*G0_2_0 - 0.00978597983806184*G0_2_1 - 0.0521918924696698*G0_2_2; A[2072] = -0.0345719095719091*G0_0_0 - 0.0345719095719092*G0_0_1 - 0.0345719095719091*G0_0_2 - 0.0298472385060924*G0_1_0 - 0.0298472385060925*G0_1_1 - 0.0298472385060924*G0_1_2 - 0.0298472385060923*G0_2_0 - 0.0298472385060924*G0_2_1 - 0.0298472385060923*G0_2_2; A[2073] = -0.00946499969937492*G0_0_0; A[2074] = 0.00227817610630109*G0_0_1 + 0.0117431758056757*G0_1_1; A[2075] = 0.00472467106581686*G0_0_2 - 0.0298472385060924*G0_2_2; A[2076] = -0.0142875305635721*G0_0_1 - 0.00254435475789594*G0_0_2 - 0.0435476102793803*G0_1_1 - 0.00583896797004385*G0_1_2 - 0.00583896797004431*G0_2_1; A[2077] = 0.0377738821749219*G0_0_1 + 0.00939454064453862*G0_0_2 + 0.0567586830607651*G0_1_1 + 0.0188869410874605*G0_1_2 + 0.0188869410874616*G0_2_1 - 0.00619778723077389*G0_2_2; A[2078] = 0.108232937008977*G0_0_1 + 0.0808321934624011*G0_0_2 + 0.104709984267274*G0_1_1 + 0.0743408268364856*G0_1_2 + 0.0743408268364852*G0_2_1 + 0.03718672338464*G0_2_2; A[2079] = 0.0429604514890964*G0_0_1 + 0.0845508658008641*G0_0_2 + 0.0422754329004326*G0_1_2 + 0.0422754329004327*G0_2_1 + 0.128522535206562*G0_2_2; A[2080] = 0.0292600797158092*G0_0_0 + 0.00329461321214781*G0_0_2 + 0.00329461321214836*G0_2_0; A[2081] = -0.0189848008858435*G0_0_0 - 0.00949240044292148*G0_0_2 - 0.00949240044292225*G0_2_0 - 0.000652398655870446*G0_2_2; A[2082] = 0.00352295274170329*G0_0_0 + 0.00649136662591556*G0_0_2 + 0.00649136662591566*G0_2_0 + 0.0088073818542562*G0_2_2; A[2083] = 0.0429604514890964*G0_0_0 + 0.0422754329004319*G0_0_2 + 0.0422754329004327*G0_2_0 + 0.0642612676032814*G0_2_2; A[2084] = 0.0065892264242959*G0_0_0 + 0.0032946132121478*G0_0_1 + 0.00329461321214797*G0_1_0; A[2085] = 0.00450155072550874*G0_0_0 + 0.00192457603481883*G0_0_1 + 0.00192457603481895*G0_1_0 - 0.000652398655870291*G0_1_1; A[2086] = -0.0105036183595208*G0_0_0 - 0.0130805930502107*G0_0_1 - 0.0130805930502107*G0_1_0 - 0.0156575677409012*G0_1_1; A[2087] = -0.00254435475789603*G0_0_0 - 0.00583896797004406*G0_0_1 - 0.005838967970044*G0_1_0 - 0.00913358118219159*G0_1_1; A[2088] = 0.1273155976932*G0_0_0 + 0.1273155976932*G0_0_1 + 0.128000616281865*G0_0_2 + 0.176636936077038*G0_1_0 + 0.176636936077039*G0_1_1 + 0.134361503176606*G0_1_2 + 0.134361503176606*G0_2_0 + 0.134361503176606*G0_2_1 + 0.0920860702761732*G0_2_2; A[2089] = -0.166948816037355*G0_0_0 - 0.166948816037355*G0_0_1 - 0.160783648739376*G0_0_2 - 0.334680510461757*G0_1_0 - 0.334680510461758*G0_1_1 - 0.250814663249557*G0_1_2 - 0.250814663249557*G0_2_0 - 0.250814663249557*G0_2_1 - 0.0622388317700806*G0_2_2; A[2090] = 0.182410664181496*G0_0_0 + 0.182410664181496*G0_0_1 + 0.0985448169692952*G0_0_2 + 0.104709984267275*G0_1_0 + 0.104709984267275*G0_1_1 + 0.188575831479476*G0_1_2 + 0.188575831479476*G0_2_0 + 0.188575831479475*G0_2_1 - 0.0622388317700818*G0_2_2; A[2091] = -0.0429604514890963*G0_0_0 - 0.0429604514890963*G0_0_1 - 0.0359145460056917*G0_0_2 - 0.0422754329004326*G0_1_2 - 0.0422754329004326*G0_2_0 - 0.0422754329004326*G0_2_1 + 0.0920860702761739*G0_2_2; A[2092] = 0.0439716694056968*G0_0_0 + 0.0446566879943613*G0_0_1 + 0.0439716694056967*G0_0_2 + 0.0862471023061292*G0_1_0 + 0.0439716694056969*G0_1_1 + 0.0862471023061292*G0_1_2 + 0.128522535206562*G0_2_0 + 0.0862471023061294*G0_2_1 + 0.128522535206562*G0_2_2; A[2093] = -0.0436454700777608*G0_0_0 - 0.00975335990526972*G0_0_1 - 0.0436454700777608*G0_0_2 - 0.0371541034518458*G0_1_0 - 0.00678494602105682*G0_1_1 - 0.0371541034518458*G0_1_2 + 0.0371867233846395*G0_2_0 - 0.0371541034518459*G0_2_1 + 0.0371867233846395*G0_2_2; A[2094] = -0.0155923278753135*G0_0_0 + 0.00329461321214804*G0_0_1 - 0.0155923278753133*G0_0_2 - 0.0250847283182348*G0_1_0 + 0.0127870136550686*G0_1_1 - 0.0250847283182348*G0_1_2 - 0.00619778723077353*G0_2_0 - 0.0250847283182357*G0_2_1 - 0.00619778723077353*G0_2_2; A[2095] = 0.00254435475789611*G0_0_0 - 0.00590420783563144*G0_0_1 + 0.00254435475789605*G0_0_2 + 0.00583896797004402*G0_1_0 - 0.0318696743392917*G0_1_1 + 0.00583896797004412*G0_1_2 + 0.00583896797004483*G0_2_1; A[2096] = 0.0226708532915127*G0_0_0 + 0.0219858347028482*G0_0_1 + 0.0219858347028481*G0_0_2 + 0.0219858347028485*G0_1_0 + 0.0642612676032809*G0_1_1 + 0.0642612676032807*G0_1_2 + 0.0219858347028483*G0_2_0 + 0.0642612676032813*G0_2_1 + 0.0642612676032813*G0_2_2; A[2097] = -0.000652398655870607*G0_0_0 + 0.00231601522834146*G0_0_1 + 0.00231601522834143*G0_0_2 + 0.00231601522834175*G0_1_0 + 0.00880738185425697*G0_1_1 + 0.00880738185425694*G0_1_2 + 0.00231601522834181*G0_2_0 + 0.00880738185425723*G0_2_1 + 0.00880738185425708*G0_2_2; A[2098] = -0.000652398655871155*G0_0_0 + 0.00884000178705073*G0_0_1 + 0.00884000178705067*G0_0_2 + 0.00884000178704955*G0_1_0 - 0.000652398655871352*G0_1_1 - 0.000652398655871399*G0_1_2 + 0.00884000178705003*G0_2_0 - 0.000652398655871188*G0_2_1 - 0.000652398655871148*G0_2_2; A[2099] = 0.0226708532915131*G0_0_0 - 0.0032946132121478*G0_0_1 - 0.0032946132121478*G0_0_2 - 0.0032946132121469*G0_1_0 - 0.00329461321214756*G0_2_0; A[2100] = -0.0254435475789667*G0_0_0 - 0.0127217737894839*G0_0_1 - 0.00130479731174355*G0_0_2 - 0.0127217737894838*G0_1_0 - 0.0006523986558722*G0_1_2 - 0.00130479731174265*G0_2_0 - 0.000652398655871163*G0_2_1; A[2101] = -0.0166361657247059*G0_0_0 + 0.00146789697571068*G0_0_1 - 0.0181040627004157*G0_0_2 + 0.00146789697571112*G0_1_0 + 0.0195719596761277*G0_1_1 - 0.0102752788299649*G0_1_2 - 0.0181040627004162*G0_2_0 - 0.0102752788299657*G0_2_1; A[2102] = 0.0137003717732856*G0_0_0 + 0.026422145562768*G0_0_1 - 0.00619778723077394*G0_0_2 + 0.026422145562769*G0_1_0 + 0.0391439193522508*G0_1_1 - 0.00554538857490227*G0_1_2 - 0.00619778723077408*G0_2_0 - 0.00554538857490313*G0_2_1; A[2103] = 0.0567586830607682*G0_0_0 + 0.0283793415303847*G0_0_1 + 0.0283793415303844*G0_0_2 + 0.0283793415303848*G0_1_0 + 0.0141896707651925*G0_1_2 + 0.0283793415303842*G0_2_0 + 0.014189670765192*G0_2_1 - 0.00489298991903098*G0_2_2; A[2104] = 0.149725491522362*G0_0_0 + 0.12134614999198*G0_0_1 + 0.0748627457611798*G0_0_2 + 0.12134614999198*G0_1_0 + 0.0929668084615981*G0_1_1 + 0.0606730749959896*G0_1_2 + 0.0748627457611809*G0_2_0 + 0.0606730749959895*G0_2_1 + 0.0195719596761242*G0_2_2; A[2105] = 0.209419968534547*G0_0_0 + 0.104709984267273*G0_0_1 + 0.135698920421139*G0_0_2 + 0.104709984267274*G0_1_0 + 0.0678494602105703*G0_1_2 + 0.135698920421141*G0_2_0 + 0.0678494602105713*G0_2_1 + 0.039143919352253*G0_2_2; A[2106] = -0.268135847562926*G0_0_0 - 0.222141742324031*G0_0_1 - 0.194414799449519*G0_0_2 - 0.290643601190473*G0_1_0 - 0.268135847562929*G0_1_1 - 0.32163253734434*G0_1_2 - 0.448850275239161*G0_2_0 - 0.321632537344341*G0_2_1 - 0.584549195660303*G0_2_2; A[2107] = 0.0655660649150223*G0_0_0 + 0.0376760223765437*G0_0_1 + 0.140428810676204*G0_0_2 + 0.140428810676204*G0_1_0 - 0.0371867233846381*G0_1_1 + 0.186912214907003*G0_1_2 + 0.0376760223765434*G0_2_0 + 0.186912214907007*G0_2_1 - 0.0371867233846391*G0_2_2; A[2108] = -0.0137003717732859*G0_0_0 + 0.0714376528178591*G0_0_1 + 0.00619778723077445*G0_0_2 - 0.0264221455627692*G0_1_0 + 0.172233245149909*G0_1_1 + 0.00619778723077407*G0_1_2 + 0.00619778723077377*G0_2_0 + 0.00619778723077239*G0_2_1 + 0.0123955744615472*G0_2_2; A[2109] = 0.726119703984278*G0_0_0 + 0.456026660453737*G0_0_1 + 0.456026660453739*G0_0_2 + 0.456026660453737*G0_1_0 + 0.726119703984279*G0_1_1 + 0.45602666045374*G0_1_2 + 0.456026660453739*G0_2_0 + 0.45602666045374*G0_2_1 + 0.91205332090748*G0_2_2; A[2110] = -0.149725491522362*G0_0_0 - 0.326851726591304*G0_0_1 - 0.177615534060843*G0_0_2 - 0.12134614999198*G0_1_0 - 0.448197876583287*G0_1_1 - 0.224098938291643*G0_1_2 - 0.0748627457611809*G0_2_0 - 0.224098938291645*G0_2_1 - 0.0371867233846402*G0_2_2; A[2111] = -0.209419968534547*G0_0_0 - 0.290643601190473*G0_0_1 - 0.390134396210781*G0_0_2 - 0.104709984267274*G0_1_0 - 0.209419968534549*G0_1_1 - 0.262916658315962*G0_1_2 - 0.135698920421141*G0_2_0 - 0.262916658315961*G0_2_1 - 0.584549195660301*G0_2_2; A[2112] = -0.0880738185425675*G0_0_0 - 0.134067923781463*G0_0_1 - 0.0972073997247585*G0_0_2 - 0.134067923781465*G0_1_0 - 0.15657567740901*G0_1_1 - 0.22442513761958*G0_1_2 - 0.0972073997247602*G0_2_0 - 0.224425137619581*G0_2_1 - 0.292274597830151*G0_2_2; A[2113] = 0.019571959676127*G0_0_0 - 0.0552907860850555*G0_0_1 - 0.0411011153198644*G0_0_2 - 0.0552907860850548*G0_1_0 + 0.0195719596761276*G0_1_1 + 0.00538228891093571*G0_1_2 - 0.0411011153198651*G0_2_0 + 0.00538228891093538*G0_2_1 - 0.00880738185425657*G0_2_2; A[2114] = -0.0880738185425689*G0_0_0 + 0.0127217737894836*G0_0_1 + 0.000652398655870489*G0_0_2 + 0.0127217737894806*G0_1_0 + 0.000652398655870378*G0_1_2 + 0.000652398655870463*G0_2_0 + 0.000652398655871042*G0_2_1 + 0.00130479731174093*G0_2_2; A[2115] = 0.0929668084615975*G0_0_0 + 0.363059851992139*G0_0_1 + 0.228013330226868*G0_0_2 + 0.36305985199214*G0_1_0 + 0.0929668084615982*G0_1_1 + 0.22801333022687*G0_1_2 + 0.22801333022687*G0_2_0 + 0.228013330226869*G0_2_1 + 0.45602666045374*G0_2_2; A[2116] = 0.0929668084616006*G0_0_0 - 0.0283793415303841*G0_0_1 + 0.0322937334656076*G0_0_2 - 0.028379341530382*G0_1_0 - 0.0141896707651917*G0_1_2 + 0.0322937334656096*G0_2_0 - 0.0141896707651913*G0_2_1 - 0.00880738185425618*G0_2_2; A[2117] = -0.185933616923199*G0_0_0 - 0.104709984267273*G0_0_1 - 0.195067198105389*G0_0_2 - 0.104709984267275*G0_1_0 - 0.0678494602105707*G0_1_2 - 0.195067198105391*G0_2_0 - 0.0678494602105714*G0_2_1 - 0.292274597830151*G0_2_2; A[2118] = -0.0228339529554811*G0_0_0 - 0.0596944770121843*G0_0_1 - 0.0965550010688882*G0_0_2 - 0.0596944770121856*G0_1_0 - 0.0965550010688898*G0_1_1 - 0.0287055408583191*G0_1_2 - 0.0965550010688896*G0_2_0 - 0.0287055408583198*G0_2_1 + 0.0391439193522518*G0_2_2; A[2119] = -0.00489298991903103*G0_0_0 - 0.0190826606842229*G0_0_1 - 0.0332723314494141*G0_0_2 - 0.0190826606842219*G0_1_0 - 0.033272331449414*G0_1_1 - 0.0190826606842223*G0_1_2 - 0.033272331449415*G0_2_0 - 0.0190826606842232*G0_2_1 - 0.00489298991903104*G0_2_2; A[2120] = -0.0228339529554807*G0_0_0 - 0.0107645778218694*G0_0_1 + 0.00130479731174343*G0_0_2 - 0.0107645778218697*G0_1_0 + 0.00130479731174183*G0_1_1 + 0.000652398655872109*G0_1_2 + 0.00130479731174247*G0_2_0 + 0.000652398655871062*G0_2_1; A[2121] = 0.0195719596761265*G0_0_0 + 0.00538228891093522*G0_0_1 - 0.0552907860850552*G0_0_2 + 0.00538228891093494*G0_1_0 - 0.00880738185425532*G0_1_1 - 0.0411011153198644*G0_1_2 - 0.0552907860850558*G0_2_0 - 0.0411011153198637*G0_2_1 + 0.0195719596761266*G0_2_2; A[2122] = 0.0195719596761257*G0_0_0 + 0.0298472385060917*G0_0_1 + 0.0181040627004158*G0_0_2 + 0.0298472385060919*G0_1_0 + 0.0401225173360577*G0_1_1 + 0.0102752788299651*G0_1_2 + 0.018104062700416*G0_2_0 + 0.0102752788299657*G0_2_1; A[2123] = 0.0260959462348341*G0_0_0 + 0.038165321368445*G0_0_1 + 0.00619778723077353*G0_0_2 + 0.0381653213684454*G0_1_0 + 0.0502346965020557*G0_1_1 + 0.00554538857490197*G0_1_2 + 0.00619778723077337*G0_2_0 + 0.00554538857490195*G0_2_1; A[2124] = 0.146789697570946*G0_0_0 + 0.249542485870607*G0_0_1 + 0.445262082631868*G0_0_2 + 0.249542485870608*G0_1_0 + 0.352295274170269*G0_1_1 + 0.249542485870606*G0_1_2 + 0.445262082631873*G0_2_0 + 0.249542485870609*G0_2_1 - 0.0391439193522525*G0_2_2; A[2125] = 0.146789697570947*G0_0_0 + 0.053822889109345*G0_0_1 + 0.00489298991903033*G0_0_2 + 0.053822889109349*G0_1_0 - 0.0391439193522547*G0_1_1 + 0.00489298991903027*G0_1_2 + 0.00489298991903139*G0_2_0 + 0.00489298991903032*G0_2_1 + 0.00978597983806249*G0_2_2; A[2126] = -0.0489298991903161*G0_0_0 - 0.141896707651913*G0_0_1 - 0.0195719596761243*G0_0_2 - 0.141896707651915*G0_1_0 - 0.234863516113511*G0_1_1 - 0.0195719596761254*G0_1_2 - 0.019571959676127*G0_2_0 - 0.0195719596761261*G0_2_1 - 0.0391439193522507*G0_2_2; A[2127] = -0.782878387045047*G0_0_0 - 0.484406001984119*G0_0_1 - 0.48440600198412*G0_0_2 - 0.484406001984122*G0_1_0 - 0.185933616923197*G0_1_1 - 0.288686405222858*G0_1_2 - 0.484406001984123*G0_2_0 - 0.288686405222859*G0_2_1 - 0.039143919352253*G0_2_2; A[2128] = 0.00946499969937441*G0_0_0 + 0.00946499969937446*G0_0_1 + 0.00946499969937442*G0_0_2 + 0.0117431758056755*G0_1_0 + 0.0117431758056755*G0_1_1 + 0.0117431758056755*G0_1_2 + 0.0117431758056757*G0_2_0 + 0.0117431758056757*G0_2_1 + 0.0117431758056756*G0_2_2; A[2129] = -0.00946499969937455*G0_0_0; A[2130] = 0.00472467106581697*G0_0_1 - 0.0298472385060924*G0_1_1; A[2131] = 0.00472467106581673*G0_0_2 - 0.0298472385060926*G0_2_2; A[2132] = 0.0493213383838374*G0_0_1 + 0.0429604514890968*G0_0_2 + 0.176636936077039*G0_1_1 + 0.0422754329004325*G0_1_2 + 0.0422754329004324*G0_2_1; A[2133] = -0.167731694424402*G0_0_1 - 0.077700679914221*G0_0_2 - 0.334680510461757*G0_1_1 - 0.0838658472121995*G0_1_2 - 0.0838658472122009*G0_2_1 + 0.104709984267276*G0_2_2; A[2134] = -0.0777006799142204*G0_0_1 - 0.167731694424401*G0_0_2 + 0.104709984267276*G0_1_1 - 0.0838658472122004*G0_1_2 - 0.0838658472121997*G0_2_1 - 0.334680510461758*G0_2_2; A[2135] = 0.0429604514890967*G0_0_1 + 0.0493213383838381*G0_0_2 + 0.0422754329004328*G0_1_2 + 0.0422754329004318*G0_2_1 + 0.176636936077039*G0_2_2; A[2136] = 0.0292600797158086*G0_0_0 + 0.00329461321214803*G0_0_2 + 0.00329461321214732*G0_2_0; A[2137] = -0.0189848008858426*G0_0_0 - 0.0094924004429212*G0_0_2 - 0.00949240044292155*G0_2_0 - 0.000652398655871596*G0_2_2; A[2138] = 0.00352295274170329*G0_0_0 + 0.00649136662591504*G0_0_2 + 0.00649136662591481*G0_2_0 + 0.00880738185425644*G0_2_2; A[2139] = 0.0429604514890969*G0_0_0 + 0.042275432900433*G0_0_2 + 0.042275432900432*G0_2_0 + 0.0642612676032806*G0_2_2; A[2140] = 0.0292600797158082*G0_0_0 + 0.00329461321214795*G0_0_1 + 0.00329461321214736*G0_1_0; A[2141] = -0.0189848008858419*G0_0_0 - 0.00949240044292141*G0_0_1 - 0.00949240044292034*G0_1_0 - 0.000652398655870691*G0_1_1; A[2142] = 0.00352295274170245*G0_0_0 + 0.00649136662591581*G0_0_1 + 0.00649136662591434*G0_1_0 + 0.00880738185425668*G0_1_1; A[2143] = 0.0429604514890968*G0_0_0 + 0.0422754329004318*G0_0_1 + 0.0422754329004324*G0_1_0 + 0.0642612676032804*G0_1_1; A[2144] = -0.0292600797158081*G0_0_0 - 0.0292600797158082*G0_0_1 - 0.0259654665036602*G0_0_2 - 0.0435476102793802*G0_1_0 - 0.0435476102793803*G0_1_1 - 0.0377086423093357*G0_1_2 - 0.0377086423093363*G0_2_0 - 0.0377086423093364*G0_2_1 - 0.031869674339292*G0_2_2; A[2145] = 0.0189848008858416*G0_0_0 + 0.0189848008858419*G0_0_1 + 0.00949240044292077*G0_0_2 + 0.056758683060765*G0_1_0 + 0.0567586830607651*G0_1_1 + 0.0378717419733031*G0_1_2 + 0.0378717419733041*G0_2_0 + 0.0378717419733042*G0_2_1 + 0.0127870136550688*G0_2_2; A[2146] = -0.00352295274170237*G0_0_0 - 0.00352295274170254*G0_0_1 + 0.0029684138842124*G0_0_2 + 0.104709984267275*G0_1_0 + 0.104709984267275*G0_1_1 + 0.0303691574307899*G0_1_2 + 0.0303691574307886*G0_2_0 + 0.0303691574307885*G0_2_1 - 0.00678494602105679*G0_2_2; A[2147] = -0.0429604514890969*G0_0_0 - 0.0429604514890968*G0_0_1 - 0.00068501858866411*G0_0_2 - 0.0422754329004329*G0_1_2 - 0.0422754329004319*G0_2_0 - 0.0422754329004319*G0_2_1 + 0.0439716694056968*G0_2_2; A[2148] = -0.0292600797158082*G0_0_0 - 0.0259654665036603*G0_0_1 - 0.0292600797158082*G0_0_2 - 0.0377086423093363*G0_1_0 - 0.031869674339292*G0_1_1 - 0.0377086423093363*G0_1_2 - 0.0435476102793806*G0_2_0 - 0.0377086423093363*G0_2_1 - 0.0435476102793808*G0_2_2; A[2149] = 0.018984800885842*G0_0_0 + 0.0094924004429206*G0_0_1 + 0.018984800885842*G0_0_2 + 0.0378717419733036*G0_1_0 + 0.0127870136550691*G0_1_1 + 0.0378717419733036*G0_1_2 + 0.0567586830607654*G0_2_0 + 0.0378717419733038*G0_2_1 + 0.0567586830607654*G0_2_2; A[2150] = -0.00352295274170291*G0_0_0 + 0.00296841388421309*G0_0_1 - 0.00352295274170307*G0_0_2 + 0.0303691574307889*G0_1_0 - 0.00678494602105687*G0_1_1 + 0.0303691574307888*G0_1_2 + 0.104709984267275*G0_2_0 + 0.0303691574307897*G0_2_1 + 0.104709984267275*G0_2_2; A[2151] = -0.0429604514890968*G0_0_0 - 0.000685018588664855*G0_0_1 - 0.0429604514890966*G0_0_2 - 0.0422754329004324*G0_1_0 + 0.0439716694056966*G0_1_1 - 0.0422754329004325*G0_1_2 - 0.042275432900433*G0_2_1; A[2152] = -0.00329461321214755*G0_0_1 - 0.00329461321214753*G0_0_2 - 0.00329461321214773*G0_1_0 - 0.00913358118219225*G0_1_1 - 0.00913358118219208*G0_1_2 - 0.00329461321214797*G0_2_0 - 0.00913358118219242*G0_2_1 - 0.00913358118219242*G0_2_2; A[2153] = -0.00257697469069022*G0_0_1 - 0.00257697469069019*G0_0_2 - 0.00257697469069023*G0_1_0 - 0.0156575677409008*G0_1_1 - 0.0156575677409008*G0_1_2 - 0.00257697469068998*G0_2_0 - 0.015657567740901*G0_2_1 - 0.015657567740901*G0_2_2; A[2154] = -0.00257697469068944*G0_0_1 - 0.00257697469068937*G0_0_2 - 0.00257697469068923*G0_1_0 - 0.000652398655870781*G0_1_1 - 0.000652398655870759*G0_1_2 - 0.00257697469068956*G0_2_0 - 0.000652398655870909*G0_2_1 - 0.000652398655870835*G0_2_2; A[2155] = -0.00329461321214796*G0_0_1 - 0.00329461321214795*G0_0_2 - 0.0032946132121487*G0_1_0 - 0.00329461321214847*G0_2_0; A[2156] = -0.113517366121532*G0_0_0 - 0.0127217737894825*G0_0_1 - 0.0127217737894829*G0_0_2 - 0.0127217737894794*G0_1_0 - 0.00065239865586976*G0_1_2 - 0.012721773789481*G0_2_0 - 0.000652398655871421*G0_2_1; A[2157] = 0.149725491522365*G0_0_0 + 0.0748627457611832*G0_0_1 + 0.0283793415303845*G0_0_2 + 0.07486274576118*G0_1_0 + 0.0195719596761242*G0_1_1 + 0.0141896707651908*G0_1_2 + 0.0283793415303828*G0_2_0 + 0.0141896707651923*G0_2_1; A[2158] = 0.0234863516113514*G0_0_0 - 0.0225077536275452*G0_0_1 + 0.104709984267274*G0_0_2 - 0.0225077536275426*G0_1_0 - 0.156575677409007*G0_1_1 + 0.0678494602105706*G0_1_2 + 0.104709984267275*G0_2_0 + 0.0678494602105698*G0_2_1; A[2159] = 0.149725491522365*G0_0_0 + 0.0283793415303833*G0_0_1 + 0.0748627457611836*G0_0_2 + 0.0283793415303807*G0_1_0 + 0.0141896707651905*G0_1_2 + 0.0748627457611801*G0_2_0 + 0.0141896707651891*G0_2_1 + 0.0195719596761246*G0_2_2; A[2160] = -0.540186087061084*G0_0_0 - 0.270093043530542*G0_0_1 - 0.270093043530543*G0_0_2 - 0.270093043530539*G0_1_0 + 0.0929668084615991*G0_1_1 - 0.13504652176527*G0_1_2 - 0.27009304353054*G0_2_0 - 0.135046521765269*G0_2_1 + 0.0929668084616001*G0_2_2; A[2161] = 0.0234863516113519*G0_0_0 + 0.104709984267275*G0_0_1 - 0.0225077536275449*G0_0_2 + 0.104709984267276*G0_1_0 + 0.0678494602105717*G0_1_2 - 0.0225077536275447*G0_2_0 + 0.0678494602105695*G0_2_1 - 0.15657567740901*G0_2_2; A[2162] = 0.113517366121531*G0_0_0 + 0.100795592332049*G0_0_1 + 0.100795592332049*G0_0_2 + 0.19865539071268*G0_1_0 + 0.17223324514991*G0_1_1 + 0.166035457919136*G0_1_2 + 0.198655390712681*G0_2_0 + 0.166035457919136*G0_2_1 + 0.17223324514991*G0_2_2; A[2163] = -0.149725491522364*G0_0_0 - 0.0748627457611829*G0_0_1 - 0.12134614999198*G0_0_2 - 0.177615534060843*G0_1_0 - 0.0371867233846403*G0_1_1 - 0.224098938291642*G0_1_2 - 0.326851726591307*G0_2_0 - 0.224098938291645*G0_2_1 - 0.448197876583288*G0_2_2; A[2164] = -0.0234863516113509*G0_0_0 - 0.0459941052388957*G0_0_1 + 0.0812236326559232*G0_0_2 + 0.0225077536275429*G0_1_0 - 0.268135847562928*G0_1_1 + 0.0534966897814102*G0_1_2 - 0.104709984267275*G0_2_0 + 0.0534966897814128*G0_2_1 - 0.20941996853455*G0_2_2; A[2165] = -0.149725491522362*G0_0_0 - 0.12134614999198*G0_0_1 - 0.0748627457611809*G0_0_2 - 0.326851726591304*G0_1_0 - 0.448197876583287*G0_1_1 - 0.224098938291645*G0_1_2 - 0.177615534060843*G0_2_0 - 0.224098938291643*G0_2_1 - 0.0371867233846402*G0_2_2; A[2166] = 0.540186087061084*G0_0_0 + 0.27009304353054*G0_0_1 + 0.27009304353054*G0_0_2 + 0.27009304353054*G0_1_0 + 0.726119703984279*G0_1_1 + 0.27009304353054*G0_1_2 + 0.27009304353054*G0_2_0 + 0.27009304353054*G0_2_1 + 0.726119703984279*G0_2_2; A[2167] = -0.0234863516113521*G0_0_0 + 0.081223632655923*G0_0_1 - 0.0459941052388977*G0_0_2 - 0.104709984267277*G0_1_0 - 0.209419968534552*G0_1_1 + 0.0534966897814117*G0_1_2 + 0.0225077536275447*G0_2_0 + 0.053496689781411*G0_2_1 - 0.268135847562928*G0_2_2; A[2168] = 0.0127217737894818*G0_0_1 + 0.0120693751336103*G0_0_2 + 0.0127217737894823*G0_1_0 + 0.0391439193522524*G0_1_1 + 0.0446893079271545*G0_1_2 + 0.0120693751336113*G0_2_0 + 0.0446893079271552*G0_2_1 + 0.0502346965020578*G0_2_2; A[2169] = 0.0181040627004155*G0_0_1 + 0.0102752788299656*G0_0_2 + 0.0181040627004149*G0_1_0 + 0.0195719596761248*G0_1_1 + 0.0298472385060916*G0_1_2 + 0.0102752788299654*G0_2_0 + 0.0298472385060915*G0_2_1 + 0.040122517336058*G0_2_2; A[2170] = 0.0127217737894826*G0_0_1 + 0.0120693751336107*G0_0_2 + 0.0127217737894835*G0_1_0 + 0.000652398655870821*G0_1_2 + 0.0120693751336124*G0_2_0 + 0.000652398655871647*G0_2_1 + 0.00130479731174261*G0_2_2; A[2171] = -0.0283793415303818*G0_0_1 - 0.0141896707651902*G0_0_2 - 0.0283793415303815*G0_1_0 + 0.0929668084616009*G0_1_1 + 0.0322937334656087*G0_1_2 - 0.0141896707651908*G0_2_0 + 0.0322937334656083*G0_2_1 - 0.00880738185425713*G0_2_2; A[2172] = -0.0283793415303836*G0_0_1 - 0.0141896707651904*G0_0_2 - 0.028379341530384*G0_1_0 - 0.0141896707651912*G0_1_2 - 0.0141896707651917*G0_2_0 - 0.0141896707651896*G0_2_1 - 0.0332723314494137*G0_2_2; A[2173] = -0.104709984267275*G0_0_1 - 0.0368605240567055*G0_0_2 - 0.104709984267276*G0_1_0 - 0.0678494602105713*G0_1_2 - 0.0368605240567034*G0_2_0 - 0.0678494602105696*G0_2_1 - 0.0965550010688887*G0_2_2; A[2174] = 0.012069375133611*G0_0_1 + 0.0127217737894824*G0_0_2 + 0.0120693751336119*G0_1_0 + 0.0502346965020572*G0_1_1 + 0.044689307927155*G0_1_2 + 0.0127217737894824*G0_2_0 + 0.044689307927155*G0_2_1 + 0.039143919352252*G0_2_2; A[2175] = 0.0102752788299665*G0_0_1 + 0.0181040627004163*G0_0_2 + 0.0102752788299647*G0_1_0 + 0.0401225173360577*G0_1_1 + 0.0298472385060915*G0_1_2 + 0.0181040627004159*G0_2_0 + 0.029847238506093*G0_2_1 + 0.0195719596761266*G0_2_2; A[2176] = 0.0120693751336109*G0_0_1 + 0.0127217737894826*G0_0_2 + 0.0120693751336123*G0_1_0 + 0.0013047973117416*G0_1_1 + 0.000652398655869593*G0_1_2 + 0.0127217737894828*G0_2_0 + 0.000652398655870422*G0_2_1; A[2177] = -0.0141896707651922*G0_0_1 - 0.0283793415303831*G0_0_2 - 0.0141896707651918*G0_1_0 - 0.00880738185425764*G0_1_1 + 0.0322937334656073*G0_1_2 - 0.0283793415303823*G0_2_0 + 0.0322937334656072*G0_2_1 + 0.0929668084615988*G0_2_2; A[2178] = -0.0141896707651918*G0_0_1 - 0.0283793415303839*G0_0_2 - 0.0141896707651915*G0_1_0 - 0.0332723314494136*G0_1_1 - 0.0141896707651907*G0_1_2 - 0.0283793415303843*G0_2_0 - 0.014189670765192*G0_2_1; A[2179] = -0.0368605240567031*G0_0_1 - 0.104709984267274*G0_0_2 - 0.0368605240567033*G0_1_0 - 0.0965550010688877*G0_1_1 - 0.0678494602105704*G0_1_2 - 0.104709984267274*G0_2_0 - 0.067849460210569*G0_2_1; A[2180] = -0.0929668084615962*G0_0_1 - 0.0929668084615973*G0_0_2 - 0.092966808461598*G0_1_0 - 0.234863516113512*G0_1_1 - 0.215291556437385*G0_1_2 - 0.0929668084615982*G0_2_0 - 0.215291556437385*G0_2_1 - 0.234863516113511*G0_2_2; A[2181] = -0.0929668084615987*G0_0_1 - 0.0929668084616001*G0_0_2 - 0.092966808461602*G0_1_0 - 0.0391439193522503*G0_1_1 - 0.044036909271282*G0_1_2 - 0.0929668084616013*G0_2_0 - 0.0440369092712842*G0_2_1 - 0.0391439193522516*G0_2_2; A[2182] = 0.10275278829966*G0_0_1 + 0.298472385060926*G0_0_2 + 0.102752788299663*G0_1_0 + 0.352295274170268*G0_1_1 + 0.102752788299663*G0_1_2 + 0.298472385060924*G0_2_0 + 0.102752788299661*G0_2_1 - 0.185933616923198*G0_2_2; A[2183] = 0.298472385060925*G0_0_1 + 0.102752788299661*G0_0_2 + 0.298472385060924*G0_1_0 - 0.185933616923199*G0_1_1 + 0.102752788299658*G0_1_2 + 0.102752788299663*G0_2_0 + 0.102752788299661*G0_2_1 + 0.352295274170269*G0_2_2; A[2184] = 0.013742125287264*G0_0_0 + 0.0137421252872641*G0_0_1 + 0.013742125287264*G0_0_2 + 0.0189195610202554*G0_1_0 + 0.0189195610202555*G0_1_1 + 0.0189195610202554*G0_1_2 + 0.0189195610202553*G0_2_0 + 0.0189195610202553*G0_2_1 + 0.0189195610202553*G0_2_2; A[2185] = -0.013742125287264*G0_0_0; A[2186] = 0.00517743573299137*G0_0_1 + 0.0189195610202553*G0_1_1; A[2187] = -0.0143945239431351*G0_0_2 + 0.0335985307773501*G0_2_2; A[2188] = -0.0477555816097485*G0_0_1 - 0.0118736555368501*G0_0_2 - 0.111886369481855*G0_1_1 - 0.0212681961813909*G0_1_2 - 0.0212681961813905*G0_2_1; A[2189] = 0.0823327103709049*G0_0_1 - 0.00182671623643835*G0_0_2 + 0.209419968534551*G0_1_1 + 0.0359471659384852*G0_1_2 + 0.0359471659384856*G0_2_1 - 0.0528442911255404*G0_2_2; A[2190] = -0.146659217839772*G0_0_1 - 0.0109602974186304*G0_0_2 - 0.271397840842283*G0_1_1 - 0.073329608919886*G0_1_2 - 0.073329608919886*G0_2_1 + 0.121346149991982*G0_2_2; A[2191] = -0.124738623002511*G0_0_1 - 0.192588083213082*G0_0_2 - 0.0962940416065408*G0_1_2 - 0.0962940416065403*G0_2_1 - 0.257045070413124*G0_2_2; A[2192] = 0.0641307878721064*G0_0_0 + 0.0093945406445403*G0_0_2 + 0.00939454064454016*G0_2_0; A[2193] = -0.127087258163646*G0_0_0 - 0.037773882174923*G0_0_2 - 0.0377738821749223*G0_2_0 - 0.0150051690850298*G0_2_2; A[2194] = 0.124738623002511*G0_0_0 + 0.0623693115012548*G0_0_2 + 0.062369311501255*G0_2_0 + 0.0476251018785741*G0_2_2; A[2195] = -0.124738623002511*G0_0_0 - 0.0962940416065404*G0_0_2 - 0.0962940416065405*G0_2_0 - 0.128522535206562*G0_2_2; A[2196] = 0.0187890812890808*G0_0_0 + 0.00939454064454033*G0_0_1 + 0.00939454064454083*G0_1_0; A[2197] = -0.0148746893538561*G0_0_0 - 0.014939929219443*G0_0_1 - 0.0149399292194435*G0_1_0 - 0.0150051690850308*G0_1_1; A[2198] = -0.00117431758056714*G0_0_0 - 0.00123955744615468*G0_0_1 - 0.00123955744615431*G0_1_0 - 0.00130479731174133*G0_1_1; A[2199] = -0.0118736555368501*G0_0_0 - 0.0212681961813906*G0_0_1 - 0.0212681961813908*G0_1_0 - 0.0306627368259314*G0_1_1; A[2200] = -0.0641307878721065*G0_0_0 - 0.0641307878721067*G0_0_1 - 0.0547362472275662*G0_0_2 - 0.111886369481855*G0_1_0 - 0.111886369481855*G0_1_1 - 0.0906181733004645*G0_1_2 - 0.090618173300464*G0_2_0 - 0.0906181733004641*G0_2_1 - 0.0693499771190735*G0_2_2; A[2201] = 0.127087258163646*G0_0_0 + 0.127087258163646*G0_0_1 + 0.0893133759887226*G0_0_2 + 0.20941996853455*G0_1_0 + 0.20941996853455*G0_1_1 + 0.173472802596066*G0_1_2 + 0.173472802596065*G0_2_0 + 0.173472802596065*G0_2_1 + 0.084681345532039*G0_2_2; A[2202] = -0.124738623002511*G0_0_0 - 0.124738623002511*G0_0_1 - 0.062369311501256*G0_0_2 - 0.271397840842283*G0_1_0 - 0.271397840842284*G0_1_1 - 0.198068231922398*G0_1_2 - 0.198068231922396*G0_2_0 - 0.198068231922396*G0_2_1 - 0.00339247301052844*G0_2_2; A[2203] = 0.124738623002511*G0_0_0 + 0.124738623002511*G0_0_1 + 0.0284445813959706*G0_0_2 + 0.0962940416065415*G0_1_2 + 0.0962940416065403*G0_2_0 + 0.0962940416065403*G0_2_1 - 0.0644569872000423*G0_2_2; A[2204] = -0.018789081289081*G0_0_0 - 0.00939454064454056*G0_0_1 - 0.018789081289081*G0_0_2 - 0.0400572774704715*G0_1_0 - 0.0187890812890812*G0_1_1 - 0.0400572774704715*G0_1_2 - 0.0613254736518623*G0_2_0 - 0.0400572774704718*G0_2_1 - 0.0613254736518622*G0_2_2; A[2205] = 0.0148746893538555*G0_0_0 - 6.52398655873714e-05*G0_0_1 + 0.0148746893538554*G0_0_2 + 0.0136351319077013*G0_1_0 - 0.000130479731174334*G0_1_1 + 0.0136351319077014*G0_1_2 - 0.0254435475789639*G0_2_0 + 0.0136351319077014*G0_2_1 - 0.0254435475789638*G0_2_2; A[2206] = 0.00117431758056754*G0_0_0 - 6.52398655867694e-05*G0_0_1 + 0.00117431758056761*G0_0_2 - 0.0137656116388757*G0_1_0 - 0.000130479731173976*G0_1_1 - 0.0137656116388758*G0_1_2 - 0.0528442911255405*G0_2_0 - 0.0137656116388754*G0_2_1 - 0.0528442911255405*G0_2_2; A[2207] = 0.01187365553685*G0_0_0 - 0.00939454064454077*G0_0_1 + 0.0118736555368501*G0_0_2 + 0.0212681961813908*G0_1_0 - 0.0187890812890813*G0_1_1 + 0.0212681961813909*G0_1_2 + 0.0212681961813904*G0_2_1; A[2208] = -0.00939454064454053*G0_0_1 - 0.00939454064454048*G0_0_2 - 0.00939454064454051*G0_1_0 - 0.0306627368259308*G0_1_1 - 0.0306627368259308*G0_1_2 - 0.00939454064454052*G0_2_0 - 0.0306627368259311*G0_2_1 - 0.030662736825931*G0_2_2; A[2209] = -6.52398655872461e-05*G0_0_1 - 6.52398655871835e-05*G0_0_2 - 6.52398655873574e-05*G0_1_0 - 0.00130479731174198*G0_1_1 - 0.00130479731174189*G0_1_2 - 6.52398655873097e-05*G0_2_0 - 0.001304797311742*G0_2_1 - 0.00130479731174198*G0_2_2; A[2210] = -6.52398655870682e-05*G0_0_1 - 6.52398655870475e-05*G0_0_2 - 6.52398655868523e-05*G0_1_0 - 0.01500516908503*G0_1_1 - 0.0150051690850299*G0_1_2 - 6.52398655868554e-05*G0_2_0 - 0.0150051690850301*G0_2_1 - 0.0150051690850301*G0_2_2; A[2211] = -0.00939454064454035*G0_0_1 - 0.00939454064454039*G0_0_2 - 0.00939454064454083*G0_1_0 - 0.00939454064454073*G0_2_0; A[2212] = -0.105688582251081*G0_0_0 - 0.052844291125541*G0_0_1 - 0.0300103381700608*G0_0_2 - 0.0528442911255416*G0_1_0 - 0.0150051690850304*G0_1_2 - 0.0300103381700597*G0_2_0 - 0.0150051690850296*G0_2_1; A[2213] = 0.013700371773288*G0_0_0 + 0.019898159004061*G0_0_1 - 0.0127217737894822*G0_0_2 + 0.0198981590040624*G0_1_0 + 0.0260959462348353*G0_1_1 - 0.0120693751336111*G0_1_2 - 0.0127217737894832*G0_2_0 - 0.0120693751336129*G0_2_1; A[2214] = -0.0534966897814118*G0_0_0 - 0.000652398655870448*G0_0_1 - 0.0528442911255404*G0_0_2 - 0.000652398655871999*G0_1_0 + 0.0521918924696691*G0_1_1 - 0.0378391220405113*G0_1_2 - 0.0528442911255397*G0_2_0 - 0.0378391220405096*G0_2_1; A[2215] = 0.209419968534549*G0_0_0 + 0.104709984267275*G0_0_1 + 0.0737210481134085*G0_0_2 + 0.104709984267275*G0_1_0 + 0.0368605240567038*G0_1_2 + 0.073721048113408*G0_2_0 + 0.0368605240567046*G0_2_1 - 0.022833952955481*G0_2_2; A[2216] = 0.0234863516113515*G0_0_0 - 0.0812236326559233*G0_0_1 + 0.0459941052388961*G0_0_2 - 0.0812236326559231*G0_1_0 - 0.185933616923197*G0_1_1 + 0.00913358118219296*G0_1_2 + 0.0459941052388976*G0_2_0 + 0.00913358118219308*G0_2_1 - 0.0880738185425672*G0_2_2; A[2217] = -0.542795681684565*G0_0_0 - 0.271397840842283*G0_0_1 - 0.271397840842283*G0_0_2 - 0.271397840842283*G0_1_0 - 0.135698920421142*G0_1_2 - 0.271397840842282*G0_2_0 - 0.135698920421141*G0_2_1 + 0.0521918924696706*G0_2_2; A[2218] = 0.105688582251082*G0_0_0 + 0.0528442911255412*G0_0_1 + 0.0756782440810217*G0_0_2 + 0.105036183595211*G0_1_0 + 0.105688582251082*G0_1_1 + 0.127870136550691*G0_1_2 + 0.180062029020361*G0_2_0 + 0.127870136550692*G0_2_1 + 0.255740273101382*G0_2_2; A[2219] = -0.0137003717732893*G0_0_0 + 0.00619778723077153*G0_0_1 - 0.0264221455627704*G0_0_2 + 0.00619778723077262*G0_1_0 + 0.0123955744615456*G0_1_1 + 0.00619778723077331*G0_1_2 + 0.0714376528178596*G0_2_0 + 0.0061977872307718*G0_2_1 + 0.172233245149909*G0_2_2; A[2220] = 0.053496689781412*G0_0_0 + 0.0528442911255423*G0_0_1 + 0.000652398655871127*G0_0_2 + 0.000652398655872256*G0_1_0 + 0.105688582251083*G0_1_1 - 0.0221815542996091*G0_1_2 + 0.05284429112554*G0_2_0 - 0.022181554299609*G0_2_1 + 0.105688582251081*G0_2_2; A[2221] = -0.209419968534547*G0_0_0 - 0.104709984267274*G0_0_1 - 0.135698920421141*G0_0_2 - 0.290643601190473*G0_1_0 - 0.209419968534549*G0_1_1 - 0.262916658315961*G0_1_2 - 0.390134396210781*G0_2_0 - 0.262916658315962*G0_2_1 - 0.584549195660301*G0_2_2; A[2222] = -0.0234863516113521*G0_0_0 - 0.104709984267277*G0_0_1 + 0.0225077536275447*G0_0_2 + 0.0812236326559229*G0_1_0 - 0.209419968534552*G0_1_1 + 0.053496689781411*G0_1_2 - 0.0459941052388977*G0_2_0 + 0.0534966897814117*G0_2_1 - 0.268135847562928*G0_2_2; A[2223] = 0.542795681684566*G0_0_0 + 0.271397840842283*G0_0_1 + 0.271397840842282*G0_0_2 + 0.271397840842283*G0_1_0 + 0.542795681684567*G0_1_1 + 0.271397840842282*G0_1_2 + 0.271397840842282*G0_2_0 + 0.271397840842282*G0_2_1 + 0.647179466623905*G0_2_2; A[2224] = 0.0528442911255419*G0_0_1 + 0.037839122040511*G0_0_2 + 0.0528442911255404*G0_1_0 + 0.0521918924696697*G0_1_1 + 0.0900310145101797*G0_1_2 + 0.0378391220405105*G0_2_0 + 0.0900310145101803*G0_2_1 + 0.127870136550691*G0_2_2; A[2225] = 0.00619778723077121*G0_0_1 + 0.00554538857490173*G0_0_2 + 0.00619778723077364*G0_1_0 + 0.0260959462348346*G0_1_1 + 0.0381653213684459*G0_1_2 + 0.00554538857490248*G0_2_0 + 0.0381653213684455*G0_2_1 + 0.0502346965020575*G0_2_2; A[2226] = 0.0528442911255412*G0_0_1 + 0.0378391220405105*G0_0_2 + 0.0528442911255409*G0_1_0 + 0.0150051690850308*G0_1_2 + 0.037839122040511*G0_2_0 + 0.0150051690850298*G0_2_1 + 0.0300103381700603*G0_2_2; A[2227] = -0.104709984267272*G0_0_1 - 0.0678494602105708*G0_0_2 - 0.104709984267275*G0_1_0 - 0.185933616923198*G0_1_1 - 0.19506719810539*G0_1_2 - 0.0678494602105704*G0_2_0 - 0.195067198105389*G0_2_1 - 0.29227459783015*G0_2_2; A[2228] = -0.104709984267275*G0_0_1 - 0.0678494602105694*G0_0_2 - 0.104709984267276*G0_1_0 - 0.0368605240567044*G0_1_2 - 0.0678494602105721*G0_2_0 - 0.0368605240567048*G0_2_1 - 0.0965550010688899*G0_2_2; A[2229] = 0.271397840842283*G0_0_1 + 0.13569892042114*G0_0_2 + 0.271397840842284*G0_1_0 + 0.135698920421141*G0_1_2 + 0.135698920421141*G0_2_0 + 0.135698920421141*G0_2_1 + 0.323589733311952*G0_2_2; A[2230] = 0.01500516908503*G0_0_1 + 0.0300103381700608*G0_0_2 + 0.01500516908503*G0_1_0 + 0.0300103381700602*G0_1_1 - 0.00782878387044996*G0_1_2 + 0.0300103381700602*G0_2_0 - 0.00782878387045007*G0_2_1 - 0.0456679059109608*G0_2_2; A[2231] = 0.00065239865587118*G0_0_1 + 0.00130479731174076*G0_0_2 + 0.000652398655871116*G0_1_0 + 0.00130479731174219*G0_1_1 - 0.0107645778218695*G0_1_2 + 0.00130479731174212*G0_2_0 - 0.0107645778218692*G0_2_1 - 0.0228339529554814*G0_2_2; A[2232] = 0.0150051690850302*G0_0_1 + 0.0300103381700611*G0_0_2 + 0.0150051690850296*G0_1_0 + 0.0300103381700604*G0_1_1 + 0.0150051690850305*G0_1_2 + 0.0300103381700599*G0_2_0 + 0.0150051690850303*G0_2_1; A[2233] = 0.000652398655870316*G0_0_1 + 0.0127217737894812*G0_0_2 + 0.000652398655870627*G0_1_0 + 0.00130479731174108*G0_1_1 + 0.000652398655870207*G0_1_2 + 0.0127217737894813*G0_2_0 + 0.000652398655870324*G0_2_1 - 0.0880738185425687*G0_2_2; A[2234] = 0.000652398655870588*G0_0_1 + 0.0127217737894819*G0_0_2 + 0.000652398655871404*G0_1_0 + 0.00130479731174155*G0_1_1 + 0.0120693751336112*G0_1_2 + 0.0127217737894829*G0_2_0 + 0.0120693751336115*G0_2_1; A[2235] = 0.0150051690850306*G0_0_1 + 0.0528442911255405*G0_0_2 + 0.0150051690850301*G0_1_0 + 0.0300103381700606*G0_1_1 + 0.0378391220405113*G0_1_2 + 0.0528442911255405*G0_2_0 + 0.0378391220405107*G0_2_1; A[2236] = -0.026095946234835*G0_0_1 - 0.0750258454251482*G0_0_2 - 0.0260959462348359*G0_1_0 - 0.0521918924696691*G0_1_1 - 0.0424059126316067*G0_1_2 - 0.0750258454251515*G0_2_0 - 0.0424059126316076*G0_2_1 + 0.143527704291592*G0_2_2; A[2237] = -0.0260959462348323*G0_0_1 - 0.07502584542515*G0_0_2 - 0.0260959462348336*G0_1_0 - 0.052191892469669*G0_1_1 - 0.0260959462348348*G0_1_2 - 0.0750258454251501*G0_2_0 - 0.0260959462348327*G0_2_1 + 0.0456679059109621*G0_2_2; A[2238] = -0.0260959462348364*G0_0_1 - 0.0587158790283772*G0_0_2 - 0.026095946234835*G0_1_0 - 0.0521918924696697*G0_1_1 - 0.00978597983806336*G0_1_2 - 0.0587158790283766*G0_2_0 - 0.00978597983806301*G0_2_1 + 0.176147637085135*G0_2_2; A[2239] = 0.185933616923196*G0_0_1 + 0.316413348097371*G0_0_2 + 0.185933616923198*G0_1_0 + 0.371867233846396*G0_1_1 + 0.185933616923199*G0_1_2 + 0.316413348097373*G0_2_0 + 0.185933616923196*G0_2_1 - 0.150051690850301*G0_2_2; A[2240] = 0.03359853077735*G0_0_0 + 0.03359853077735*G0_0_1 + 0.03359853077735*G0_0_2 + 0.0479930547204847*G0_1_0 + 0.047993054720485*G0_1_1 + 0.0479930547204849*G0_1_2 + 0.0335985307773499*G0_2_0 + 0.03359853077735*G0_2_1 + 0.0335985307773499*G0_2_2; A[2241] = 0.0189195610202554*G0_0_0 + 0.00517743573299142*G0_1_0; A[2242] = -0.0137421252872641*G0_1_1; A[2243] = 0.00517743573299113*G0_1_2 + 0.0189195610202552*G0_2_2; A[2244] = 0.0187890812890808*G0_1_1 + 0.00939454064454038*G0_1_2 + 0.00939454064454049*G0_2_1; A[2245] = -0.0148746893538556*G0_1_1 - 0.0149399292194429*G0_1_2 - 0.0149399292194431*G0_2_1 - 0.0150051690850292*G0_2_2; A[2246] = -0.00117431758056773*G0_1_1 - 0.00123955744615491*G0_1_2 - 0.00123955744615422*G0_2_1 - 0.00130479731174246*G0_2_2; A[2247] = -0.0118736555368505*G0_1_1 - 0.0212681961813909*G0_1_2 - 0.0212681961813909*G0_2_1 - 0.0306627368259311*G0_2_2; A[2248] = -0.0613254736518619*G0_0_0 - 0.0212681961813901*G0_0_2 - 0.0425363923627806*G0_1_0 - 0.0118736555368496*G0_1_2 - 0.0212681961813906*G0_2_0; A[2249] = -0.0254435475789642*G0_0_0 - 0.0390786794866656*G0_0_2 - 0.04031823693282*G0_1_0 - 0.0540186087061082*G0_1_2 - 0.0390786794866649*G0_2_0 - 0.0528442911255406*G0_2_2; A[2250] = -0.0528442911255405*G0_0_0 - 0.0390786794866649*G0_0_2 - 0.0540186087061078*G0_1_0 - 0.0403182369328198*G0_1_2 - 0.0390786794866654*G0_2_0 - 0.025443547578964*G0_2_2; A[2251] = -0.0212681961813908*G0_0_2 - 0.0118736555368504*G0_1_0 - 0.0425363923627812*G0_1_2 - 0.0212681961813909*G0_2_0 - 0.0613254736518624*G0_2_2; A[2252] = -0.0306627368259309*G0_0_0 - 0.02126819618139*G0_0_1 - 0.0212681961813904*G0_1_0 - 0.0118736555368496*G0_1_1; A[2253] = -0.00130479731174145*G0_0_0 - 0.00123955744615442*G0_0_1 - 0.00123955744615444*G0_1_0 - 0.00117431758056732*G0_1_1; A[2254] = -0.0150051690850304*G0_0_0 - 0.0149399292194434*G0_0_1 - 0.0149399292194432*G0_1_0 - 0.014874689353856*G0_1_1; A[2255] = 0.00939454064454066*G0_0_1 + 0.00939454064454044*G0_1_0 + 0.018789081289081*G0_1_1; A[2256] = -0.257045070413124*G0_0_0 - 0.257045070413124*G0_0_1 - 0.160751028806583*G0_0_2 - 0.0644569872000423*G0_1_0 - 0.0644569872000424*G0_1_1 - 0.0929015685960122*G0_1_2 - 0.160751028806583*G0_2_0 - 0.160751028806583*G0_2_1 - 0.064456987200042*G0_2_2; A[2257] = 0.121346149991983*G0_0_0 + 0.121346149991983*G0_0_1 + 0.194675758911869*G0_0_2 + 0.132306447410614*G0_1_0 + 0.132306447410614*G0_1_1 + 0.0589768384907269*G0_1_2 + 0.194675758911869*G0_2_0 + 0.194675758911869*G0_2_1 - 0.00339247301052889*G0_2_2; A[2258] = -0.0528442911255409*G0_0_0 - 0.0528442911255409*G0_0_1 - 0.0887914570640264*G0_0_2 - 0.0510175748891024*G0_1_0 - 0.0510175748891024*G0_1_1 - 0.00463203045668325*G0_1_2 - 0.0887914570640257*G0_2_0 - 0.0887914570640257*G0_2_1 + 0.0846813455320396*G0_2_2; A[2259] = 0.0212681961813906*G0_0_2 + 0.0118736555368503*G0_1_0 + 0.0118736555368503*G0_1_1 - 0.0146137298915076*G0_1_2 + 0.0212681961813908*G0_2_0 + 0.0212681961813908*G0_2_1 - 0.069349977119074*G0_2_2; A[2260] = -0.128522535206562*G0_0_0 - 0.0322284936000212*G0_0_1 - 0.128522535206562*G0_0_2 - 0.0322284936000213*G0_1_0 - 0.0606730749959912*G0_1_1 - 0.0322284936000214*G0_1_2 - 0.128522535206562*G0_2_0 - 0.0322284936000212*G0_2_1 - 0.128522535206562*G0_2_2; A[2261] = 0.0476251018785736*G0_0_0 - 0.0147442096226814*G0_0_1 + 0.0476251018785738*G0_0_2 - 0.0147442096226816*G0_1_0 + 0.0476251018785739*G0_1_1 - 0.0147442096226815*G0_1_2 + 0.0476251018785739*G0_2_0 - 0.0147442096226817*G0_2_1 + 0.047625101878574*G0_2_2; A[2262] = -0.0150051690850299*G0_0_0 + 0.0227687130898929*G0_0_1 - 0.0150051690850302*G0_0_2 + 0.0227687130898938*G0_1_0 - 0.0665446628988289*G0_1_1 + 0.0227687130898936*G0_1_2 - 0.0150051690850303*G0_2_0 + 0.0227687130898936*G0_2_1 - 0.0150051690850303*G0_2_2; A[2263] = -0.00939454064454019*G0_0_1 - 0.0093945406445404*G0_1_0 + 0.0453417065830255*G0_1_1 - 0.00939454064454039*G0_1_2 - 0.0093945406445406*G0_2_1; A[2264] = -0.0644569872000423*G0_0_0 - 0.160751028806583*G0_0_1 - 0.160751028806583*G0_0_2 - 0.0929015685960121*G0_1_0 - 0.0644569872000425*G0_1_1 - 0.0644569872000424*G0_1_2 - 0.160751028806583*G0_2_0 - 0.257045070413124*G0_2_1 - 0.257045070413124*G0_2_2; A[2265] = -0.00339247301052855*G0_0_0 + 0.194675758911867*G0_0_1 + 0.194675758911867*G0_0_2 + 0.0589768384907266*G0_1_0 + 0.132306447410612*G0_1_1 + 0.132306447410612*G0_1_2 + 0.194675758911868*G0_2_0 + 0.121346149991982*G0_2_1 + 0.121346149991982*G0_2_2; A[2266] = 0.0846813455320395*G0_0_0 - 0.0887914570640248*G0_0_1 - 0.0887914570640248*G0_0_2 - 0.00463203045668261*G0_1_0 - 0.0510175748891011*G0_1_1 - 0.0510175748891011*G0_1_2 - 0.0887914570640248*G0_2_0 - 0.05284429112554*G0_2_1 - 0.0528442911255399*G0_2_2; A[2267] = -0.069349977119074*G0_0_0 + 0.0212681961813898*G0_0_1 + 0.0212681961813899*G0_0_2 - 0.014613729891508*G0_1_0 + 0.0118736555368493*G0_1_1 + 0.0118736555368494*G0_1_2 + 0.0212681961813898*G0_2_0; A[2268] = -0.0456679059109615*G0_0_0 - 0.0756782440810209*G0_0_1 - 0.0378391220405099*G0_0_2 - 0.0756782440810211*G0_1_0 - 0.105688582251081*G0_1_1 - 0.0528442911255404*G0_1_2 - 0.0378391220405107*G0_2_0 - 0.0528442911255409*G0_2_1; A[2269] = -0.022833952955481*G0_0_0 - 0.0241387502672233*G0_0_1 - 0.0120693751336116*G0_0_2 - 0.0241387502672228*G0_1_0 - 0.0254435475789645*G0_1_1 - 0.0127217737894816*G0_1_2 - 0.0120693751336121*G0_2_0 - 0.012721773789483*G0_2_1; A[2270] = -0.0300103381700597*G0_0_1 - 0.0150051690850302*G0_0_2 - 0.0300103381700608*G0_1_0 - 0.0600206763401204*G0_1_1 - 0.0300103381700608*G0_1_2 - 0.0150051690850298*G0_2_0 - 0.0300103381700597*G0_2_1; A[2271] = -0.088073818542568*G0_0_0 - 0.10079559233205*G0_0_1 - 0.0887262171984395*G0_0_2 - 0.10079559233205*G0_1_0 - 0.113517366121531*G0_1_1 - 0.10079559233205*G0_1_2 - 0.0887262171984387*G0_2_0 - 0.10079559233205*G0_2_1 - 0.088073818542568*G0_2_2; A[2272] = -0.0127217737894822*G0_0_1 - 0.0120693751336104*G0_0_2 - 0.0127217737894818*G0_1_0 - 0.0254435475789644*G0_1_1 - 0.024138750267223*G0_1_2 - 0.0120693751336103*G0_2_0 - 0.0241387502672215*G0_2_1 - 0.0228339529554794*G0_2_2; A[2273] = -0.052844291125541*G0_0_1 - 0.0378391220405111*G0_0_2 - 0.052844291125542*G0_1_0 - 0.105688582251082*G0_1_1 - 0.075678244081022*G0_1_2 - 0.037839122040511*G0_2_0 - 0.0756782440810221*G0_2_1 - 0.0456679059109617*G0_2_2; A[2274] = 0.0521918924696705*G0_0_0 + 0.323589733311953*G0_0_1 + 0.187890812890811*G0_0_2 + 0.323589733311955*G0_1_0 + 0.0521918924696708*G0_1_1 + 0.187890812890813*G0_1_2 + 0.187890812890813*G0_2_0 + 0.187890812890813*G0_2_1 + 0.323589733311954*G0_2_2; A[2275] = -0.0228339529554805*G0_0_0 - 0.0965550010688895*G0_0_1 - 0.0596944770121848*G0_0_2 - 0.0965550010688894*G0_1_0 + 0.0391439193522511*G0_1_1 - 0.0287055408583187*G0_1_2 - 0.0596944770121854*G0_2_0 - 0.0287055408583207*G0_2_1 - 0.0965550010688894*G0_2_2; A[2276] = 0.0300103381700602*G0_0_1 + 0.01500516908503*G0_0_2 + 0.030010338170061*G0_1_0 - 0.0456679059109604*G0_1_1 - 0.00782878387045048*G0_1_2 + 0.0150051690850299*G0_2_0 - 0.00782878387044919*G0_2_1 + 0.0300103381700598*G0_2_2; A[2277] = -0.0880738185425675*G0_0_0 - 0.134067923781465*G0_0_1 - 0.0972073997247602*G0_0_2 - 0.134067923781463*G0_1_0 - 0.15657567740901*G0_1_1 - 0.224425137619581*G0_1_2 - 0.0972073997247585*G0_2_0 - 0.22442513761958*G0_2_1 - 0.292274597830152*G0_2_2; A[2278] = 0.0127217737894823*G0_0_1 + 0.0120693751336113*G0_0_2 + 0.0127217737894818*G0_1_0 + 0.0391439193522524*G0_1_1 + 0.0446893079271552*G0_1_2 + 0.0120693751336103*G0_2_0 + 0.0446893079271545*G0_2_1 + 0.0502346965020578*G0_2_2; A[2279] = 0.0528442911255404*G0_0_1 + 0.0378391220405105*G0_0_2 + 0.0528442911255419*G0_1_0 + 0.0521918924696697*G0_1_1 + 0.0900310145101803*G0_1_2 + 0.037839122040511*G0_2_0 + 0.0900310145101797*G0_2_1 + 0.127870136550691*G0_2_2; A[2280] = 0.647179466623905*G0_0_0 + 0.375781625781622*G0_0_1 + 0.375781625781623*G0_0_2 + 0.375781625781622*G0_1_0 + 0.647179466623907*G0_1_1 + 0.375781625781624*G0_1_2 + 0.375781625781623*G0_2_0 + 0.375781625781624*G0_2_1 + 0.647179466623906*G0_2_2; A[2281] = -0.5845491956603*G0_0_0 - 0.194414799449519*G0_0_1 - 0.321632537344339*G0_0_2 - 0.44885027523916*G0_1_0 - 0.268135847562928*G0_1_1 - 0.290643601190474*G0_1_2 - 0.32163253734434*G0_2_0 - 0.222141742324032*G0_2_1 - 0.268135847562929*G0_2_2; A[2282] = 0.255740273101381*G0_0_0 + 0.075678244081021*G0_0_1 + 0.127870136550691*G0_0_2 + 0.18006202902036*G0_1_0 + 0.105688582251081*G0_1_1 + 0.10503618359521*G0_1_2 + 0.127870136550691*G0_2_0 + 0.052844291125541*G0_2_1 + 0.105688582251081*G0_2_2; A[2283] = -0.268135847562929*G0_0_0 - 0.222141742324032*G0_0_1 - 0.321632537344341*G0_0_2 - 0.290643601190475*G0_1_0 - 0.268135847562928*G0_1_1 - 0.448850275239162*G0_1_2 - 0.321632537344341*G0_2_0 - 0.194414799449519*G0_2_1 - 0.584549195660303*G0_2_2; A[2284] = 0.172233245149911*G0_0_0 + 0.100795592332049*G0_0_1 + 0.166035457919136*G0_0_2 + 0.198655390712681*G0_1_0 + 0.113517366121531*G0_1_1 + 0.198655390712681*G0_1_2 + 0.166035457919137*G0_2_0 + 0.100795592332049*G0_2_1 + 0.17223324514991*G0_2_2; A[2285] = 0.105688582251082*G0_0_0 + 0.0528442911255414*G0_0_1 + 0.127870136550692*G0_0_2 + 0.10503618359521*G0_1_0 + 0.105688582251083*G0_1_1 + 0.180062029020361*G0_1_2 + 0.127870136550691*G0_2_0 + 0.0756782440810225*G0_2_1 + 0.255740273101383*G0_2_2; A[2286] = 0.323589733311952*G0_0_0 + 0.187890812890811*G0_0_1 + 0.187890812890811*G0_0_2 + 0.187890812890811*G0_1_0 + 0.0521918924696709*G0_1_1 + 0.323589733311953*G0_1_2 + 0.187890812890812*G0_2_0 + 0.323589733311954*G0_2_1 + 0.052191892469671*G0_2_2; A[2287] = -0.29227459783015*G0_0_0 - 0.224425137619579*G0_0_1 - 0.0972073997247591*G0_0_2 - 0.224425137619579*G0_1_0 - 0.156575677409009*G0_1_1 - 0.134067923781464*G0_1_2 - 0.0972073997247602*G0_2_0 - 0.134067923781464*G0_2_1 - 0.0880738185425675*G0_2_2; A[2288] = 0.12787013655069*G0_0_0 + 0.0900310145101798*G0_0_1 + 0.03783912204051*G0_0_2 + 0.0900310145101801*G0_1_0 + 0.0521918924696692*G0_1_1 + 0.0528442911255404*G0_1_2 + 0.0378391220405103*G0_2_0 + 0.0528442911255399*G0_2_1; A[2289] = -0.0965550010688885*G0_0_0 - 0.028705540858318*G0_0_1 - 0.0596944770121844*G0_0_2 - 0.0287055408583181*G0_1_0 + 0.0391439193522517*G0_1_1 - 0.0965550010688884*G0_1_2 - 0.0596944770121848*G0_2_0 - 0.0965550010688906*G0_2_1 - 0.022833952955481*G0_2_2; A[2290] = 0.0502346965020564*G0_0_0 + 0.0446893079271545*G0_0_1 + 0.0120693751336114*G0_0_2 + 0.0446893079271541*G0_1_0 + 0.0391439193522522*G0_1_1 + 0.0127217737894819*G0_1_2 + 0.0120693751336109*G0_2_0 + 0.0127217737894822*G0_2_1; A[2291] = 0.0300103381700605*G0_0_0 - 0.00782878387045065*G0_0_1 + 0.0150051690850307*G0_0_2 - 0.00782878387045045*G0_1_0 - 0.0456679059109607*G0_1_1 + 0.0300103381700613*G0_1_2 + 0.0150051690850306*G0_2_0 + 0.0300103381700611*G0_2_1; A[2292] = -0.150051690850299*G0_0_0 - 0.466465038947672*G0_0_1 - 0.335985307773497*G0_0_2 - 0.466465038947674*G0_1_0 - 0.782878387045046*G0_1_1 - 0.466465038947671*G0_1_2 - 0.335985307773499*G0_2_0 - 0.466465038947673*G0_2_1 - 0.150051690850299*G0_2_2; A[2293] = 0.14352770429159*G0_0_0 + 0.218553549716742*G0_0_1 + 0.185933616923198*G0_0_2 + 0.21855354971674*G0_1_0 + 0.293579395141893*G0_1_1 + 0.234863516113514*G0_1_2 + 0.185933616923197*G0_2_0 + 0.234863516113515*G0_2_1 + 0.176147637085135*G0_2_2; A[2294] = 0.0456679059109613*G0_0_0 + 0.12069375133611*G0_0_1 + 0.0717638521457948*G0_0_2 + 0.120693751336112*G0_1_0 + 0.19571959676126*G0_1_1 + 0.120693751336111*G0_1_2 + 0.0717638521457975*G0_2_0 + 0.12069375133611*G0_2_1 + 0.0456679059109603*G0_2_2; A[2295] = 0.176147637085136*G0_0_0 + 0.234863516113514*G0_0_1 + 0.185933616923197*G0_0_2 + 0.234863516113512*G0_1_0 + 0.293579395141892*G0_1_1 + 0.21855354971674*G0_1_2 + 0.185933616923197*G0_2_0 + 0.218553549716741*G0_2_1 + 0.143527704291591*G0_2_2; A[2296] = -0.0298472385060922*G0_0_0 - 0.0298472385060922*G0_0_1 - 0.0298472385060923*G0_0_2 - 0.034571909571909*G0_1_0 - 0.034571909571909*G0_1_1 - 0.034571909571909*G0_1_2 - 0.0298472385060922*G0_2_0 - 0.0298472385060922*G0_2_1 - 0.0298472385060923*G0_2_2; A[2297] = -0.0298472385060925*G0_0_0 + 0.00472467106581687*G0_1_0; A[2298] = -0.00946499969937481*G0_1_1; A[2299] = 0.0022781761063013*G0_1_2 + 0.0117431758056759*G0_2_2; A[2300] = 0.00658922642429634*G0_1_1 + 0.00329461321214811*G0_1_2 + 0.00329461321214796*G0_2_1; A[2301] = 0.00450155072550939*G0_1_1 + 0.00192457603481966*G0_1_2 + 0.00192457603481899*G0_2_1 - 0.00065239865587063*G0_2_2; A[2302] = -0.0105036183595208*G0_1_1 - 0.0130805930502105*G0_1_2 - 0.0130805930502106*G0_2_1 - 0.0156575677409007*G0_2_2; A[2303] = -0.00254435475789565*G0_1_1 - 0.00583896797004375*G0_1_2 - 0.00583896797004417*G0_2_1 - 0.00913358118219216*G0_2_2; A[2304] = 0.128522535206561*G0_0_0 + 0.0422754329004322*G0_0_2 + 0.0845508658008638*G0_1_0 + 0.0429604514890965*G0_1_2 + 0.0422754329004321*G0_2_0; A[2305] = 0.0371867233846397*G0_0_0 + 0.0743408268364856*G0_0_2 + 0.0808321934624014*G0_1_0 + 0.108232937008977*G0_1_2 + 0.0743408268364859*G0_2_0 + 0.104709984267274*G0_2_2; A[2306] = -0.00619778723077382*G0_0_0 + 0.0188869410874615*G0_0_2 + 0.00939454064453962*G0_1_0 + 0.0377738821749233*G0_1_2 + 0.0188869410874616*G0_2_0 + 0.0567586830607666*G0_2_2; A[2307] = -0.0058389679700441*G0_0_2 - 0.00254435475789559*G0_1_0 - 0.0142875305635719*G0_1_2 - 0.00583896797004414*G0_2_0 - 0.0435476102793812*G0_2_2; A[2308] = 0.0642612676032808*G0_0_0 + 0.0422754329004323*G0_0_1 + 0.042275432900432*G0_1_0 + 0.0429604514890965*G0_1_1; A[2309] = 0.0088073818542565*G0_0_0 + 0.00649136662591478*G0_0_1 + 0.00649136662591581*G0_1_0 + 0.00352295274170323*G0_1_1; A[2310] = -0.000652398655870519*G0_0_0 - 0.00949240044292075*G0_0_1 - 0.00949240044292135*G0_1_0 - 0.0189848008858427*G0_1_1; A[2311] = 0.0032946132121479*G0_0_1 + 0.00329461321214798*G0_1_0 + 0.0292600797158092*G0_1_1; A[2312] = 0.128522535206562*G0_0_0 + 0.128522535206562*G0_0_1 + 0.0862471023061294*G0_0_2 + 0.043971669405697*G0_1_0 + 0.0439716694056969*G0_1_1 + 0.044656687994361*G0_1_2 + 0.0862471023061292*G0_2_0 + 0.0862471023061291*G0_2_1 + 0.0439716694056968*G0_2_2; A[2313] = 0.0371867233846392*G0_0_0 + 0.0371867233846392*G0_0_1 - 0.0371541034518464*G0_0_2 - 0.043645470077762*G0_1_0 - 0.043645470077762*G0_1_1 - 0.0097533599052694*G0_1_2 - 0.0371541034518467*G0_2_0 - 0.0371541034518466*G0_2_1 - 0.00678494602105732*G0_2_2; A[2314] = -0.00619778723077363*G0_0_0 - 0.00619778723077357*G0_0_1 - 0.025084728318235*G0_0_2 - 0.0155923278753138*G0_1_0 - 0.0155923278753138*G0_1_1 + 0.00329461321214766*G0_1_2 - 0.0250847283182351*G0_2_0 - 0.0250847283182351*G0_2_1 + 0.0127870136550693*G0_2_2; A[2315] = 0.00583896797004448*G0_0_2 + 0.00254435475789574*G0_1_0 + 0.0025443547578958*G0_1_1 - 0.00590420783563126*G0_1_2 + 0.00583896797004424*G0_2_0 + 0.00583896797004429*G0_2_1 - 0.0318696743392923*G0_2_2; A[2316] = 0.0642612676032807*G0_0_0 + 0.0219858347028482*G0_0_1 + 0.0642612676032807*G0_0_2 + 0.0219858347028488*G0_1_0 + 0.0226708532915128*G0_1_1 + 0.0219858347028488*G0_1_2 + 0.0642612676032807*G0_2_0 + 0.0219858347028482*G0_2_1 + 0.0642612676032808*G0_2_2; A[2317] = 0.00880738185425631*G0_0_0 + 0.00231601522834141*G0_0_1 + 0.00880738185425618*G0_0_2 + 0.00231601522834084*G0_1_0 - 0.000652398655871113*G0_1_1 + 0.00231601522834077*G0_1_2 + 0.0088073818542564*G0_2_0 + 0.0023160152283416*G0_2_1 + 0.00880738185425634*G0_2_2; A[2318] = -0.000652398655871434*G0_0_0 + 0.00884000178705073*G0_0_1 - 0.000652398655871104*G0_0_2 + 0.00884000178705032*G0_1_0 - 0.000652398655870735*G0_1_1 + 0.0088400017870504*G0_1_2 - 0.000652398655871028*G0_2_0 + 0.00884000178705054*G0_2_1 - 0.000652398655870829*G0_2_2; A[2319] = -0.00329461321214817*G0_0_1 - 0.00329461321214801*G0_1_0 + 0.0226708532915129*G0_1_1 - 0.00329461321214802*G0_1_2 - 0.00329461321214806*G0_2_1; A[2320] = 0.0920860702761732*G0_0_0 + 0.134361503176606*G0_0_1 + 0.134361503176606*G0_0_2 + 0.128000616281864*G0_1_0 + 0.127315597693201*G0_1_1 + 0.1273155976932*G0_1_2 + 0.134361503176606*G0_2_0 + 0.176636936077038*G0_2_1 + 0.176636936077038*G0_2_2; A[2321] = -0.0622388317700804*G0_0_0 - 0.250814663249555*G0_0_1 - 0.250814663249555*G0_0_2 - 0.160783648739375*G0_1_0 - 0.166948816037355*G0_1_1 - 0.166948816037355*G0_1_2 - 0.250814663249556*G0_2_0 - 0.334680510461756*G0_2_1 - 0.334680510461756*G0_2_2; A[2322] = -0.0622388317700821*G0_0_0 + 0.188575831479474*G0_0_1 + 0.188575831479474*G0_0_2 + 0.0985448169692944*G0_1_0 + 0.182410664181494*G0_1_1 + 0.182410664181494*G0_1_2 + 0.188575831479475*G0_2_0 + 0.104709984267273*G0_2_1 + 0.104709984267273*G0_2_2; A[2323] = 0.0920860702761741*G0_0_0 - 0.0422754329004318*G0_0_1 - 0.042275432900432*G0_0_2 - 0.0359145460056913*G0_1_0 - 0.0429604514890961*G0_1_1 - 0.0429604514890963*G0_1_2 - 0.0422754329004321*G0_2_0; A[2324] = 0.0391439193522536*G0_0_0 + 0.135698920421141*G0_0_1 + 0.0678494602105711*G0_0_2 + 0.135698920421144*G0_1_0 + 0.20941996853455*G0_1_1 + 0.104709984267276*G0_1_2 + 0.0678494602105708*G0_2_0 + 0.104709984267275*G0_2_1; A[2325] = -0.00489298991903127*G0_0_0 + 0.0283793415303844*G0_0_1 + 0.0141896707651913*G0_0_2 + 0.0283793415303827*G0_1_0 + 0.0567586830607675*G0_1_1 + 0.0283793415303838*G0_1_2 + 0.0141896707651914*G0_2_0 + 0.0283793415303825*G0_2_1; A[2326] = -0.00130479731174144*G0_0_1 - 0.000652398655870135*G0_0_2 - 0.00130479731174017*G0_1_0 - 0.0254435475789639*G0_1_1 - 0.0127217737894815*G0_1_2 - 0.000652398655870451*G0_2_0 - 0.0127217737894819*G0_2_1; A[2327] = 0.0195719596761257*G0_0_0 + 0.0748627457611814*G0_0_1 + 0.0606730749959912*G0_0_2 + 0.0748627457611798*G0_1_0 + 0.149725491522363*G0_1_1 + 0.121346149991981*G0_1_2 + 0.0606730749959903*G0_2_0 + 0.121346149991981*G0_2_1 + 0.0929668084615977*G0_2_2; A[2328] = -0.0181040627004155*G0_0_1 - 0.0102752788299655*G0_0_2 - 0.0181040627004153*G0_1_0 - 0.0166361657247061*G0_1_1 + 0.00146789697570992*G0_1_2 - 0.0102752788299655*G0_2_0 + 0.00146789697571053*G0_2_1 + 0.0195719596761265*G0_2_2; A[2329] = -0.00619778723077245*G0_0_1 - 0.00554538857490143*G0_0_2 - 0.00619778723077112*G0_1_0 + 0.0137003717732892*G0_1_1 + 0.0264221455627716*G0_1_2 - 0.00554538857490159*G0_2_0 + 0.0264221455627706*G0_2_1 + 0.0391439193522536*G0_2_2; A[2330] = 0.0391439193522506*G0_0_0 - 0.0965550010688899*G0_0_1 - 0.0287055408583187*G0_0_2 - 0.096555001068891*G0_1_0 - 0.0228339529554818*G0_1_1 - 0.059694477012186*G0_1_2 - 0.0287055408583199*G0_2_0 - 0.0596944770121856*G0_2_1 - 0.0965550010688896*G0_2_2; A[2331] = -0.00489298991903091*G0_0_0 - 0.033272331449414*G0_0_1 - 0.0190826606842217*G0_0_2 - 0.0332723314494142*G0_1_0 - 0.0048929899190305*G0_1_1 - 0.0190826606842219*G0_1_2 - 0.019082660684223*G0_2_0 - 0.0190826606842222*G0_2_1 - 0.0332723314494138*G0_2_2; A[2332] = 0.00130479731174214*G0_0_1 + 0.000652398655870577*G0_0_2 + 0.00130479731174013*G0_1_0 - 0.0228339529554808*G0_1_1 - 0.0107645778218702*G0_1_2 + 0.000652398655870397*G0_2_0 - 0.0107645778218691*G0_2_1 + 0.00130479731174155*G0_2_2; A[2333] = 0.019571959676127*G0_0_0 - 0.0552907860850548*G0_0_1 - 0.0411011153198651*G0_0_2 - 0.0552907860850555*G0_1_0 + 0.0195719596761276*G0_1_1 + 0.00538228891093538*G0_1_2 - 0.0411011153198644*G0_2_0 + 0.00538228891093571*G0_2_1 - 0.00880738185425657*G0_2_2; A[2334] = 0.0181040627004149*G0_0_1 + 0.0102752788299654*G0_0_2 + 0.0181040627004155*G0_1_0 + 0.0195719596761248*G0_1_1 + 0.0298472385060915*G0_1_2 + 0.0102752788299656*G0_2_0 + 0.0298472385060916*G0_2_1 + 0.040122517336058*G0_2_2; A[2335] = 0.00619778723077364*G0_0_1 + 0.00554538857490249*G0_0_2 + 0.00619778723077122*G0_1_0 + 0.0260959462348346*G0_1_1 + 0.0381653213684455*G0_1_2 + 0.00554538857490173*G0_2_0 + 0.0381653213684459*G0_2_1 + 0.0502346965020575*G0_2_2; A[2336] = -0.5845491956603*G0_0_0 - 0.44885027523916*G0_0_1 - 0.32163253734434*G0_0_2 - 0.194414799449519*G0_1_0 - 0.268135847562928*G0_1_1 - 0.222141742324032*G0_1_2 - 0.321632537344339*G0_2_0 - 0.290643601190474*G0_2_1 - 0.268135847562929*G0_2_2; A[2337] = 0.912053320907477*G0_0_0 + 0.456026660453737*G0_0_1 + 0.456026660453738*G0_0_2 + 0.456026660453737*G0_1_0 + 0.726119703984278*G0_1_1 + 0.456026660453738*G0_1_2 + 0.456026660453738*G0_2_0 + 0.456026660453738*G0_2_1 + 0.72611970398428*G0_2_2; A[2338] = -0.584549195660299*G0_0_0 - 0.135698920421141*G0_0_1 - 0.26291665831596*G0_0_2 - 0.390134396210779*G0_1_0 - 0.209419968534549*G0_1_1 - 0.290643601190472*G0_1_2 - 0.26291665831596*G0_2_0 - 0.104709984267275*G0_2_1 - 0.209419968534548*G0_2_2; A[2339] = -0.0371867233846395*G0_0_0 + 0.0376760223765422*G0_0_1 + 0.186912214907006*G0_0_2 + 0.140428810676206*G0_1_0 + 0.0655660649150233*G0_1_1 + 0.0376760223765435*G0_1_2 + 0.186912214907006*G0_2_0 + 0.140428810676206*G0_2_1 - 0.0371867233846391*G0_2_2; A[2340] = -0.0371867233846397*G0_0_0 - 0.0748627457611812*G0_0_1 - 0.224098938291644*G0_0_2 - 0.177615534060845*G0_1_0 - 0.149725491522363*G0_1_1 - 0.326851726591306*G0_1_2 - 0.224098938291645*G0_2_0 - 0.121346149991981*G0_2_1 - 0.44819787658329*G0_2_2; A[2341] = 0.0123955744615473*G0_0_0 + 0.00619778723077192*G0_0_1 + 0.00619778723077282*G0_0_2 + 0.00619778723077387*G0_1_0 - 0.0137003717732899*G0_1_1 + 0.0714376528178596*G0_1_2 + 0.00619778723077331*G0_2_0 - 0.0264221455627711*G0_2_1 + 0.17223324514991*G0_2_2; A[2342] = -0.29227459783015*G0_0_0 - 0.097207399724761*G0_0_1 - 0.22442513761958*G0_0_2 - 0.0972073997247604*G0_1_0 - 0.0880738185425691*G0_1_1 - 0.134067923781465*G0_1_2 - 0.224425137619579*G0_2_0 - 0.134067923781465*G0_2_1 - 0.156575677409009*G0_2_2; A[2343] = 0.456026660453738*G0_0_0 + 0.228013330226869*G0_0_1 + 0.228013330226868*G0_0_2 + 0.228013330226869*G0_1_0 + 0.0929668084615987*G0_1_1 + 0.363059851992138*G0_1_2 + 0.228013330226868*G0_2_0 + 0.363059851992139*G0_2_1 + 0.0929668084615981*G0_2_2; A[2344] = -0.292274597830149*G0_0_0 - 0.19506719810539*G0_0_1 - 0.0678494602105709*G0_0_2 - 0.195067198105389*G0_1_0 - 0.185933616923199*G0_1_1 - 0.104709984267276*G0_1_2 - 0.0678494602105696*G0_2_0 - 0.104709984267273*G0_2_1; A[2345] = -0.00880738185425647*G0_0_0 - 0.0411011153198646*G0_0_1 + 0.0053822889109345*G0_0_2 - 0.0411011153198646*G0_1_0 + 0.0195719596761271*G0_1_1 - 0.0552907860850569*G0_1_2 + 0.00538228891093475*G0_2_0 - 0.055290786085056*G0_2_1 + 0.0195719596761256*G0_2_2; A[2346] = -0.00880738185425644*G0_0_0 + 0.0322937334656085*G0_0_1 - 0.0141896707651913*G0_0_2 + 0.0322937334656079*G0_1_0 + 0.0929668084615999*G0_1_1 - 0.0283793415303836*G0_1_2 - 0.014189670765191*G0_2_0 - 0.0283793415303836*G0_2_1; A[2347] = 0.00130479731174178*G0_0_0 + 0.000652398655871096*G0_0_1 + 0.000652398655869587*G0_0_2 + 0.000652398655870806*G0_1_0 - 0.0880738185425679*G0_1_1 + 0.0127217737894814*G0_1_2 + 0.000652398655870782*G0_2_0 + 0.0127217737894827*G0_2_1; A[2348] = -0.0391439193522542*G0_0_0 + 0.445262082631869*G0_0_1 + 0.249542485870607*G0_0_2 + 0.44526208263187*G0_1_0 + 0.146789697570945*G0_1_1 + 0.249542485870609*G0_1_2 + 0.249542485870609*G0_2_0 + 0.249542485870609*G0_2_1 + 0.352295274170272*G0_2_2; A[2349] = -0.0391439193522502*G0_0_0 - 0.484406001984122*G0_0_1 - 0.288686405222859*G0_0_2 - 0.484406001984122*G0_1_0 - 0.782878387045047*G0_1_1 - 0.484406001984119*G0_1_2 - 0.28868640522286*G0_2_0 - 0.484406001984121*G0_2_1 - 0.185933616923195*G0_2_2; A[2350] = 0.00978597983806255*G0_0_0 + 0.00489298991903248*G0_0_1 + 0.00489298991903132*G0_0_2 + 0.00489298991903147*G0_1_0 + 0.146789697570947*G0_1_1 + 0.053822889109347*G0_1_2 + 0.0048929899190317*G0_2_0 + 0.0538228891093466*G0_2_1 - 0.0391439193522523*G0_2_2; A[2351] = -0.0391439193522527*G0_0_0 - 0.0195719596761258*G0_0_1 - 0.0195719596761247*G0_0_2 - 0.0195719596761246*G0_1_0 - 0.0489298991903165*G0_1_1 - 0.141896707651915*G0_1_2 - 0.019571959676126*G0_2_0 - 0.141896707651916*G0_2_1 - 0.234863516113516*G0_2_2; A[2352] = 0.0189195610202551*G0_0_0 + 0.0189195610202551*G0_0_1 + 0.0189195610202552*G0_0_2 + 0.013742125287264*G0_1_0 + 0.013742125287264*G0_1_1 + 0.013742125287264*G0_1_2 + 0.0189195610202552*G0_2_0 + 0.0189195610202552*G0_2_1 + 0.0189195610202553*G0_2_2; A[2353] = 0.0335985307773499*G0_0_0 - 0.0143945239431347*G0_1_0; A[2354] = -0.013742125287264*G0_1_1; A[2355] = 0.00517743573299119*G0_1_2 + 0.0189195610202552*G0_2_2; A[2356] = 0.0187890812890809*G0_1_1 + 0.00939454064454045*G0_1_2 + 0.00939454064454009*G0_2_1; A[2357] = -0.0148746893538556*G0_1_1 - 0.014939929219443*G0_1_2 - 0.0149399292194425*G0_2_1 - 0.0150051690850297*G0_2_2; A[2358] = -0.00117431758056778*G0_1_1 - 0.00123955744615506*G0_1_2 - 0.00123955744615482*G0_2_1 - 0.00130479731174254*G0_2_2; A[2359] = -0.0118736555368502*G0_1_1 - 0.0212681961813906*G0_1_2 - 0.0212681961813904*G0_2_1 - 0.0306627368259307*G0_2_2; A[2360] = -0.257045070413123*G0_0_0 - 0.0962940416065403*G0_0_2 - 0.192588083213081*G0_1_0 - 0.12473862300251*G0_1_2 - 0.0962940416065406*G0_2_0; A[2361] = 0.121346149991982*G0_0_0 - 0.0733296089198859*G0_0_2 - 0.0109602974186309*G0_1_0 - 0.146659217839773*G0_1_2 - 0.0733296089198858*G0_2_0 - 0.271397840842283*G0_2_2; A[2362] = -0.0528442911255401*G0_0_0 + 0.0359471659384854*G0_0_2 - 0.00182671623643783*G0_1_0 + 0.0823327103709049*G0_1_2 + 0.0359471659384847*G0_2_0 + 0.20941996853455*G0_2_2; A[2363] = -0.0212681961813907*G0_0_2 - 0.0118736555368501*G0_1_0 - 0.047755581609748*G0_1_2 - 0.0212681961813905*G0_2_0 - 0.111886369481855*G0_2_2; A[2364] = -0.128522535206561*G0_0_0 - 0.0962940416065405*G0_0_1 - 0.0962940416065399*G0_1_0 - 0.12473862300251*G0_1_1; A[2365] = 0.0476251018785733*G0_0_0 + 0.0623693115012556*G0_0_1 + 0.0623693115012547*G0_1_0 + 0.12473862300251*G0_1_1; A[2366] = -0.0150051690850298*G0_0_0 - 0.0377738821749238*G0_0_1 - 0.0377738821749232*G0_1_0 - 0.127087258163646*G0_1_1; A[2367] = 0.00939454064454072*G0_0_1 + 0.00939454064454045*G0_1_0 + 0.0641307878721067*G0_1_1; A[2368] = -0.061325473651862*G0_0_0 - 0.0613254736518621*G0_0_1 - 0.0400572774704717*G0_0_2 - 0.018789081289081*G0_1_0 - 0.0187890812890809*G0_1_1 - 0.00939454064454063*G0_1_2 - 0.040057277470472*G0_2_0 - 0.040057277470472*G0_2_1 - 0.0187890812890816*G0_2_2; A[2369] = -0.0254435475789636*G0_0_0 - 0.0254435475789638*G0_0_1 + 0.0136351319077013*G0_0_2 + 0.0148746893538561*G0_1_0 + 0.0148746893538558*G0_1_1 - 6.52398655871684e-05*G0_1_2 + 0.0136351319077018*G0_2_0 + 0.0136351319077018*G0_2_1 - 0.000130479731173529*G0_2_2; A[2370] = -0.0528442911255405*G0_0_0 - 0.0528442911255404*G0_0_1 - 0.0137656116388754*G0_0_2 + 0.00117431758056751*G0_1_0 + 0.0011743175805676*G0_1_1 - 6.52398655871893e-05*G0_1_2 - 0.013765611638876*G0_2_0 - 0.013765611638876*G0_2_1 - 0.000130479731174694*G0_2_2; A[2371] = 0.0212681961813904*G0_0_2 + 0.01187365553685*G0_1_0 + 0.0118736555368501*G0_1_1 - 0.00939454064454052*G0_1_2 + 0.0212681961813904*G0_2_0 + 0.0212681961813904*G0_2_1 - 0.018789081289081*G0_2_2; A[2372] = -0.0306627368259311*G0_0_0 - 0.00939454064454062*G0_0_1 - 0.030662736825931*G0_0_2 - 0.00939454064454075*G0_1_0 - 0.00939454064454067*G0_1_2 - 0.0306627368259315*G0_2_0 - 0.00939454064454101*G0_2_1 - 0.0306627368259315*G0_2_2; A[2373] = -0.00130479731174133*G0_0_0 - 6.52398655868002e-05*G0_0_1 - 0.00130479731174122*G0_0_2 - 6.52398655872448e-05*G0_1_0 - 6.5239865587171e-05*G0_1_2 - 0.00130479731174142*G0_2_0 - 6.52398655864734e-05*G0_2_1 - 0.00130479731174119*G0_2_2; A[2374] = -0.0150051690850293*G0_0_0 - 6.52398655872815e-05*G0_0_1 - 0.0150051690850295*G0_0_2 - 6.52398655867779e-05*G0_1_0 - 6.52398655868884e-05*G0_1_2 - 0.0150051690850303*G0_2_0 - 6.52398655873145e-05*G0_2_1 - 0.0150051690850305*G0_2_2; A[2375] = -0.00939454064454054*G0_0_1 - 0.0093945406445405*G0_1_0 - 0.00939454064454041*G0_1_2 - 0.0093945406445406*G0_2_1; A[2376] = -0.0693499771190732*G0_0_0 - 0.0906181733004638*G0_0_1 - 0.0906181733004636*G0_0_2 - 0.0547362472275659*G0_1_0 - 0.0641307878721063*G0_1_1 - 0.0641307878721062*G0_1_2 - 0.0906181733004638*G0_2_0 - 0.111886369481855*G0_2_1 - 0.111886369481854*G0_2_2; A[2377] = 0.0846813455320385*G0_0_0 + 0.173472802596064*G0_0_1 + 0.173472802596064*G0_0_2 + 0.0893133759887216*G0_1_0 + 0.127087258163645*G0_1_1 + 0.127087258163645*G0_1_2 + 0.173472802596064*G0_2_0 + 0.209419968534549*G0_2_1 + 0.209419968534549*G0_2_2; A[2378] = -0.00339247301052785*G0_0_0 - 0.198068231922395*G0_0_1 - 0.198068231922395*G0_0_2 - 0.0623693115012545*G0_1_0 - 0.12473862300251*G0_1_1 - 0.12473862300251*G0_1_2 - 0.198068231922396*G0_2_0 - 0.271397840842282*G0_2_1 - 0.271397840842282*G0_2_2; A[2379] = -0.0644569872000426*G0_0_0 + 0.0962940416065401*G0_0_1 + 0.0962940416065402*G0_0_2 + 0.0284445813959694*G0_1_0 + 0.12473862300251*G0_1_1 + 0.12473862300251*G0_1_2 + 0.0962940416065403*G0_2_0; A[2380] = 0.0521918924696685*G0_0_0 - 0.271397840842283*G0_0_1 - 0.135698920421142*G0_0_2 - 0.271397840842283*G0_1_0 - 0.542795681684566*G0_1_1 - 0.271397840842282*G0_1_2 - 0.135698920421143*G0_2_0 - 0.271397840842283*G0_2_1; A[2381] = -0.02283395295548*G0_0_0 + 0.0737210481134075*G0_0_1 + 0.0368605240567044*G0_0_2 + 0.0737210481134095*G0_1_0 + 0.20941996853455*G0_1_1 + 0.104709984267275*G0_1_2 + 0.0368605240567049*G0_2_0 + 0.104709984267274*G0_2_1; A[2382] = -0.0300103381700602*G0_0_1 - 0.01500516908503*G0_0_2 - 0.0300103381700599*G0_1_0 - 0.105688582251081*G0_1_1 - 0.0528442911255402*G0_1_2 - 0.0150051690850302*G0_2_0 - 0.05284429112554*G0_2_1; A[2383] = -0.0880738185425672*G0_0_0 + 0.0459941052388975*G0_0_1 + 0.00913358118219195*G0_0_2 + 0.0459941052388978*G0_1_0 + 0.0234863516113522*G0_1_1 - 0.0812236326559229*G0_1_2 + 0.00913358118219203*G0_2_0 - 0.0812236326559243*G0_2_1 - 0.185933616923199*G0_2_2; A[2384] = -0.0127217737894829*G0_0_1 - 0.0120693751336118*G0_0_2 - 0.0127217737894831*G0_1_0 + 0.0137003717732876*G0_1_1 + 0.0198981590040618*G0_1_2 - 0.012069375133611*G0_2_0 + 0.0198981590040623*G0_2_1 + 0.026095946234837*G0_2_2; A[2385] = -0.0528442911255414*G0_0_1 - 0.0378391220405113*G0_0_2 - 0.052844291125541*G0_1_0 - 0.0534966897814108*G0_1_1 - 0.000652398655870967*G0_1_2 - 0.0378391220405104*G0_2_0 - 0.000652398655870714*G0_2_1 + 0.0521918924696692*G0_2_2; A[2386] = -0.045667905910959*G0_0_0 + 0.0300103381700611*G0_0_1 - 0.00782878387044972*G0_0_2 + 0.0300103381700605*G0_1_0 + 0.0150051690850306*G0_1_2 - 0.00782878387045005*G0_2_0 + 0.0150051690850311*G0_2_1 + 0.0300103381700611*G0_2_2; A[2387] = -0.0228339529554815*G0_0_0 + 0.00130479731174097*G0_0_1 - 0.0107645778218714*G0_0_2 + 0.00130479731174149*G0_1_0 + 0.000652398655870641*G0_1_2 - 0.0107645778218701*G0_2_0 + 0.000652398655869517*G0_2_1 + 0.00130479731174118*G0_2_2; A[2388] = 0.0300103381700602*G0_0_1 + 0.0150051690850304*G0_0_2 + 0.0300103381700601*G0_1_0 + 0.0150051690850297*G0_1_2 + 0.0150051690850303*G0_2_0 + 0.0150051690850311*G0_2_1 + 0.0300103381700601*G0_2_2; A[2389] = -0.0880738185425689*G0_0_0 + 0.0127217737894806*G0_0_1 + 0.000652398655870461*G0_0_2 + 0.0127217737894836*G0_1_0 + 0.000652398655871035*G0_1_2 + 0.000652398655870487*G0_2_0 + 0.000652398655870378*G0_2_1 + 0.00130479731174093*G0_2_2; A[2390] = 0.0127217737894835*G0_0_1 + 0.0120693751336124*G0_0_2 + 0.0127217737894826*G0_1_0 + 0.000652398655871646*G0_1_2 + 0.0120693751336107*G0_2_0 + 0.000652398655870822*G0_2_1 + 0.00130479731174261*G0_2_2; A[2391] = 0.0528442911255409*G0_0_1 + 0.037839122040511*G0_0_2 + 0.0528442911255412*G0_1_0 + 0.0150051690850298*G0_1_2 + 0.0378391220405105*G0_2_0 + 0.0150051690850308*G0_2_1 + 0.0300103381700603*G0_2_2; A[2392] = 0.255740273101381*G0_0_0 + 0.18006202902036*G0_0_1 + 0.127870136550691*G0_0_2 + 0.0756782440810209*G0_1_0 + 0.105688582251081*G0_1_1 + 0.0528442911255409*G0_1_2 + 0.127870136550691*G0_2_0 + 0.10503618359521*G0_2_1 + 0.105688582251081*G0_2_2; A[2393] = -0.584549195660299*G0_0_0 - 0.390134396210779*G0_0_1 - 0.26291665831596*G0_0_2 - 0.135698920421141*G0_1_0 - 0.209419968534549*G0_1_1 - 0.104709984267274*G0_1_2 - 0.26291665831596*G0_2_0 - 0.290643601190472*G0_2_1 - 0.209419968534548*G0_2_2; A[2394] = 0.647179466623903*G0_0_0 + 0.271397840842282*G0_0_1 + 0.271397840842282*G0_0_2 + 0.271397840842282*G0_1_0 + 0.542795681684565*G0_1_1 + 0.271397840842283*G0_1_2 + 0.271397840842282*G0_2_0 + 0.271397840842283*G0_2_1 + 0.542795681684565*G0_2_2; A[2395] = 0.172233245149911*G0_0_0 + 0.0714376528178616*G0_0_1 + 0.00619778723077322*G0_0_2 - 0.02642214556277*G0_1_0 - 0.0137003717732863*G0_1_1 + 0.00619778723077346*G0_1_2 + 0.00619778723077292*G0_2_0 + 0.00619778723077356*G0_2_1 + 0.0123955744615456*G0_2_2; A[2396] = -0.268135847562929*G0_0_0 - 0.0459941052388977*G0_0_1 + 0.0534966897814105*G0_0_2 + 0.0225077536275447*G0_1_0 - 0.0234863516113522*G0_1_1 - 0.104709984267276*G0_1_2 + 0.053496689781411*G0_2_0 + 0.081223632655924*G0_2_1 - 0.209419968534551*G0_2_2; A[2397] = 0.10568858225108*G0_0_0 + 0.0528442911255417*G0_0_1 - 0.0221815542996096*G0_0_2 + 0.000652398655870637*G0_1_0 + 0.0534966897814111*G0_1_1 + 0.0528442911255405*G0_1_2 - 0.0221815542996085*G0_2_0 + 0.000652398655871136*G0_2_1 + 0.105688582251082*G0_2_2; A[2398] = 0.127870136550691*G0_0_0 + 0.0378391220405118*G0_0_1 + 0.0900310145101811*G0_0_2 + 0.0378391220405108*G0_1_0 + 0.0528442911255404*G0_1_2 + 0.0900310145101807*G0_2_0 + 0.0528442911255412*G0_2_1 + 0.0521918924696694*G0_2_2; A[2399] = -0.292274597830149*G0_0_0 - 0.0678494602105704*G0_0_1 - 0.195067198105389*G0_0_2 - 0.067849460210571*G0_1_0 - 0.104709984267275*G0_1_2 - 0.19506719810539*G0_2_0 - 0.104709984267274*G0_2_1 - 0.185933616923198*G0_2_2; A[2400] = 0.323589733311951*G0_0_0 + 0.135698920421141*G0_0_1 + 0.135698920421141*G0_0_2 + 0.135698920421141*G0_1_0 + 0.271397840842282*G0_1_2 + 0.135698920421141*G0_2_0 + 0.271397840842283*G0_2_1; A[2401] = 0.0502346965020565*G0_0_0 + 0.00554538857490158*G0_0_1 + 0.0381653213684461*G0_0_2 + 0.00554538857490244*G0_1_0 + 0.00619778723077355*G0_1_2 + 0.0381653213684454*G0_2_0 + 0.00619778723077227*G0_2_1 + 0.0260959462348342*G0_2_2; A[2402] = -0.0965550010688884*G0_0_0 - 0.0678494602105707*G0_0_1 - 0.0368605240567045*G0_0_2 - 0.0678494602105698*G0_1_0 - 0.104709984267275*G0_1_2 - 0.0368605240567041*G0_2_0 - 0.104709984267275*G0_2_1; A[2403] = 0.0300103381700592*G0_0_0 + 0.0378391220405102*G0_0_1 + 0.0150051690850304*G0_0_2 + 0.0378391220405101*G0_1_0 + 0.0528442911255403*G0_1_2 + 0.0150051690850309*G0_2_0 + 0.0528442911255419*G0_2_1; A[2404] = 0.143527704291593*G0_0_0 - 0.0750258454251494*G0_0_1 - 0.0424059126316065*G0_0_2 - 0.0750258454251491*G0_1_0 - 0.026095946234833*G0_1_2 - 0.0424059126316057*G0_2_0 - 0.0260959462348334*G0_2_1 - 0.052191892469668*G0_2_2; A[2405] = -0.150051690850302*G0_0_0 + 0.316413348097373*G0_0_1 + 0.185933616923198*G0_0_2 + 0.316413348097372*G0_1_0 + 0.185933616923198*G0_1_2 + 0.185933616923199*G0_2_0 + 0.185933616923198*G0_2_1 + 0.371867233846397*G0_2_2; A[2406] = 0.0456679059109611*G0_0_0 - 0.0750258454251513*G0_0_1 - 0.0260959462348346*G0_0_2 - 0.0750258454251509*G0_1_0 - 0.0260959462348352*G0_1_2 - 0.0260959462348348*G0_2_0 - 0.0260959462348364*G0_2_1 - 0.0521918924696712*G0_2_2; A[2407] = 0.176147637085136*G0_0_0 - 0.058715879028379*G0_0_1 - 0.00978597983806373*G0_0_2 - 0.0587158790283809*G0_1_0 - 0.0260959462348367*G0_1_2 - 0.0097859798380623*G0_2_0 - 0.0260959462348362*G0_2_1 - 0.0521918924696707*G0_2_2; A[2408] = -0.0298472385060927*G0_0_0 - 0.0298472385060927*G0_0_1 - 0.0298472385060927*G0_0_2 - 0.0345719095719094*G0_1_0 - 0.0345719095719094*G0_1_1 - 0.0345719095719094*G0_1_2 - 0.0298472385060925*G0_2_0 - 0.0298472385060927*G0_2_1 - 0.0298472385060926*G0_2_2; A[2409] = 0.0117431758056756*G0_0_0 + 0.00227817610630113*G0_1_0; A[2410] = -0.00946499969937459*G0_1_1; A[2411] = 0.00472467106581696*G0_1_2 - 0.0298472385060923*G0_2_2; A[2412] = 0.0292600797158085*G0_1_1 + 0.00329461321214815*G0_1_2 + 0.00329461321214783*G0_2_1; A[2413] = -0.0189848008858432*G0_1_1 - 0.00949240044292235*G0_1_2 - 0.0094924004429209*G0_2_1 - 0.00065239865587194*G0_2_2; A[2414] = 0.0035229527417023*G0_1_1 + 0.00649136662591541*G0_1_2 + 0.00649136662591424*G0_2_1 + 0.00880738185425744*G0_2_2; A[2415] = 0.0429604514890964*G0_1_1 + 0.0422754329004314*G0_1_2 + 0.0422754329004331*G0_2_1 + 0.0642612676032809*G0_2_2; A[2416] = -0.043547610279381*G0_0_0 - 0.00583896797004472*G0_0_2 - 0.0142875305635726*G0_1_0 - 0.0025443547578963*G0_1_2 - 0.00583896797004439*G0_2_0; A[2417] = 0.0567586830607662*G0_0_0 + 0.018886941087462*G0_0_2 + 0.0377738821749232*G0_1_0 + 0.00939454064453973*G0_1_2 + 0.0188869410874616*G0_2_0 - 0.00619778723077305*G0_2_2; A[2418] = 0.104709984267275*G0_0_0 + 0.0743408268364858*G0_0_2 + 0.108232937008978*G0_1_0 + 0.0808321934624019*G0_1_2 + 0.074340826836486*G0_2_0 + 0.0371867233846393*G0_2_2; A[2419] = 0.042275432900433*G0_0_2 + 0.0429604514890966*G0_1_0 + 0.0845508658008645*G0_1_2 + 0.0422754329004332*G0_2_0 + 0.128522535206563*G0_2_2; A[2420] = -0.0091335811821926*G0_0_0 - 0.00583896797004495*G0_0_1 - 0.00583896797004477*G0_1_0 - 0.00254435475789652*G0_1_1; A[2421] = -0.0156575677409006*G0_0_0 - 0.0130805930502106*G0_0_1 - 0.0130805930502109*G0_1_0 - 0.0105036183595214*G0_1_1; A[2422] = -0.000652398655870776*G0_0_0 + 0.00192457603481904*G0_0_1 + 0.00192457603481906*G0_1_0 + 0.00450155072550932*G0_1_1; A[2423] = 0.00329461321214818*G0_0_1 + 0.00329461321214813*G0_1_0 + 0.00658922642429573*G0_1_1; A[2424] = 0.176636936077039*G0_0_0 + 0.176636936077039*G0_0_1 + 0.134361503176607*G0_0_2 + 0.127315597693201*G0_1_0 + 0.1273155976932*G0_1_1 + 0.128000616281865*G0_1_2 + 0.134361503176606*G0_2_0 + 0.134361503176607*G0_2_1 + 0.0920860702761736*G0_2_2; A[2425] = -0.334680510461758*G0_0_0 - 0.334680510461758*G0_0_1 - 0.250814663249558*G0_0_2 - 0.166948816037356*G0_1_0 - 0.166948816037356*G0_1_1 - 0.160783648739377*G0_1_2 - 0.250814663249557*G0_2_0 - 0.250814663249557*G0_2_1 - 0.0622388317700812*G0_2_2; A[2426] = 0.104709984267275*G0_0_0 + 0.104709984267275*G0_0_1 + 0.188575831479476*G0_0_2 + 0.182410664181496*G0_1_0 + 0.182410664181496*G0_1_1 + 0.0985448169692959*G0_1_2 + 0.188575831479476*G0_2_0 + 0.188575831479476*G0_2_1 - 0.0622388317700815*G0_2_2; A[2427] = -0.0422754329004329*G0_0_2 - 0.0429604514890963*G0_1_0 - 0.0429604514890963*G0_1_1 - 0.0359145460056919*G0_1_2 - 0.042275432900433*G0_2_0 - 0.042275432900433*G0_2_1 + 0.0920860702761739*G0_2_2; A[2428] = 0.0642612676032811*G0_0_0 + 0.0219858347028488*G0_0_1 + 0.0642612676032811*G0_0_2 + 0.0219858347028486*G0_1_0 + 0.0226708532915132*G0_1_1 + 0.0219858347028486*G0_1_2 + 0.0642612676032814*G0_2_0 + 0.0219858347028487*G0_2_1 + 0.0642612676032814*G0_2_2; A[2429] = 0.00880738185425649*G0_0_0 + 0.00231601522834153*G0_0_1 + 0.00880738185425646*G0_0_2 + 0.00231601522834159*G0_1_0 - 0.000652398655871405*G0_1_1 + 0.00231601522834155*G0_1_2 + 0.00880738185425641*G0_2_0 + 0.0023160152283416*G0_2_1 + 0.00880738185425636*G0_2_2; A[2430] = -0.000652398655870361*G0_0_0 + 0.00884000178705031*G0_0_1 - 0.00065239865587033*G0_0_2 + 0.00884000178705091*G0_1_0 - 0.000652398655870171*G0_1_1 + 0.00884000178705103*G0_1_2 - 0.000652398655870525*G0_2_0 + 0.00884000178704999*G0_2_1 - 0.000652398655870585*G0_2_2; A[2431] = -0.00329461321214787*G0_0_1 - 0.00329461321214809*G0_1_0 + 0.0226708532915124*G0_1_1 - 0.0032946132121482*G0_1_2 - 0.00329461321214774*G0_2_1; A[2432] = 0.0439716694056973*G0_0_0 + 0.0862471023061295*G0_0_1 + 0.0862471023061295*G0_0_2 + 0.0446566879943615*G0_1_0 + 0.0439716694056967*G0_1_1 + 0.0439716694056967*G0_1_2 + 0.0862471023061295*G0_2_0 + 0.128522535206562*G0_2_1 + 0.128522535206562*G0_2_2; A[2433] = -0.00678494602105756*G0_0_0 - 0.037154103451846*G0_0_1 - 0.0371541034518461*G0_0_2 - 0.00975335990526986*G0_1_0 - 0.0436454700777613*G0_1_1 - 0.0436454700777614*G0_1_2 - 0.0371541034518462*G0_2_0 + 0.0371867233846399*G0_2_1 + 0.0371867233846398*G0_2_2; A[2434] = 0.0127870136550693*G0_0_0 - 0.0250847283182356*G0_0_1 - 0.0250847283182355*G0_0_2 + 0.00329461321214849*G0_1_0 - 0.0155923278753138*G0_1_1 - 0.0155923278753138*G0_1_2 - 0.0250847283182353*G0_2_0 - 0.0061977872307734*G0_2_1 - 0.00619778723077344*G0_2_2; A[2435] = -0.0318696743392922*G0_0_0 + 0.00583896797004491*G0_0_1 + 0.00583896797004495*G0_0_2 - 0.00590420783563204*G0_1_0 + 0.0025443547578964*G0_1_1 + 0.00254435475789647*G0_1_2 + 0.00583896797004452*G0_2_0; A[2436] = 0.0391439193522523*G0_0_0 + 0.0264221455627702*G0_0_1 - 0.00554538857490331*G0_0_2 + 0.0264221455627688*G0_1_0 + 0.0137003717732863*G0_1_1 - 0.0061977872307752*G0_1_2 - 0.00554538857490231*G0_2_0 - 0.00619778723077337*G0_2_1; A[2437] = 0.0195719596761266*G0_0_0 + 0.00146789697570908*G0_0_1 - 0.0102752788299653*G0_0_2 + 0.00146789697570974*G0_1_0 - 0.0166361657247075*G0_1_1 - 0.018104062700416*G0_1_2 - 0.0102752788299654*G0_2_0 - 0.0181040627004158*G0_2_1; A[2438] = -0.012721773789482*G0_0_1 - 0.000652398655870527*G0_0_2 - 0.0127217737894837*G0_1_0 - 0.0254435475789651*G0_1_1 - 0.0013047973117425*G0_1_2 - 0.000652398655871111*G0_2_0 - 0.00130479731174182*G0_2_1; A[2439] = 0.0929668084615984*G0_0_0 + 0.121346149991982*G0_0_1 + 0.0606730749959906*G0_0_2 + 0.121346149991982*G0_1_0 + 0.149725491522366*G0_1_1 + 0.0748627457611825*G0_1_2 + 0.0606730749959907*G0_2_0 + 0.0748627457611828*G0_2_1 + 0.0195719596761266*G0_2_2; A[2440] = 0.0283793415303822*G0_0_1 + 0.0141896707651904*G0_0_2 + 0.0283793415303817*G0_1_0 + 0.0567586830607644*G0_1_1 + 0.0283793415303811*G0_1_2 + 0.0141896707651901*G0_2_0 + 0.0283793415303809*G0_2_1 - 0.00489298991903318*G0_2_2; A[2441] = 0.104709984267275*G0_0_1 + 0.0678494602105709*G0_0_2 + 0.104709984267272*G0_1_0 + 0.209419968534548*G0_1_1 + 0.13569892042114*G0_1_2 + 0.0678494602105708*G0_2_0 + 0.135698920421142*G0_2_1 + 0.0391439193522524*G0_2_2; A[2442] = -0.15657567740901*G0_0_0 - 0.134067923781465*G0_0_1 - 0.22442513761958*G0_0_2 - 0.134067923781463*G0_1_0 - 0.0880738185425671*G0_1_1 - 0.0972073997247593*G0_1_2 - 0.224425137619582*G0_2_0 - 0.0972073997247614*G0_2_1 - 0.292274597830152*G0_2_2; A[2443] = 0.0195719596761255*G0_0_0 - 0.0552907860850552*G0_0_1 + 0.0053822889109338*G0_0_2 - 0.0552907860850559*G0_1_0 + 0.0195719596761265*G0_1_1 - 0.0411011153198655*G0_1_2 + 0.00538228891093552*G0_2_0 - 0.0411011153198627*G0_2_1 - 0.00880738185425649*G0_2_2; A[2444] = 0.0127217737894811*G0_0_1 + 0.000652398655870883*G0_0_2 + 0.0127217737894835*G0_1_0 - 0.0880738185425684*G0_1_1 + 0.000652398655871229*G0_1_2 + 0.000652398655870927*G0_2_0 + 0.000652398655869459*G0_2_1 + 0.00130479731174211*G0_2_2; A[2445] = 0.0929668084615975*G0_0_0 + 0.36305985199214*G0_0_1 + 0.22801333022687*G0_0_2 + 0.363059851992139*G0_1_0 + 0.0929668084615982*G0_1_1 + 0.228013330226869*G0_1_2 + 0.228013330226868*G0_2_0 + 0.22801333022687*G0_2_1 + 0.45602666045374*G0_2_2; A[2446] = -0.0283793415303815*G0_0_1 - 0.0141896707651908*G0_0_2 - 0.0283793415303818*G0_1_0 + 0.0929668084616009*G0_1_1 + 0.0322937334656083*G0_1_2 - 0.0141896707651902*G0_2_0 + 0.0322937334656087*G0_2_1 - 0.00880738185425714*G0_2_2; A[2447] = -0.104709984267275*G0_0_1 - 0.0678494602105704*G0_0_2 - 0.104709984267272*G0_1_0 - 0.185933616923198*G0_1_1 - 0.195067198105389*G0_1_2 - 0.0678494602105707*G0_2_0 - 0.19506719810539*G0_2_1 - 0.29227459783015*G0_2_2; A[2448] = -0.268135847562929*G0_0_0 - 0.290643601190475*G0_0_1 - 0.321632537344341*G0_0_2 - 0.222141742324032*G0_1_0 - 0.268135847562928*G0_1_1 - 0.194414799449519*G0_1_2 - 0.321632537344341*G0_2_0 - 0.448850275239162*G0_2_1 - 0.584549195660303*G0_2_2; A[2449] = -0.0371867233846395*G0_0_0 + 0.140428810676206*G0_0_1 + 0.186912214907006*G0_0_2 + 0.0376760223765421*G0_1_0 + 0.0655660649150233*G0_1_1 + 0.140428810676206*G0_1_2 + 0.186912214907006*G0_2_0 + 0.0376760223765435*G0_2_1 - 0.0371867233846391*G0_2_2; A[2450] = 0.172233245149911*G0_0_0 - 0.02642214556277*G0_0_1 + 0.00619778723077292*G0_0_2 + 0.0714376528178616*G0_1_0 - 0.0137003717732863*G0_1_1 + 0.00619778723077356*G0_1_2 + 0.00619778723077321*G0_2_0 + 0.00619778723077347*G0_2_1 + 0.0123955744615456*G0_2_2; A[2451] = 0.726119703984282*G0_0_0 + 0.456026660453741*G0_0_1 + 0.456026660453741*G0_0_2 + 0.456026660453741*G0_1_0 + 0.726119703984282*G0_1_1 + 0.45602666045374*G0_1_2 + 0.456026660453741*G0_2_0 + 0.45602666045374*G0_2_1 + 0.912053320907481*G0_2_2; A[2452] = -0.44819787658329*G0_0_0 - 0.121346149991982*G0_0_1 - 0.224098938291645*G0_0_2 - 0.326851726591308*G0_1_0 - 0.149725491522366*G0_1_1 - 0.177615534060846*G0_1_2 - 0.224098938291645*G0_2_0 - 0.0748627457611823*G0_2_1 - 0.0371867233846392*G0_2_2; A[2453] = -0.209419968534551*G0_0_0 - 0.104709984267276*G0_0_1 - 0.262916658315963*G0_0_2 - 0.290643601190474*G0_1_0 - 0.209419968534549*G0_1_1 - 0.390134396210781*G0_1_2 - 0.262916658315962*G0_2_0 - 0.135698920421143*G0_2_1 - 0.584549195660303*G0_2_2; A[2454] = -0.0965550010688895*G0_0_0 - 0.0596944770121859*G0_0_1 - 0.0287055408583189*G0_0_2 - 0.0596944770121849*G0_1_0 - 0.0228339529554803*G0_1_1 - 0.096555001068888*G0_1_2 - 0.0287055408583194*G0_2_0 - 0.0965550010688908*G0_2_1 + 0.0391439193522511*G0_2_2; A[2455] = -0.0088073818542569*G0_0_0 + 0.0053822889109352*G0_0_1 - 0.0411011153198645*G0_0_2 + 0.00538228891093404*G0_1_0 + 0.0195719596761263*G0_1_1 - 0.0552907860850562*G0_1_2 - 0.0411011153198646*G0_2_0 - 0.0552907860850565*G0_2_1 + 0.0195719596761267*G0_2_2; A[2456] = 0.0502346965020579*G0_0_0 + 0.0381653213684463*G0_0_1 + 0.00554538857490283*G0_0_2 + 0.0381653213684469*G0_1_0 + 0.0260959462348353*G0_1_1 + 0.00619778723077468*G0_1_2 + 0.00554538857490268*G0_2_0 + 0.00619778723077335*G0_2_1; A[2457] = -0.0332723314494141*G0_0_0 - 0.0190826606842219*G0_0_1 - 0.0190826606842227*G0_0_2 - 0.0190826606842227*G0_1_0 - 0.00489298991903154*G0_1_1 - 0.0332723314494135*G0_1_2 - 0.0190826606842225*G0_2_0 - 0.0332723314494126*G0_2_1 - 0.00489298991903066*G0_2_2; A[2458] = 0.0401225173360582*G0_0_0 + 0.0298472385060914*G0_0_1 + 0.0102752788299654*G0_0_2 + 0.029847238506092*G0_1_0 + 0.0195719596761253*G0_1_1 + 0.0181040627004161*G0_1_2 + 0.010275278829966*G0_2_0 + 0.0181040627004163*G0_2_1; A[2459] = 0.00130479731174109*G0_0_0 - 0.01076457782187*G0_0_1 + 0.00065239865587059*G0_0_2 - 0.0107645778218701*G0_1_0 - 0.0228339529554805*G0_1_1 + 0.00130479731174244*G0_1_2 + 0.000652398655870282*G0_2_0 + 0.0013047973117405*G0_2_1; A[2460] = 0.352295274170273*G0_0_0 + 0.249542485870609*G0_0_1 + 0.249542485870609*G0_0_2 + 0.249542485870611*G0_1_0 + 0.146789697570948*G0_1_1 + 0.445262082631871*G0_1_2 + 0.24954248587061*G0_2_0 + 0.445262082631871*G0_2_1 - 0.0391439193522532*G0_2_2; A[2461] = -0.234863516113515*G0_0_0 - 0.141896707651915*G0_0_1 - 0.0195719596761252*G0_0_2 - 0.141896707651917*G0_1_0 - 0.0489298991903161*G0_1_1 - 0.0195719596761252*G0_1_2 - 0.0195719596761259*G0_2_0 - 0.0195719596761277*G0_2_1 - 0.039143919352253*G0_2_2; A[2462] = -0.0391439193522522*G0_0_0 + 0.0538228891093473*G0_0_1 + 0.00489298991903226*G0_0_2 + 0.0538228891093464*G0_1_0 + 0.146789697570946*G0_1_1 + 0.00489298991903282*G0_1_2 + 0.00489298991902997*G0_2_0 + 0.00489298991903222*G0_2_1 + 0.00978597983806447*G0_2_2; A[2463] = -0.185933616923196*G0_0_0 - 0.484406001984124*G0_0_1 - 0.288686405222862*G0_0_2 - 0.484406001984122*G0_1_0 - 0.782878387045047*G0_1_1 - 0.484406001984125*G0_1_2 - 0.288686405222859*G0_2_0 - 0.484406001984121*G0_2_1 - 0.0391439193522516*G0_2_2; A[2464] = 0.0117431758056757*G0_0_0 + 0.0117431758056757*G0_0_1 + 0.0117431758056757*G0_0_2 + 0.0094649996993749*G0_1_0 + 0.00946499969937491*G0_1_1 + 0.00946499969937486*G0_1_2 + 0.0117431758056757*G0_2_0 + 0.0117431758056757*G0_2_1 + 0.0117431758056757*G0_2_2; A[2465] = -0.0298472385060924*G0_0_0 + 0.00472467106581678*G0_1_0; A[2466] = -0.00946499969937459*G0_1_1; A[2467] = 0.00472467106581659*G0_1_2 - 0.0298472385060928*G0_2_2; A[2468] = 0.0292600797158087*G0_1_1 + 0.00329461321214811*G0_1_2 + 0.00329461321214792*G0_2_1; A[2469] = -0.0189848008858422*G0_1_1 - 0.00949240044292113*G0_1_2 - 0.00949240044292148*G0_2_1 - 0.000652398655871239*G0_2_2; A[2470] = 0.00352295274170282*G0_1_1 + 0.00649136662591489*G0_1_2 + 0.00649136662591492*G0_2_1 + 0.00880738185425674*G0_2_2; A[2471] = 0.0429604514890967*G0_1_1 + 0.0422754329004329*G0_1_2 + 0.0422754329004322*G0_2_1 + 0.064261267603281*G0_2_2; A[2472] = 0.176636936077039*G0_0_0 + 0.0422754329004323*G0_0_2 + 0.0493213383838383*G0_1_0 + 0.0429604514890969*G0_1_2 + 0.0422754329004332*G0_2_0; A[2473] = -0.334680510461758*G0_0_0 - 0.0838658472121999*G0_0_2 - 0.167731694424401*G0_1_0 - 0.0777006799142208*G0_1_2 - 0.0838658472122009*G0_2_0 + 0.104709984267276*G0_2_2; A[2474] = 0.104709984267275*G0_0_0 - 0.0838658472122012*G0_0_2 - 0.0777006799142211*G0_1_0 - 0.167731694424401*G0_1_2 - 0.0838658472122003*G0_2_0 - 0.334680510461758*G0_2_2; A[2475] = 0.042275432900433*G0_0_2 + 0.0429604514890966*G0_1_0 + 0.0493213383838378*G0_1_2 + 0.0422754329004321*G0_2_0 + 0.176636936077039*G0_2_2; A[2476] = 0.0642612676032806*G0_0_0 + 0.0422754329004325*G0_0_1 + 0.042275432900433*G0_1_0 + 0.042960451489097*G0_1_1; A[2477] = 0.00880738185425686*G0_0_0 + 0.00649136662591496*G0_0_1 + 0.00649136662591474*G0_1_0 + 0.00352295274170269*G0_1_1; A[2478] = -0.000652398655871377*G0_0_0 - 0.00949240044292123*G0_0_1 - 0.00949240044292164*G0_1_0 - 0.0189848008858429*G0_1_1; A[2479] = 0.00329461321214748*G0_0_1 + 0.0032946132121481*G0_1_0 + 0.0292600797158086*G0_1_1; A[2480] = -0.0435476102793806*G0_0_0 - 0.0435476102793805*G0_0_1 - 0.0377086423093363*G0_0_2 - 0.029260079715809*G0_1_0 - 0.0292600797158089*G0_1_1 - 0.0259654665036615*G0_1_2 - 0.0377086423093361*G0_2_0 - 0.0377086423093361*G0_2_1 - 0.031869674339292*G0_2_2; A[2481] = 0.0567586830607658*G0_0_0 + 0.056758683060766*G0_0_1 + 0.0378717419733043*G0_0_2 + 0.0189848008858428*G0_1_0 + 0.0189848008858428*G0_1_1 + 0.00949240044292238*G0_1_2 + 0.0378717419733043*G0_2_0 + 0.0378717419733042*G0_2_1 + 0.0127870136550691*G0_2_2; A[2482] = 0.104709984267275*G0_0_0 + 0.104709984267275*G0_0_1 + 0.030369157430789*G0_0_2 - 0.00352295274170351*G0_1_0 - 0.00352295274170348*G0_1_1 + 0.00296841388421147*G0_1_2 + 0.0303691574307892*G0_2_0 + 0.0303691574307892*G0_2_1 - 0.00678494602105718*G0_2_2; A[2483] = -0.0422754329004325*G0_0_2 - 0.0429604514890967*G0_1_0 - 0.0429604514890967*G0_1_1 - 0.000685018588663909*G0_1_2 - 0.0422754329004322*G0_2_0 - 0.0422754329004322*G0_2_1 + 0.0439716694056971*G0_2_2; A[2484] = -0.00913358118219222*G0_0_0 - 0.00329461321214791*G0_0_1 - 0.0091335811821923*G0_0_2 - 0.00329461321214808*G0_1_0 - 0.00329461321214823*G0_1_2 - 0.0091335811821919*G0_2_0 - 0.00329461321214767*G0_2_1 - 0.00913358118219195*G0_2_2; A[2485] = -0.0156575677409008*G0_0_0 - 0.00257697469069003*G0_0_1 - 0.0156575677409008*G0_0_2 - 0.00257697469068983*G0_1_0 - 0.00257697469068959*G0_1_2 - 0.0156575677409008*G0_2_0 - 0.00257697469069019*G0_2_1 - 0.0156575677409009*G0_2_2; A[2486] = -0.00065239865587154*G0_0_0 - 0.00257697469068999*G0_0_1 - 0.000652398655871612*G0_0_2 - 0.00257697469068996*G0_1_0 - 0.00257697469069009*G0_1_2 - 0.000652398655870694*G0_2_0 - 0.00257697469069003*G0_2_1 - 0.000652398655870694*G0_2_2; A[2487] = -0.00329461321214778*G0_0_1 - 0.00329461321214815*G0_1_0 - 0.00329461321214811*G0_1_2 - 0.00329461321214783*G0_2_1; A[2488] = -0.0318696743392922*G0_0_0 - 0.0377086423093365*G0_0_1 - 0.0377086423093366*G0_0_2 - 0.0259654665036611*G0_1_0 - 0.0292600797158086*G0_1_1 - 0.0292600797158087*G0_1_2 - 0.0377086423093364*G0_2_0 - 0.0435476102793805*G0_2_1 - 0.0435476102793807*G0_2_2; A[2489] = 0.0127870136550694*G0_0_0 + 0.0378717419733043*G0_0_1 + 0.0378717419733043*G0_0_2 + 0.00949240044292178*G0_1_0 + 0.0189848008858427*G0_1_1 + 0.0189848008858427*G0_1_2 + 0.0378717419733046*G0_2_0 + 0.0567586830607659*G0_2_1 + 0.0567586830607662*G0_2_2; A[2490] = -0.0067849460210572*G0_0_0 + 0.0303691574307893*G0_0_1 + 0.0303691574307892*G0_0_2 + 0.00296841388421136*G0_1_0 - 0.00352295274170305*G0_1_1 - 0.00352295274170303*G0_1_2 + 0.0303691574307885*G0_2_0 + 0.104709984267276*G0_2_1 + 0.104709984267276*G0_2_2; A[2491] = 0.043971669405697*G0_0_0 - 0.0422754329004325*G0_0_1 - 0.0422754329004325*G0_0_2 - 0.000685018588663664*G0_1_0 - 0.042960451489097*G0_1_1 - 0.0429604514890971*G0_1_2 - 0.0422754329004322*G0_2_0; A[2492] = -0.156575677409009*G0_0_0 - 0.0225077536275444*G0_0_1 + 0.0678494602105707*G0_0_2 - 0.0225077536275443*G0_1_0 + 0.0234863516113526*G0_1_1 + 0.104709984267276*G0_1_2 + 0.0678494602105718*G0_2_0 + 0.104709984267276*G0_2_1; A[2493] = 0.0195719596761256*G0_0_0 + 0.0748627457611828*G0_0_1 + 0.0141896707651907*G0_0_2 + 0.0748627457611825*G0_1_0 + 0.149725491522365*G0_1_1 + 0.0283793415303813*G0_1_2 + 0.0141896707651914*G0_2_0 + 0.028379341530384*G0_2_1; A[2494] = -0.0127217737894816*G0_0_1 - 0.00065239865587137*G0_0_2 - 0.0127217737894813*G0_1_0 - 0.113517366121531*G0_1_1 - 0.0127217737894819*G0_1_2 - 0.000652398655871522*G0_2_0 - 0.0127217737894826*G0_2_1; A[2495] = 0.0929668084615999*G0_0_0 - 0.270093043530541*G0_0_1 - 0.135046521765269*G0_0_2 - 0.270093043530542*G0_1_0 - 0.540186087061084*G0_1_1 - 0.270093043530541*G0_1_2 - 0.13504652176527*G0_2_0 - 0.27009304353054*G0_2_1 + 0.0929668084616017*G0_2_2; A[2496] = 0.0283793415303826*G0_0_1 + 0.0141896707651923*G0_0_2 + 0.0283793415303839*G0_1_0 + 0.149725491522366*G0_1_1 + 0.0748627457611852*G0_1_2 + 0.0141896707651907*G0_2_0 + 0.074862745761181*G0_2_1 + 0.0195719596761255*G0_2_2; A[2497] = 0.104709984267275*G0_0_1 + 0.0678494602105697*G0_0_2 + 0.104709984267274*G0_1_0 + 0.0234863516113505*G0_1_1 - 0.0225077536275474*G0_1_2 + 0.067849460210569*G0_2_0 - 0.0225077536275462*G0_2_1 - 0.156575677409012*G0_2_2; A[2498] = 0.0391439193522512*G0_0_0 + 0.0127217737894815*G0_0_1 + 0.0446893079271539*G0_0_2 + 0.0127217737894814*G0_1_0 + 0.012069375133611*G0_1_2 + 0.0446893079271555*G0_2_0 + 0.0120693751336109*G0_2_1 + 0.0502346965020567*G0_2_2; A[2499] = 0.0195719596761264*G0_0_0 + 0.0181040627004168*G0_0_1 + 0.0298472385060935*G0_0_2 + 0.0181040627004152*G0_1_0 + 0.0102752788299653*G0_1_2 + 0.0298472385060926*G0_2_0 + 0.0102752788299667*G0_2_1 + 0.0401225173360585*G0_2_2; A[2500] = 0.0127217737894822*G0_0_1 + 0.00065239865587077*G0_0_2 + 0.0127217737894812*G0_1_0 + 0.0120693751336108*G0_1_2 + 0.000652398655871444*G0_2_0 + 0.0120693751336105*G0_2_1 + 0.00130479731174169*G0_2_2; A[2501] = 0.0929668084616007*G0_0_0 - 0.0283793415303819*G0_0_1 + 0.0322937334656096*G0_0_2 - 0.0283793415303841*G0_1_0 - 0.0141896707651913*G0_1_2 + 0.0322937334656076*G0_2_0 - 0.0141896707651917*G0_2_1 - 0.00880738185425619*G0_2_2; A[2502] = -0.028379341530384*G0_0_1 - 0.0141896707651917*G0_0_2 - 0.0283793415303836*G0_1_0 - 0.0141896707651896*G0_1_2 - 0.0141896707651904*G0_2_0 - 0.0141896707651912*G0_2_1 - 0.0332723314494137*G0_2_2; A[2503] = -0.104709984267276*G0_0_1 - 0.0678494602105721*G0_0_2 - 0.104709984267275*G0_1_0 - 0.0368605240567048*G0_1_2 - 0.0678494602105694*G0_2_0 - 0.0368605240567044*G0_2_1 - 0.0965550010688899*G0_2_2; A[2504] = 0.172233245149911*G0_0_0 + 0.198655390712681*G0_0_1 + 0.166035457919137*G0_0_2 + 0.100795592332049*G0_1_0 + 0.113517366121531*G0_1_1 + 0.100795592332049*G0_1_2 + 0.166035457919136*G0_2_0 + 0.198655390712681*G0_2_1 + 0.17223324514991*G0_2_2; A[2505] = -0.0371867233846397*G0_0_0 - 0.177615534060845*G0_0_1 - 0.224098938291645*G0_0_2 - 0.0748627457611812*G0_1_0 - 0.149725491522363*G0_1_1 - 0.121346149991981*G0_1_2 - 0.224098938291644*G0_2_0 - 0.326851726591306*G0_2_1 - 0.44819787658329*G0_2_2; A[2506] = -0.268135847562929*G0_0_0 + 0.0225077536275447*G0_0_1 + 0.053496689781411*G0_0_2 - 0.0459941052388977*G0_1_0 - 0.0234863516113522*G0_1_1 + 0.081223632655924*G0_1_2 + 0.0534966897814105*G0_2_0 - 0.104709984267276*G0_2_1 - 0.209419968534551*G0_2_2; A[2507] = -0.44819787658329*G0_0_0 - 0.326851726591308*G0_0_1 - 0.224098938291645*G0_0_2 - 0.121346149991982*G0_1_0 - 0.149725491522366*G0_1_1 - 0.0748627457611823*G0_1_2 - 0.224098938291645*G0_2_0 - 0.177615534060846*G0_2_1 - 0.0371867233846392*G0_2_2; A[2508] = 0.726119703984282*G0_0_0 + 0.270093043530541*G0_0_1 + 0.270093043530542*G0_0_2 + 0.270093043530541*G0_1_0 + 0.540186087061083*G0_1_1 + 0.27009304353054*G0_1_2 + 0.270093043530542*G0_2_0 + 0.27009304353054*G0_2_1 + 0.726119703984283*G0_2_2; A[2509] = -0.20941996853455*G0_0_0 - 0.104709984267275*G0_0_1 + 0.0534966897814117*G0_0_2 + 0.0812236326559246*G0_1_0 - 0.0234863516113501*G0_1_1 - 0.0459941052388959*G0_1_2 + 0.053496689781411*G0_2_0 + 0.0225077536275465*G0_2_1 - 0.268135847562929*G0_2_2; A[2510] = 0.0502346965020575*G0_0_0 + 0.0120693751336113*G0_0_1 + 0.0446893079271543*G0_0_2 + 0.012069375133611*G0_1_0 + 0.0127217737894811*G0_1_2 + 0.0446893079271544*G0_2_0 + 0.0127217737894823*G0_2_1 + 0.0391439193522527*G0_2_2; A[2511] = -0.0088073818542571*G0_0_0 - 0.014189670765192*G0_0_1 + 0.0322937334656077*G0_0_2 - 0.0141896707651905*G0_1_0 - 0.0283793415303817*G0_1_2 + 0.032293733465609*G0_2_0 - 0.0283793415303835*G0_2_1 + 0.0929668084616007*G0_2_2; A[2512] = -0.0965550010688889*G0_0_0 - 0.036860524056704*G0_0_1 - 0.0678494602105702*G0_0_2 - 0.0368605240567054*G0_1_0 - 0.104709984267276*G0_1_2 - 0.0678494602105717*G0_2_0 - 0.104709984267276*G0_2_1; A[2513] = 0.0401225173360584*G0_0_0 + 0.0102752788299662*G0_0_1 + 0.0298472385060919*G0_0_2 + 0.0102752788299656*G0_1_0 + 0.0181040627004158*G0_1_2 + 0.0298472385060926*G0_2_0 + 0.0181040627004171*G0_2_1 + 0.0195719596761267*G0_2_2; A[2514] = -0.0332723314494144*G0_0_0 - 0.0141896707651909*G0_0_1 - 0.0141896707651907*G0_0_2 - 0.0141896707651905*G0_1_0 - 0.0283793415303815*G0_1_2 - 0.0141896707651914*G0_2_0 - 0.0283793415303822*G0_2_1; A[2515] = 0.00130479731174289*G0_0_0 + 0.0120693751336116*G0_0_1 + 0.000652398655871063*G0_0_2 + 0.0120693751336117*G0_1_0 + 0.012721773789482*G0_1_2 + 0.000652398655870435*G0_2_0 + 0.0127217737894808*G0_2_1; A[2516] = -0.234863516113514*G0_0_0 - 0.0929668084615998*G0_0_1 - 0.215291556437388*G0_0_2 - 0.092966808461598*G0_1_0 - 0.0929668084615996*G0_1_2 - 0.215291556437389*G0_2_0 - 0.0929668084616004*G0_2_1 - 0.234863516113517*G0_2_2; A[2517] = 0.352295274170272*G0_0_0 + 0.102752788299662*G0_0_1 + 0.10275278829966*G0_0_2 + 0.102752788299661*G0_1_0 + 0.298472385060922*G0_1_2 + 0.102752788299661*G0_2_0 + 0.298472385060923*G0_2_1 - 0.185933616923203*G0_2_2; A[2518] = -0.0391439193522519*G0_0_0 - 0.0929668084615991*G0_0_1 - 0.0440369092712839*G0_0_2 - 0.0929668084615978*G0_1_0 - 0.0929668084616009*G0_1_2 - 0.0440369092712842*G0_2_0 - 0.092966808461598*G0_2_1 - 0.0391439193522519*G0_2_2; A[2519] = -0.1859336169232*G0_0_0 + 0.298472385060926*G0_0_1 + 0.102752788299664*G0_0_2 + 0.298472385060927*G0_1_0 + 0.102752788299666*G0_1_2 + 0.102752788299662*G0_2_0 + 0.102752788299665*G0_2_1 + 0.352295274170276*G0_2_2; A[2520] = 0.0189195610202556*G0_0_0 + 0.0189195610202556*G0_0_1 + 0.0189195610202556*G0_0_2 + 0.0137421252872641*G0_1_0 + 0.0137421252872642*G0_1_1 + 0.0137421252872642*G0_1_2 + 0.0189195610202554*G0_2_0 + 0.0189195610202555*G0_2_1 + 0.0189195610202554*G0_2_2; A[2521] = 0.0189195610202553*G0_0_0 + 0.00517743573299123*G0_1_0; A[2522] = -0.013742125287264*G0_1_1; A[2523] = -0.0143945239431351*G0_1_2 + 0.03359853077735*G0_2_2; A[2524] = 0.0641307878721068*G0_1_1 + 0.00939454064454076*G0_1_2 + 0.00939454064454088*G0_2_1; A[2525] = -0.127087258163646*G0_1_1 - 0.0377738821749235*G0_1_2 - 0.0377738821749235*G0_2_1 - 0.0150051690850292*G0_2_2; A[2526] = 0.124738623002511*G0_1_1 + 0.0623693115012553*G0_1_2 + 0.0623693115012562*G0_2_1 + 0.0476251018785733*G0_2_2; A[2527] = -0.124738623002511*G0_1_1 - 0.0962940416065405*G0_1_2 - 0.0962940416065407*G0_2_1 - 0.128522535206562*G0_2_2; A[2528] = -0.111886369481854*G0_0_0 - 0.02126819618139*G0_0_2 - 0.0477555816097478*G0_1_0 - 0.01187365553685*G0_1_2 - 0.0212681961813905*G0_2_0; A[2529] = 0.20941996853455*G0_0_0 + 0.0359471659384842*G0_0_2 + 0.0823327103709039*G0_1_0 - 0.00182671623643827*G0_1_2 + 0.0359471659384853*G0_2_0 - 0.0528442911255406*G0_2_2; A[2530] = -0.271397840842283*G0_0_0 - 0.0733296089198856*G0_0_2 - 0.146659217839772*G0_1_0 - 0.0109602974186312*G0_1_2 - 0.0733296089198865*G0_2_0 + 0.121346149991982*G0_2_2; A[2531] = -0.0962940416065416*G0_0_2 - 0.124738623002511*G0_1_0 - 0.192588083213081*G0_1_2 - 0.096294041606541*G0_2_0 - 0.257045070413124*G0_2_2; A[2532] = -0.03066273682593*G0_0_0 - 0.0212681961813898*G0_0_1 - 0.0212681961813901*G0_1_0 - 0.0118736555368499*G0_1_1; A[2533] = -0.00130479731174236*G0_0_0 - 0.00123955744615484*G0_0_1 - 0.00123955744615503*G0_1_0 - 0.00117431758056714*G0_1_1; A[2534] = -0.0150051690850298*G0_0_0 - 0.0149399292194431*G0_0_1 - 0.0149399292194426*G0_1_0 - 0.0148746893538565*G0_1_1; A[2535] = 0.00939454064454077*G0_0_1 + 0.00939454064454054*G0_1_0 + 0.0187890812890817*G0_1_1; A[2536] = -0.111886369481855*G0_0_0 - 0.111886369481855*G0_0_1 - 0.090618173300465*G0_0_2 - 0.0641307878721071*G0_1_0 - 0.0641307878721071*G0_1_1 - 0.0547362472275666*G0_1_2 - 0.0906181733004645*G0_2_0 - 0.0906181733004646*G0_2_1 - 0.069349977119074*G0_2_2; A[2537] = 0.209419968534551*G0_0_0 + 0.209419968534551*G0_0_1 + 0.173472802596066*G0_0_2 + 0.127087258163646*G0_1_0 + 0.127087258163647*G0_1_1 + 0.0893133759887231*G0_1_2 + 0.173472802596065*G0_2_0 + 0.173472802596066*G0_2_1 + 0.0846813455320396*G0_2_2; A[2538] = -0.271397840842284*G0_0_0 - 0.271397840842284*G0_0_1 - 0.198068231922398*G0_0_2 - 0.124738623002511*G0_1_0 - 0.124738623002511*G0_1_1 - 0.0623693115012564*G0_1_2 - 0.198068231922397*G0_2_0 - 0.198068231922397*G0_2_1 - 0.00339247301052891*G0_2_2; A[2539] = 0.0962940416065415*G0_0_2 + 0.124738623002511*G0_1_0 + 0.124738623002511*G0_1_1 + 0.0284445813959705*G0_1_2 + 0.0962940416065407*G0_2_0 + 0.0962940416065407*G0_2_1 - 0.0644569872000422*G0_2_2; A[2540] = -0.0306627368259312*G0_0_0 - 0.00939454064454099*G0_0_1 - 0.0306627368259312*G0_0_2 - 0.0093945406445407*G0_1_0 - 0.00939454064454069*G0_1_2 - 0.0306627368259314*G0_2_0 - 0.00939454064454092*G0_2_1 - 0.0306627368259314*G0_2_2; A[2541] = -0.00130479731174156*G0_0_0 - 6.52398655867225e-05*G0_0_1 - 0.00130479731174148*G0_0_2 - 6.5239865587414e-05*G0_1_0 - 6.52398655874574e-05*G0_1_2 - 0.00130479731174171*G0_2_0 - 6.52398655869416e-05*G0_2_1 - 0.00130479731174161*G0_2_2; A[2542] = -0.01500516908503*G0_0_0 - 6.52398655873704e-05*G0_0_1 - 0.01500516908503*G0_0_2 - 6.52398655866497e-05*G0_1_0 - 6.52398655865641e-05*G0_1_2 - 0.0150051690850301*G0_2_0 - 6.52398655869872e-05*G0_2_1 - 0.0150051690850301*G0_2_2; A[2543] = -0.00939454064454054*G0_0_1 - 0.00939454064454064*G0_1_0 - 0.00939454064454066*G0_1_2 - 0.00939454064454062*G0_2_1; A[2544] = -0.0187890812890814*G0_0_0 - 0.0400572774704715*G0_0_1 - 0.0400572774704716*G0_0_2 - 0.00939454064454084*G0_1_0 - 0.0187890812890813*G0_1_1 - 0.0187890812890813*G0_1_2 - 0.0400572774704719*G0_2_0 - 0.0613254736518624*G0_2_1 - 0.0613254736518623*G0_2_2; A[2545] = -0.00013047973117395*G0_0_0 + 0.0136351319077011*G0_0_1 + 0.0136351319077012*G0_0_2 - 6.52398655869412e-05*G0_1_0 + 0.0148746893538559*G0_1_1 + 0.0148746893538559*G0_1_2 + 0.0136351319077013*G0_2_0 - 0.0254435475789641*G0_2_1 - 0.0254435475789642*G0_2_2; A[2546] = -0.000130479731174693*G0_0_0 - 0.0137656116388753*G0_0_1 - 0.0137656116388753*G0_0_2 - 6.52398655871798e-05*G0_1_0 + 0.00117431758056753*G0_1_1 + 0.00117431758056746*G0_1_2 - 0.0137656116388753*G0_2_0 - 0.0528442911255408*G0_2_1 - 0.0528442911255408*G0_2_2; A[2547] = -0.0187890812890808*G0_0_0 + 0.02126819618139*G0_0_1 + 0.0212681961813899*G0_0_2 - 0.0093945406445405*G0_1_0 + 0.0118736555368499*G0_1_1 + 0.0118736555368499*G0_1_2 + 0.0212681961813905*G0_2_0; A[2548] = 0.0521918924696693*G0_0_0 - 0.000652398655870849*G0_0_1 - 0.0378391220405093*G0_0_2 - 0.000652398655870131*G0_1_0 - 0.0534966897814111*G0_1_1 - 0.0528442911255396*G0_1_2 - 0.0378391220405109*G0_2_0 - 0.0528442911255404*G0_2_1; A[2549] = 0.0260959462348353*G0_0_0 + 0.019898159004062*G0_0_1 - 0.0120693751336116*G0_0_2 + 0.0198981590040609*G0_1_0 + 0.0137003717732879*G0_1_1 - 0.0127217737894827*G0_1_2 - 0.0120693751336121*G0_2_0 - 0.0127217737894833*G0_2_1; A[2550] = -0.052844291125541*G0_0_1 - 0.01500516908503*G0_0_2 - 0.0528442911255399*G0_1_0 - 0.105688582251081*G0_1_1 - 0.0300103381700591*G0_1_2 - 0.0150051690850287*G0_2_0 - 0.0300103381700594*G0_2_1; A[2551] = -0.185933616923199*G0_0_0 - 0.0812236326559249*G0_0_1 + 0.00913358118219068*G0_0_2 - 0.0812236326559244*G0_1_0 + 0.0234863516113503*G0_1_1 + 0.0459941052388955*G0_1_2 + 0.00913358118219229*G0_2_0 + 0.0459941052388958*G0_2_1 - 0.088073818542569*G0_2_2; A[2552] = 0.104709984267277*G0_0_1 + 0.0368605240567058*G0_0_2 + 0.104709984267275*G0_1_0 + 0.20941996853455*G0_1_1 + 0.0737210481134088*G0_1_2 + 0.0368605240567055*G0_2_0 + 0.0737210481134107*G0_2_1 - 0.0228339529554791*G0_2_2; A[2553] = -0.271397840842283*G0_0_1 - 0.135698920421141*G0_0_2 - 0.271397840842283*G0_1_0 - 0.542795681684566*G0_1_1 - 0.271397840842282*G0_1_2 - 0.13569892042114*G0_2_0 - 0.271397840842283*G0_2_1 + 0.0521918924696713*G0_2_2; A[2554] = 0.0521918924696702*G0_0_0 + 0.0528442911255415*G0_0_1 + 0.0900310145101807*G0_0_2 + 0.0528442911255417*G0_1_0 + 0.0378391220405117*G0_1_2 + 0.0900310145101804*G0_2_0 + 0.0378391220405116*G0_2_1 + 0.127870136550692*G0_2_2; A[2555] = 0.0260959462348342*G0_0_0 + 0.00619778723077253*G0_0_1 + 0.0381653213684453*G0_0_2 + 0.00619778723077259*G0_1_0 + 0.00554538857490167*G0_1_2 + 0.0381653213684452*G0_2_0 + 0.0055453885749008*G0_2_1 + 0.0502346965020567*G0_2_2; A[2556] = 0.0528442911255412*G0_0_1 + 0.0150051690850298*G0_0_2 + 0.0528442911255399*G0_1_0 + 0.03783912204051*G0_1_2 + 0.0150051690850289*G0_2_0 + 0.0378391220405115*G0_2_1 + 0.0300103381700596*G0_2_2; A[2557] = -0.185933616923199*G0_0_0 - 0.104709984267275*G0_0_1 - 0.195067198105391*G0_0_2 - 0.104709984267273*G0_1_0 - 0.0678494602105714*G0_1_2 - 0.195067198105389*G0_2_0 - 0.0678494602105707*G0_2_1 - 0.292274597830151*G0_2_2; A[2558] = -0.104709984267276*G0_0_1 - 0.0368605240567034*G0_0_2 - 0.104709984267275*G0_1_0 - 0.0678494602105696*G0_1_2 - 0.0368605240567055*G0_2_0 - 0.0678494602105713*G0_2_1 - 0.0965550010688887*G0_2_2; A[2559] = 0.271397840842284*G0_0_1 + 0.135698920421141*G0_0_2 + 0.271397840842283*G0_1_0 + 0.135698920421141*G0_1_2 + 0.13569892042114*G0_2_0 + 0.135698920421141*G0_2_1 + 0.323589733311952*G0_2_2; A[2560] = 0.105688582251082*G0_0_0 + 0.10503618359521*G0_0_1 + 0.127870136550691*G0_0_2 + 0.0528442911255414*G0_1_0 + 0.105688582251083*G0_1_1 + 0.0756782440810225*G0_1_2 + 0.127870136550692*G0_2_0 + 0.180062029020361*G0_2_1 + 0.255740273101383*G0_2_2; A[2561] = 0.0123955744615473*G0_0_0 + 0.00619778723077386*G0_0_1 + 0.0061977872307733*G0_0_2 + 0.00619778723077193*G0_1_0 - 0.0137003717732899*G0_1_1 - 0.0264221455627711*G0_1_2 + 0.00619778723077283*G0_2_0 + 0.0714376528178597*G0_2_1 + 0.17223324514991*G0_2_2; A[2562] = 0.10568858225108*G0_0_0 + 0.000652398655870636*G0_0_1 - 0.0221815542996085*G0_0_2 + 0.0528442911255417*G0_1_0 + 0.0534966897814111*G0_1_1 + 0.000652398655871141*G0_1_2 - 0.0221815542996096*G0_2_0 + 0.0528442911255405*G0_2_1 + 0.105688582251082*G0_2_2; A[2563] = -0.209419968534551*G0_0_0 - 0.290643601190474*G0_0_1 - 0.262916658315962*G0_0_2 - 0.104709984267276*G0_1_0 - 0.209419968534549*G0_1_1 - 0.135698920421143*G0_1_2 - 0.262916658315963*G0_2_0 - 0.390134396210781*G0_2_1 - 0.584549195660303*G0_2_2; A[2564] = -0.20941996853455*G0_0_0 + 0.0812236326559246*G0_0_1 + 0.053496689781411*G0_0_2 - 0.104709984267275*G0_1_0 - 0.0234863516113502*G0_1_1 + 0.0225077536275465*G0_1_2 + 0.0534966897814117*G0_2_0 - 0.0459941052388959*G0_2_1 - 0.268135847562929*G0_2_2; A[2565] = 0.542795681684567*G0_0_0 + 0.271397840842284*G0_0_1 + 0.271397840842284*G0_0_2 + 0.271397840842284*G0_1_0 + 0.542795681684565*G0_1_1 + 0.271397840842283*G0_1_2 + 0.271397840842284*G0_2_0 + 0.271397840842283*G0_2_1 + 0.647179466623906*G0_2_2; A[2566] = 0.0300103381700598*G0_0_0 + 0.0150051690850302*G0_0_1 - 0.00782878387045057*G0_0_2 + 0.0150051690850298*G0_1_0 + 0.0300103381700603*G0_1_2 - 0.00782878387045015*G0_2_0 + 0.0300103381700607*G0_2_1 - 0.0456679059109611*G0_2_2; A[2567] = 0.001304797311743*G0_0_0 + 0.00065239865587108*G0_0_1 + 0.000652398655871627*G0_0_2 + 0.000652398655870927*G0_1_0 + 0.0127217737894817*G0_1_2 + 0.000652398655871062*G0_2_0 + 0.0127217737894822*G0_2_1 - 0.0880738185425688*G0_2_2; A[2568] = 0.0300103381700586*G0_0_0 + 0.0150051690850298*G0_0_1 + 0.0378391220405095*G0_0_2 + 0.0150051690850299*G0_1_0 + 0.05284429112554*G0_1_2 + 0.0378391220405104*G0_2_0 + 0.0528442911255408*G0_2_1; A[2569] = 0.0013047973117416*G0_0_0 + 0.00065239865587078*G0_0_1 - 0.0107645778218696*G0_0_2 + 0.000652398655871193*G0_1_0 + 0.00130479731174167*G0_1_2 - 0.0107645778218699*G0_2_0 + 0.00130479731174101*G0_2_1 - 0.0228339529554814*G0_2_2; A[2570] = 0.0013047973117424*G0_0_0 + 0.000652398655871286*G0_0_1 + 0.0120693751336116*G0_0_2 + 0.000652398655871129*G0_1_0 + 0.0127217737894823*G0_1_2 + 0.0120693751336116*G0_2_0 + 0.0127217737894824*G0_2_1; A[2571] = 0.0300103381700599*G0_0_0 + 0.0150051690850297*G0_0_1 + 0.0150051690850301*G0_0_2 + 0.0150051690850294*G0_1_0 + 0.0300103381700594*G0_1_2 + 0.0150051690850303*G0_2_0 + 0.0300103381700606*G0_2_1; A[2572] = -0.0521918924696708*G0_0_0 - 0.0260959462348354*G0_0_1 - 0.0424059126316076*G0_0_2 - 0.0260959462348356*G0_1_0 - 0.0750258454251492*G0_1_2 - 0.0424059126316075*G0_2_0 - 0.0750258454251508*G0_2_1 + 0.143527704291594*G0_2_2; A[2573] = -0.0521918924696689*G0_0_0 - 0.0260959462348352*G0_0_1 - 0.00978597983806269*G0_0_2 - 0.0260959462348357*G0_1_0 - 0.0587158790283778*G0_1_2 - 0.0097859798380621*G0_2_0 - 0.0587158790283765*G0_2_1 + 0.176147637085137*G0_2_2; A[2574] = -0.0521918924696698*G0_0_0 - 0.0260959462348343*G0_0_1 - 0.0260959462348364*G0_0_2 - 0.0260959462348336*G0_1_0 - 0.0750258454251504*G0_1_2 - 0.0260959462348332*G0_2_0 - 0.075025845425151*G0_2_1 + 0.04566790591096*G0_2_2; A[2575] = 0.371867233846398*G0_0_0 + 0.185933616923198*G0_0_1 + 0.1859336169232*G0_0_2 + 0.185933616923198*G0_1_0 + 0.316413348097372*G0_1_2 + 0.185933616923197*G0_2_0 + 0.316413348097371*G0_2_1 - 0.150051690850302*G0_2_2; A[2576] = 0.0335985307773497*G0_0_0 + 0.0335985307773497*G0_0_1 + 0.0335985307773498*G0_0_2 + 0.0335985307773497*G0_1_0 + 0.0335985307773497*G0_1_1 + 0.0335985307773498*G0_1_2 + 0.0479930547204845*G0_2_0 + 0.0479930547204846*G0_2_1 + 0.0479930547204846*G0_2_2; A[2577] = 0.0189195610202554*G0_0_0 + 0.00517743573299127*G0_2_0; A[2578] = 0.0189195610202552*G0_1_1 + 0.00517743573299128*G0_2_1; A[2579] = -0.0137421252872641*G0_2_2; A[2580] = -0.0306627368259311*G0_1_1 - 0.0212681961813909*G0_1_2 - 0.0212681961813906*G0_2_1 - 0.0118736555368498*G0_2_2; A[2581] = -0.00130479731174155*G0_1_1 - 0.001239557446154*G0_1_2 - 0.0012395574461542*G0_2_1 - 0.00117431758056772*G0_2_2; A[2582] = -0.0150051690850301*G0_1_1 - 0.0149399292194434*G0_1_2 - 0.0149399292194435*G0_2_1 - 0.0148746893538558*G0_2_2; A[2583] = 0.00939454064454026*G0_1_2 + 0.00939454064454008*G0_2_1 + 0.0187890812890805*G0_2_2; A[2584] = -0.0306627368259313*G0_0_0 - 0.0212681961813906*G0_0_2 - 0.0212681961813905*G0_2_0 - 0.01187365553685*G0_2_2; A[2585] = -0.00130479731174192*G0_0_0 - 0.0012395574461548*G0_0_2 - 0.00123955744615463*G0_2_0 - 0.00117431758056742*G0_2_2; A[2586] = -0.0150051690850297*G0_0_0 - 0.0149399292194428*G0_0_2 - 0.0149399292194424*G0_2_0 - 0.0148746893538558*G0_2_2; A[2587] = 0.00939454064454064*G0_0_2 + 0.00939454064454032*G0_2_0 + 0.0187890812890812*G0_2_2; A[2588] = -0.0613254736518621*G0_0_0 - 0.0212681961813906*G0_0_1 - 0.0212681961813903*G0_1_0 - 0.0425363923627811*G0_2_0 - 0.01187365553685*G0_2_1; A[2589] = -0.0254435475789633*G0_0_0 - 0.0390786794866641*G0_0_1 - 0.0390786794866651*G0_1_0 - 0.0528442911255399*G0_1_1 - 0.0403182369328194*G0_2_0 - 0.0540186087061077*G0_2_1; A[2590] = -0.0528442911255406*G0_0_0 - 0.0390786794866659*G0_0_1 - 0.0390786794866646*G0_1_0 - 0.0254435475789643*G0_1_1 - 0.054018608706108*G0_2_0 - 0.0403182369328198*G0_2_1; A[2591] = -0.0212681961813899*G0_0_1 - 0.0212681961813907*G0_1_0 - 0.0613254736518617*G0_1_1 - 0.0118736555368497*G0_2_0 - 0.0425363923627807*G0_2_1; A[2592] = -0.128522535206562*G0_0_0 - 0.128522535206562*G0_0_1 - 0.0322284936000211*G0_0_2 - 0.128522535206562*G0_1_0 - 0.128522535206562*G0_1_1 - 0.0322284936000209*G0_1_2 - 0.032228493600021*G0_2_0 - 0.032228493600021*G0_2_1 - 0.0606730749959909*G0_2_2; A[2593] = 0.0476251018785739*G0_0_0 + 0.047625101878574*G0_0_1 - 0.0147442096226817*G0_0_2 + 0.0476251018785745*G0_1_0 + 0.0476251018785745*G0_1_1 - 0.014744209622682*G0_1_2 - 0.0147442096226808*G0_2_0 - 0.0147442096226809*G0_2_1 + 0.0476251018785736*G0_2_2; A[2594] = -0.01500516908503*G0_0_0 - 0.0150051690850301*G0_0_1 + 0.0227687130898936*G0_0_2 - 0.0150051690850304*G0_1_0 - 0.0150051690850304*G0_1_1 + 0.0227687130898937*G0_1_2 + 0.022768713089893*G0_2_0 + 0.0227687130898931*G0_2_1 - 0.066544662898829*G0_2_2; A[2595] = -0.00939454064454072*G0_0_2 - 0.00939454064454069*G0_1_2 - 0.00939454064454029*G0_2_0 - 0.00939454064454024*G0_2_1 + 0.0453417065830257*G0_2_2; A[2596] = -0.257045070413123*G0_0_0 - 0.160751028806582*G0_0_1 - 0.257045070413123*G0_0_2 - 0.160751028806583*G0_1_0 - 0.0644569872000419*G0_1_1 - 0.160751028806583*G0_1_2 - 0.0644569872000417*G0_2_0 - 0.0929015685960117*G0_2_1 - 0.0644569872000419*G0_2_2; A[2597] = 0.121346149991982*G0_0_0 + 0.194675758911868*G0_0_1 + 0.121346149991982*G0_0_2 + 0.194675758911868*G0_1_0 - 0.0033924730105289*G0_1_1 + 0.194675758911868*G0_1_2 + 0.132306447410612*G0_2_0 + 0.0589768384907264*G0_2_1 + 0.132306447410612*G0_2_2; A[2598] = -0.0528442911255405*G0_0_0 - 0.0887914570640257*G0_0_1 - 0.0528442911255408*G0_0_2 - 0.0887914570640261*G0_1_0 + 0.0846813455320392*G0_1_1 - 0.0887914570640262*G0_1_2 - 0.051017574889102*G0_2_0 - 0.00463203045668307*G0_2_1 - 0.0510175748891023*G0_2_2; A[2599] = 0.0212681961813908*G0_0_1 + 0.0212681961813907*G0_1_0 - 0.0693499771190734*G0_1_1 + 0.0212681961813907*G0_1_2 + 0.0118736555368498*G0_2_0 - 0.0146137298915075*G0_2_1 + 0.0118736555368499*G0_2_2; A[2600] = -0.064456987200042*G0_0_0 - 0.160751028806583*G0_0_1 - 0.160751028806583*G0_0_2 - 0.160751028806583*G0_1_0 - 0.257045070413124*G0_1_1 - 0.257045070413123*G0_1_2 - 0.0929015685960119*G0_2_0 - 0.0644569872000422*G0_2_1 - 0.0644569872000421*G0_2_2; A[2601] = -0.00339247301052869*G0_0_0 + 0.194675758911867*G0_0_1 + 0.194675758911867*G0_0_2 + 0.194675758911868*G0_1_0 + 0.121346149991982*G0_1_1 + 0.121346149991982*G0_1_2 + 0.0589768384907265*G0_2_0 + 0.132306447410612*G0_2_1 + 0.132306447410612*G0_2_2; A[2602] = 0.0846813455320394*G0_0_0 - 0.0887914570640255*G0_0_1 - 0.0887914570640254*G0_0_2 - 0.0887914570640253*G0_1_0 - 0.052844291125541*G0_1_1 - 0.0528442911255409*G0_1_2 - 0.00463203045668293*G0_2_0 - 0.0510175748891021*G0_2_1 - 0.051017574889102*G0_2_2; A[2603] = -0.0693499771190739*G0_0_0 + 0.0212681961813903*G0_0_1 + 0.0212681961813905*G0_0_2 + 0.0212681961813903*G0_1_0 - 0.0146137298915077*G0_2_0 + 0.0118736555368498*G0_2_1 + 0.0118736555368501*G0_2_2; A[2604] = -0.0456679059109608*G0_0_0 - 0.0378391220405106*G0_0_1 - 0.0756782440810201*G0_0_2 - 0.0378391220405096*G0_1_0 - 0.0528442911255393*G0_1_2 - 0.0756782440810204*G0_2_0 - 0.0528442911255402*G0_2_1 - 0.105688582251081*G0_2_2; A[2605] = -0.0880738185425675*G0_0_0 - 0.0887262171984382*G0_0_1 - 0.100795592332049*G0_0_2 - 0.088726217198439*G0_1_0 - 0.088073818542568*G0_1_1 - 0.10079559233205*G0_1_2 - 0.10079559233205*G0_2_0 - 0.10079559233205*G0_2_1 - 0.113517366121531*G0_2_2; A[2606] = -0.0378391220405097*G0_0_1 - 0.0528442911255395*G0_0_2 - 0.0378391220405098*G0_1_0 - 0.0456679059109597*G0_1_1 - 0.0756782440810197*G0_1_2 - 0.0528442911255406*G0_2_0 - 0.0756782440810203*G0_2_1 - 0.10568858225108*G0_2_2; A[2607] = -0.0228339529554805*G0_0_0 - 0.0120693751336113*G0_0_1 - 0.0241387502672229*G0_0_2 - 0.0120693751336114*G0_1_0 - 0.0127217737894822*G0_1_2 - 0.0241387502672223*G0_2_0 - 0.0127217737894815*G0_2_1 - 0.0254435475789636*G0_2_2; A[2608] = -0.0120693751336113*G0_0_1 - 0.0127217737894818*G0_0_2 - 0.012069375133611*G0_1_0 - 0.0228339529554809*G0_1_1 - 0.0241387502672222*G0_1_2 - 0.0127217737894825*G0_2_0 - 0.0241387502672235*G0_2_1 - 0.0254435475789656*G0_2_2; A[2609] = -0.0150051690850295*G0_0_1 - 0.0300103381700599*G0_0_2 - 0.01500516908503*G0_1_0 - 0.0300103381700601*G0_1_2 - 0.0300103381700608*G0_2_0 - 0.0300103381700599*G0_2_1 - 0.0600206763401204*G0_2_2; A[2610] = 0.0521918924696705*G0_0_0 + 0.187890812890811*G0_0_1 + 0.323589733311953*G0_0_2 + 0.187890812890812*G0_1_0 + 0.323589733311953*G0_1_1 + 0.187890812890813*G0_1_2 + 0.323589733311953*G0_2_0 + 0.187890812890811*G0_2_1 + 0.0521918924696703*G0_2_2; A[2611] = -0.0880738185425682*G0_0_0 - 0.0972073997247606*G0_0_1 - 0.134067923781464*G0_0_2 - 0.0972073997247608*G0_1_0 - 0.292274597830152*G0_1_1 - 0.22442513761958*G0_1_2 - 0.134067923781464*G0_2_0 - 0.22442513761958*G0_2_1 - 0.156575677409009*G0_2_2; A[2612] = 0.0378391220405105*G0_0_1 + 0.0528442911255407*G0_0_2 + 0.0378391220405098*G0_1_0 + 0.127870136550692*G0_1_1 + 0.0900310145101808*G0_1_2 + 0.0528442911255407*G0_2_0 + 0.0900310145101807*G0_2_1 + 0.0521918924696706*G0_2_2; A[2613] = -0.0228339529554811*G0_0_0 - 0.0596944770121856*G0_0_1 - 0.0965550010688897*G0_0_2 - 0.0596944770121843*G0_1_0 - 0.0965550010688898*G0_1_1 - 0.0287055408583198*G0_1_2 - 0.0965550010688882*G0_2_0 - 0.0287055408583191*G0_2_1 + 0.0391439193522518*G0_2_2; A[2614] = 0.0120693751336119*G0_0_1 + 0.0127217737894824*G0_0_2 + 0.012069375133611*G0_1_0 + 0.0502346965020573*G0_1_1 + 0.044689307927155*G0_1_2 + 0.0127217737894824*G0_2_0 + 0.044689307927155*G0_2_1 + 0.039143919352252*G0_2_2; A[2615] = 0.01500516908503*G0_0_1 + 0.0300103381700602*G0_0_2 + 0.01500516908503*G0_1_0 + 0.0300103381700602*G0_1_1 - 0.00782878387045007*G0_1_2 + 0.0300103381700608*G0_2_0 - 0.00782878387044996*G0_2_1 - 0.0456679059109607*G0_2_2; A[2616] = 0.323589733311952*G0_0_0 + 0.187890812890811*G0_0_1 + 0.187890812890812*G0_0_2 + 0.187890812890811*G0_1_0 + 0.0521918924696709*G0_1_1 + 0.323589733311954*G0_1_2 + 0.187890812890811*G0_2_0 + 0.323589733311953*G0_2_1 + 0.052191892469671*G0_2_2; A[2617] = -0.29227459783015*G0_0_0 - 0.0972073997247604*G0_0_1 - 0.224425137619579*G0_0_2 - 0.097207399724761*G0_1_0 - 0.0880738185425691*G0_1_1 - 0.134067923781465*G0_1_2 - 0.22442513761958*G0_2_0 - 0.134067923781465*G0_2_1 - 0.156575677409009*G0_2_2; A[2618] = 0.127870136550691*G0_0_0 + 0.0378391220405108*G0_0_1 + 0.0900310145101807*G0_0_2 + 0.0378391220405118*G0_1_0 + 0.0528442911255412*G0_1_2 + 0.0900310145101811*G0_2_0 + 0.0528442911255404*G0_2_1 + 0.0521918924696694*G0_2_2; A[2619] = -0.0965550010688895*G0_0_0 - 0.0596944770121849*G0_0_1 - 0.0287055408583194*G0_0_2 - 0.0596944770121859*G0_1_0 - 0.0228339529554803*G0_1_1 - 0.0965550010688908*G0_1_2 - 0.0287055408583189*G0_2_0 - 0.096555001068888*G0_2_1 + 0.0391439193522511*G0_2_2; A[2620] = 0.0502346965020575*G0_0_0 + 0.012069375133611*G0_0_1 + 0.0446893079271544*G0_0_2 + 0.0120693751336113*G0_1_0 + 0.0127217737894823*G0_1_2 + 0.0446893079271543*G0_2_0 + 0.0127217737894811*G0_2_1 + 0.0391439193522527*G0_2_2; A[2621] = 0.0300103381700598*G0_0_0 + 0.0150051690850298*G0_0_1 - 0.00782878387045015*G0_0_2 + 0.0150051690850302*G0_1_0 + 0.0300103381700607*G0_1_2 - 0.00782878387045057*G0_2_0 + 0.0300103381700602*G0_2_1 - 0.0456679059109611*G0_2_2; A[2622] = 0.647179466623904*G0_0_0 + 0.375781625781622*G0_0_1 + 0.375781625781621*G0_0_2 + 0.375781625781622*G0_1_0 + 0.647179466623905*G0_1_1 + 0.375781625781622*G0_1_2 + 0.375781625781621*G0_2_0 + 0.375781625781622*G0_2_1 + 0.647179466623903*G0_2_2; A[2623] = -0.5845491956603*G0_0_0 - 0.321632537344338*G0_0_1 - 0.194414799449519*G0_0_2 - 0.32163253734434*G0_1_0 - 0.268135847562926*G0_1_1 - 0.222141742324031*G0_1_2 - 0.448850275239159*G0_2_0 - 0.290643601190472*G0_2_1 - 0.268135847562928*G0_2_2; A[2624] = 0.255740273101381*G0_0_0 + 0.12787013655069*G0_0_1 + 0.0756782440810203*G0_0_2 + 0.127870136550691*G0_1_0 + 0.105688582251081*G0_1_1 + 0.0528442911255395*G0_1_2 + 0.180062029020361*G0_2_0 + 0.10503618359521*G0_2_1 + 0.105688582251081*G0_2_2; A[2625] = -0.268135847562927*G0_0_0 - 0.321632537344339*G0_0_1 - 0.222141742324031*G0_0_2 - 0.321632537344338*G0_1_0 - 0.584549195660302*G0_1_1 - 0.194414799449519*G0_1_2 - 0.290643601190471*G0_2_0 - 0.448850275239159*G0_2_1 - 0.268135847562927*G0_2_2; A[2626] = 0.172233245149908*G0_0_0 + 0.166035457919136*G0_0_1 + 0.100795592332049*G0_0_2 + 0.166035457919135*G0_1_0 + 0.172233245149909*G0_1_1 + 0.10079559233205*G0_1_2 + 0.198655390712679*G0_2_0 + 0.198655390712679*G0_2_1 + 0.113517366121531*G0_2_2; A[2627] = 0.105688582251081*G0_0_0 + 0.12787013655069*G0_0_1 + 0.05284429112554*G0_0_2 + 0.127870136550691*G0_1_0 + 0.255740273101382*G0_1_1 + 0.0756782440810202*G0_1_2 + 0.10503618359521*G0_2_0 + 0.180062029020361*G0_2_1 + 0.105688582251081*G0_2_2; A[2628] = -0.1500516908503*G0_0_0 - 0.335985307773498*G0_0_1 - 0.466465038947673*G0_0_2 - 0.335985307773499*G0_1_0 - 0.1500516908503*G0_1_1 - 0.466465038947672*G0_1_2 - 0.466465038947672*G0_2_0 - 0.466465038947672*G0_2_1 - 0.782878387045044*G0_2_2; A[2629] = 0.143527704291591*G0_0_0 + 0.185933616923198*G0_0_1 + 0.218553549716741*G0_0_2 + 0.185933616923196*G0_1_0 + 0.176147637085137*G0_1_1 + 0.234863516113513*G0_1_2 + 0.21855354971674*G0_2_0 + 0.234863516113514*G0_2_1 + 0.293579395141891*G0_2_2; A[2630] = 0.176147637085136*G0_0_0 + 0.185933616923197*G0_0_1 + 0.234863516113513*G0_0_2 + 0.1859336169232*G0_1_0 + 0.14352770429159*G0_1_1 + 0.218553549716742*G0_1_2 + 0.234863516113514*G0_2_0 + 0.21855354971674*G0_2_1 + 0.293579395141892*G0_2_2; A[2631] = 0.0456679059109616*G0_0_0 + 0.0717638521457957*G0_0_1 + 0.120693751336111*G0_0_2 + 0.0717638521457957*G0_1_0 + 0.0456679059109608*G0_1_1 + 0.120693751336111*G0_1_2 + 0.120693751336111*G0_2_0 + 0.120693751336111*G0_2_1 + 0.19571959676126*G0_2_2; A[2632] = -0.029847238506092*G0_0_0 - 0.0298472385060921*G0_0_1 - 0.0298472385060922*G0_0_2 - 0.0298472385060919*G0_1_0 - 0.0298472385060919*G0_1_1 - 0.0298472385060919*G0_1_2 - 0.0345719095719087*G0_2_0 - 0.0345719095719087*G0_2_1 - 0.0345719095719087*G0_2_2; A[2633] = -0.0298472385060924*G0_0_0 + 0.00472467106581682*G0_2_0; A[2634] = 0.0117431758056758*G0_1_1 + 0.00227817610630098*G0_2_1; A[2635] = -0.00946499969937474*G0_2_2; A[2636] = -0.00913358118219294*G0_1_1 - 0.0058389679700447*G0_1_2 - 0.00583896797004425*G0_2_1 - 0.00254435475789644*G0_2_2; A[2637] = -0.0156575677409008*G0_1_1 - 0.0130805930502109*G0_1_2 - 0.0130805930502109*G0_2_1 - 0.0105036183595207*G0_2_2; A[2638] = -0.000652398655870863*G0_1_1 + 0.00192457603481875*G0_1_2 + 0.00192457603481936*G0_2_1 + 0.00450155072550906*G0_2_2; A[2639] = 0.00329461321214827*G0_1_2 + 0.0032946132121483*G0_2_1 + 0.00658922642429669*G0_2_2; A[2640] = 0.0642612676032809*G0_0_0 + 0.0422754329004327*G0_0_2 + 0.0422754329004318*G0_2_0 + 0.0429604514890964*G0_2_2; A[2641] = 0.00880738185425718*G0_0_0 + 0.00649136662591523*G0_0_2 + 0.00649136662591556*G0_2_0 + 0.00352295274170301*G0_2_2; A[2642] = -0.000652398655871683*G0_0_0 - 0.00949240044292167*G0_0_2 - 0.00949240044292189*G0_2_0 - 0.0189848008858434*G0_2_2; A[2643] = 0.00329461321214786*G0_0_2 + 0.00329461321214825*G0_2_0 + 0.0292600797158091*G0_2_2; A[2644] = 0.128522535206562*G0_0_0 + 0.0422754329004329*G0_0_1 + 0.0422754329004325*G0_1_0 + 0.0845508658008645*G0_2_0 + 0.0429604514890964*G0_2_1; A[2645] = 0.0371867233846387*G0_0_0 + 0.0743408268364844*G0_0_1 + 0.0743408268364851*G0_1_0 + 0.104709984267274*G0_1_1 + 0.0808321934624012*G0_2_0 + 0.108232937008978*G0_2_1; A[2646] = -0.00619778723077278*G0_0_0 + 0.0188869410874628*G0_0_1 + 0.0188869410874618*G0_1_0 + 0.0567586830607665*G0_1_1 + 0.0093945406445404*G0_2_0 + 0.0377738821749232*G0_2_1; A[2647] = -0.00583896797004499*G0_0_1 - 0.00583896797004483*G0_1_0 - 0.0435476102793818*G0_1_1 - 0.00254435475789665*G0_2_0 - 0.0142875305635722*G0_2_1; A[2648] = 0.0642612676032806*G0_0_0 + 0.0642612676032807*G0_0_1 + 0.0219858347028483*G0_0_2 + 0.0642612676032806*G0_1_0 + 0.0642612676032806*G0_1_1 + 0.021985834702848*G0_1_2 + 0.0219858347028482*G0_2_0 + 0.0219858347028482*G0_2_1 + 0.0226708532915122*G0_2_2; A[2649] = 0.0088073818542567*G0_0_0 + 0.00880738185425667*G0_0_1 + 0.00231601522834161*G0_0_2 + 0.00880738185425679*G0_1_0 + 0.0088073818542568*G0_1_1 + 0.00231601522834169*G0_1_2 + 0.0023160152283415*G0_2_0 + 0.0023160152283415*G0_2_1 - 0.000652398655870338*G0_2_2; A[2650] = -0.000652398655871409*G0_0_0 - 0.000652398655871345*G0_0_1 + 0.00884000178705015*G0_0_2 - 0.000652398655871259*G0_1_0 - 0.000652398655871193*G0_1_1 + 0.00884000178705025*G0_1_2 + 0.00884000178705011*G0_2_0 + 0.00884000178705014*G0_2_1 - 0.000652398655871464*G0_2_2; A[2651] = -0.00329461321214768*G0_0_2 - 0.00329461321214782*G0_1_2 - 0.00329461321214815*G0_2_0 - 0.00329461321214815*G0_2_1 + 0.0226708532915133*G0_2_2; A[2652] = 0.128522535206561*G0_0_0 + 0.0862471023061288*G0_0_1 + 0.128522535206561*G0_0_2 + 0.0862471023061283*G0_1_0 + 0.0439716694056956*G0_1_1 + 0.0862471023061283*G0_1_2 + 0.0439716694056962*G0_2_0 + 0.0446566879943604*G0_2_1 + 0.0439716694056963*G0_2_2; A[2653] = 0.0371867233846398*G0_0_0 - 0.0371541034518459*G0_0_1 + 0.0371867233846396*G0_0_2 - 0.0371541034518452*G0_1_0 - 0.00678494602105617*G0_1_1 - 0.0371541034518453*G0_1_2 - 0.0436454700777609*G0_2_0 - 0.00975335990526896*G0_2_1 - 0.0436454700777611*G0_2_2; A[2654] = -0.00619778723077378*G0_0_0 - 0.0250847283182348*G0_0_1 - 0.00619778723077338*G0_0_2 - 0.0250847283182357*G0_1_0 + 0.0127870136550688*G0_1_1 - 0.0250847283182356*G0_1_2 - 0.0155923278753144*G0_2_0 + 0.00329461321214765*G0_2_1 - 0.0155923278753144*G0_2_2; A[2655] = 0.00583896797004405*G0_0_1 + 0.00583896797004474*G0_1_0 - 0.0318696743392923*G0_1_1 + 0.00583896797004475*G0_1_2 + 0.00254435475789656*G0_2_0 - 0.00590420783563136*G0_2_1 + 0.00254435475789659*G0_2_2; A[2656] = 0.0920860702761731*G0_0_0 + 0.134361503176606*G0_0_1 + 0.134361503176605*G0_0_2 + 0.134361503176605*G0_1_0 + 0.176636936077038*G0_1_1 + 0.176636936077038*G0_1_2 + 0.128000616281864*G0_2_0 + 0.1273155976932*G0_2_1 + 0.1273155976932*G0_2_2; A[2657] = -0.0622388317700804*G0_0_0 - 0.250814663249556*G0_0_1 - 0.250814663249555*G0_0_2 - 0.250814663249555*G0_1_0 - 0.334680510461756*G0_1_1 - 0.334680510461756*G0_1_2 - 0.160783648739375*G0_2_0 - 0.166948816037355*G0_2_1 - 0.166948816037355*G0_2_2; A[2658] = -0.0622388317700817*G0_0_0 + 0.188575831479475*G0_0_1 + 0.188575831479475*G0_0_2 + 0.188575831479474*G0_1_0 + 0.104709984267274*G0_1_1 + 0.104709984267274*G0_1_2 + 0.0985448169692941*G0_2_0 + 0.182410664181495*G0_2_1 + 0.182410664181495*G0_2_2; A[2659] = 0.0920860702761739*G0_0_0 - 0.0422754329004323*G0_0_1 - 0.0422754329004327*G0_0_2 - 0.0422754329004318*G0_1_0 - 0.0359145460056911*G0_2_0 - 0.0429604514890961*G0_2_1 - 0.0429604514890963*G0_2_2; A[2660] = 0.0391439193522529*G0_0_0 + 0.067849460210571*G0_0_1 + 0.135698920421141*G0_0_2 + 0.0678494602105702*G0_1_0 + 0.104709984267274*G0_1_2 + 0.135698920421143*G0_2_0 + 0.104709984267275*G0_2_1 + 0.20941996853455*G0_2_2; A[2661] = 0.0195719596761259*G0_0_0 + 0.0606730749959905*G0_0_1 + 0.0748627457611814*G0_0_2 + 0.0606730749959908*G0_1_0 + 0.0929668084615986*G0_1_1 + 0.121346149991981*G0_1_2 + 0.0748627457611819*G0_2_0 + 0.121346149991984*G0_2_1 + 0.149725491522365*G0_2_2; A[2662] = -0.0055453885749023*G0_0_1 - 0.00619778723077374*G0_0_2 - 0.00554538857490317*G0_1_0 + 0.039143919352252*G0_1_1 + 0.0264221455627691*G0_1_2 - 0.00619778723077287*G0_2_0 + 0.0264221455627697*G0_2_1 + 0.0137003717732876*G0_2_2; A[2663] = -0.00489298991903258*G0_0_0 + 0.0141896707651907*G0_0_1 + 0.0283793415303829*G0_0_2 + 0.0141896707651913*G0_1_0 + 0.0283793415303831*G0_1_2 + 0.0283793415303808*G0_2_0 + 0.0283793415303819*G0_2_1 + 0.056758683060766*G0_2_2; A[2664] = -0.0102752788299654*G0_0_1 - 0.0181040627004158*G0_0_2 - 0.0102752788299663*G0_1_0 + 0.0195719596761257*G0_1_1 + 0.00146789697570994*G0_1_2 - 0.018104062700416*G0_2_0 + 0.0014678969757095*G0_2_1 - 0.0166361657247065*G0_2_2; A[2665] = -0.000652398655871236*G0_0_1 - 0.00130479731174187*G0_0_2 - 0.000652398655871248*G0_1_0 - 0.0127217737894827*G0_1_2 - 0.00130479731174086*G0_2_0 - 0.0127217737894821*G0_2_1 - 0.025443547578965*G0_2_2; A[2666] = 0.0391439193522516*G0_0_0 - 0.0287055408583187*G0_0_1 - 0.0965550010688891*G0_0_2 - 0.028705540858318*G0_1_0 - 0.0965550010688888*G0_1_1 - 0.0596944770121843*G0_1_2 - 0.0965550010688895*G0_2_0 - 0.059694477012185*G0_2_1 - 0.0228339529554807*G0_2_2; A[2667] = 0.0195719596761272*G0_0_0 - 0.0411011153198647*G0_0_1 - 0.0552907860850556*G0_0_2 - 0.041101115319866*G0_1_0 - 0.00880738185425725*G0_1_1 + 0.00538228891093385*G0_1_2 - 0.0552907860850572*G0_2_0 + 0.0053822889109346*G0_2_1 + 0.0195719596761258*G0_2_2; A[2668] = 0.005545388574903*G0_0_1 + 0.00619778723077285*G0_0_2 + 0.00554538857490315*G0_1_0 + 0.0502346965020582*G0_1_1 + 0.0381653213684463*G0_1_2 + 0.00619778723077287*G0_2_0 + 0.0381653213684463*G0_2_1 + 0.0260959462348347*G0_2_2; A[2669] = -0.00489298991903103*G0_0_0 - 0.0190826606842219*G0_0_1 - 0.033272331449415*G0_0_2 - 0.0190826606842229*G0_1_0 - 0.033272331449414*G0_1_1 - 0.0190826606842232*G0_1_2 - 0.0332723314494141*G0_2_0 - 0.0190826606842223*G0_2_1 - 0.00489298991903104*G0_2_2; A[2670] = 0.0102752788299647*G0_0_1 + 0.0181040627004159*G0_0_2 + 0.0102752788299665*G0_1_0 + 0.0401225173360578*G0_1_1 + 0.029847238506093*G0_1_2 + 0.0181040627004163*G0_2_0 + 0.0298472385060915*G0_2_1 + 0.0195719596761266*G0_2_2; A[2671] = 0.000652398655871118*G0_0_1 + 0.00130479731174214*G0_0_2 + 0.00065239865587118*G0_1_0 + 0.00130479731174219*G0_1_1 - 0.0107645778218692*G0_1_2 + 0.00130479731174076*G0_2_0 - 0.0107645778218695*G0_2_1 - 0.0228339529554814*G0_2_2; A[2672] = -0.29227459783015*G0_0_0 - 0.224425137619579*G0_0_1 - 0.0972073997247602*G0_0_2 - 0.224425137619579*G0_1_0 - 0.156575677409009*G0_1_1 - 0.134067923781464*G0_1_2 - 0.0972073997247591*G0_2_0 - 0.134067923781464*G0_2_1 - 0.0880738185425675*G0_2_2; A[2673] = 0.456026660453738*G0_0_0 + 0.228013330226869*G0_0_1 + 0.228013330226868*G0_0_2 + 0.228013330226869*G0_1_0 + 0.0929668084615987*G0_1_1 + 0.363059851992139*G0_1_2 + 0.228013330226868*G0_2_0 + 0.363059851992138*G0_2_1 + 0.0929668084615981*G0_2_2; A[2674] = -0.292274597830149*G0_0_0 - 0.067849460210571*G0_0_1 - 0.19506719810539*G0_0_2 - 0.0678494602105704*G0_1_0 - 0.104709984267274*G0_1_2 - 0.195067198105389*G0_2_0 - 0.104709984267275*G0_2_1 - 0.185933616923198*G0_2_2; A[2675] = -0.0088073818542569*G0_0_0 + 0.00538228891093404*G0_0_1 - 0.0411011153198646*G0_0_2 + 0.0053822889109352*G0_1_0 + 0.0195719596761263*G0_1_1 - 0.0552907860850565*G0_1_2 - 0.0411011153198645*G0_2_0 - 0.0552907860850562*G0_2_1 + 0.0195719596761268*G0_2_2; A[2676] = -0.0088073818542571*G0_0_0 - 0.0141896707651905*G0_0_1 + 0.032293733465609*G0_0_2 - 0.014189670765192*G0_1_0 - 0.0283793415303835*G0_1_2 + 0.0322937334656077*G0_2_0 - 0.0283793415303817*G0_2_1 + 0.0929668084616007*G0_2_2; A[2677] = 0.001304797311743*G0_0_0 + 0.000652398655870925*G0_0_1 + 0.000652398655871069*G0_0_2 + 0.000652398655871085*G0_1_0 + 0.0127217737894822*G0_1_2 + 0.000652398655871627*G0_2_0 + 0.0127217737894817*G0_2_1 - 0.0880738185425688*G0_2_2; A[2678] = -0.5845491956603*G0_0_0 - 0.32163253734434*G0_0_1 - 0.448850275239159*G0_0_2 - 0.321632537344338*G0_1_0 - 0.268135847562926*G0_1_1 - 0.290643601190472*G0_1_2 - 0.194414799449519*G0_2_0 - 0.222141742324031*G0_2_1 - 0.268135847562928*G0_2_2; A[2679] = 0.912053320907477*G0_0_0 + 0.456026660453738*G0_0_1 + 0.456026660453738*G0_0_2 + 0.456026660453738*G0_1_0 + 0.726119703984279*G0_1_1 + 0.456026660453738*G0_1_2 + 0.456026660453738*G0_2_0 + 0.456026660453738*G0_2_1 + 0.726119703984278*G0_2_2; A[2680] = -0.584549195660301*G0_0_0 - 0.26291665831596*G0_0_1 - 0.135698920421141*G0_0_2 - 0.262916658315961*G0_1_0 - 0.209419968534548*G0_1_1 - 0.104709984267274*G0_1_2 - 0.39013439621078*G0_2_0 - 0.290643601190473*G0_2_1 - 0.20941996853455*G0_2_2; A[2681] = -0.0371867233846404*G0_0_0 + 0.186912214907004*G0_0_1 + 0.0376760223765424*G0_0_2 + 0.186912214907003*G0_1_0 - 0.0371867233846415*G0_1_1 + 0.140428810676203*G0_1_2 + 0.140428810676204*G0_2_0 + 0.0376760223765417*G0_2_1 + 0.0655660649150209*G0_2_2; A[2682] = -0.0371867233846383*G0_0_0 - 0.224098938291644*G0_0_1 - 0.0748627457611816*G0_0_2 - 0.224098938291642*G0_1_0 - 0.448197876583288*G0_1_1 - 0.121346149991981*G0_1_2 - 0.177615534060844*G0_2_0 - 0.326851726591306*G0_2_1 - 0.149725491522365*G0_2_2; A[2683] = 0.0123955744615465*G0_0_0 + 0.006197787230774*G0_0_1 + 0.00619778723077313*G0_0_2 + 0.00619778723077373*G0_1_0 + 0.172233245149912*G0_1_1 - 0.0264221455627696*G0_1_2 + 0.00619778723077381*G0_2_0 + 0.0714376528178612*G0_2_1 - 0.0137003717732882*G0_2_2; A[2684] = -0.0391439193522539*G0_0_0 + 0.249542485870607*G0_0_1 + 0.445262082631869*G0_0_2 + 0.249542485870606*G0_1_0 + 0.352295274170269*G0_1_1 + 0.249542485870607*G0_1_2 + 0.445262082631867*G0_2_0 + 0.249542485870606*G0_2_1 + 0.146789697570944*G0_2_2; A[2685] = -0.039143919352251*G0_0_0 - 0.28868640522286*G0_0_1 - 0.484406001984121*G0_0_2 - 0.288686405222859*G0_1_0 - 0.185933616923196*G0_1_1 - 0.484406001984121*G0_1_2 - 0.484406001984121*G0_2_0 - 0.484406001984122*G0_2_1 - 0.782878387045044*G0_2_2; A[2686] = -0.0391439193522527*G0_0_0 - 0.0195719596761257*G0_0_1 - 0.0195719596761262*G0_0_2 - 0.0195719596761249*G0_1_0 - 0.234863516113513*G0_1_1 - 0.141896707651913*G0_1_2 - 0.0195719596761249*G0_2_0 - 0.141896707651912*G0_2_1 - 0.0489298991903139*G0_2_2; A[2687] = 0.00978597983806365*G0_0_0 + 0.00489298991903203*G0_0_1 + 0.00489298991903267*G0_0_2 + 0.00489298991903164*G0_1_0 - 0.0391439193522515*G0_1_1 + 0.0538228891093478*G0_1_2 + 0.00489298991903326*G0_2_0 + 0.0538228891093476*G0_2_1 + 0.146789697570949*G0_2_2; A[2688] = 0.018919561020255*G0_0_0 + 0.018919561020255*G0_0_1 + 0.0189195610202551*G0_0_2 + 0.0189195610202551*G0_1_0 + 0.0189195610202551*G0_1_1 + 0.0189195610202551*G0_1_2 + 0.0137421252872637*G0_2_0 + 0.0137421252872638*G0_2_1 + 0.0137421252872638*G0_2_2; A[2689] = 0.03359853077735*G0_0_0 - 0.0143945239431347*G0_2_0; A[2690] = 0.0189195610202555*G0_1_1 + 0.00517743573299143*G0_2_1; A[2691] = -0.013742125287264*G0_2_2; A[2692] = -0.0306627368259313*G0_1_1 - 0.0212681961813905*G0_1_2 - 0.0212681961813908*G0_2_1 - 0.01187365553685*G0_2_2; A[2693] = -0.00130479731174142*G0_1_1 - 0.00123955744615489*G0_1_2 - 0.00123955744615439*G0_2_1 - 0.00117431758056787*G0_2_2; A[2694] = -0.0150051690850303*G0_1_1 - 0.0149399292194431*G0_1_2 - 0.0149399292194434*G0_2_1 - 0.0148746893538558*G0_2_2; A[2695] = 0.00939454064454035*G0_1_2 + 0.00939454064454027*G0_2_1 + 0.0187890812890805*G0_2_2; A[2696] = -0.128522535206561*G0_0_0 - 0.0962940416065404*G0_0_2 - 0.0962940416065401*G0_2_0 - 0.124738623002509*G0_2_2; A[2697] = 0.0476251018785733*G0_0_0 + 0.0623693115012551*G0_0_2 + 0.0623693115012547*G0_2_0 + 0.124738623002509*G0_2_2; A[2698] = -0.0150051690850292*G0_0_0 - 0.0377738821749228*G0_0_2 - 0.0377738821749226*G0_2_0 - 0.127087258163644*G0_2_2; A[2699] = 0.00939454064454047*G0_0_2 + 0.0093945406445404*G0_2_0 + 0.0641307878721064*G0_2_2; A[2700] = -0.257045070413123*G0_0_0 - 0.0962940416065406*G0_0_1 - 0.0962940416065404*G0_1_0 - 0.19258808321308*G0_2_0 - 0.124738623002509*G0_2_1; A[2701] = 0.121346149991982*G0_0_0 - 0.0733296089198853*G0_0_1 - 0.0733296089198859*G0_1_0 - 0.271397840842282*G0_1_1 - 0.0109602974186314*G0_2_0 - 0.146659217839772*G0_2_1; A[2702] = -0.0528442911255406*G0_0_0 + 0.0359471659384843*G0_0_1 + 0.0359471659384847*G0_1_0 + 0.20941996853455*G0_1_1 - 0.0018267162364379*G0_2_0 + 0.0823327103709041*G0_2_1; A[2703] = -0.0212681961813898*G0_0_1 - 0.0212681961813905*G0_1_0 - 0.111886369481855*G0_1_1 - 0.01187365553685*G0_2_0 - 0.0477555816097479*G0_2_1; A[2704] = -0.0306627368259307*G0_0_0 - 0.0306627368259307*G0_0_1 - 0.0093945406445405*G0_0_2 - 0.030662736825931*G0_1_0 - 0.0306627368259311*G0_1_1 - 0.00939454064454065*G0_1_2 - 0.00939454064454023*G0_2_0 - 0.00939454064454016*G0_2_1; A[2705] = -0.00130479731174214*G0_0_0 - 0.00130479731174221*G0_0_1 - 6.52398655873609e-05*G0_0_2 - 0.00130479731174187*G0_1_0 - 0.00130479731174184*G0_1_1 - 6.52398655869452e-05*G0_1_2 - 6.52398655873818e-05*G0_2_0 - 6.52398655875702e-05*G0_2_1; A[2706] = -0.0150051690850293*G0_0_0 - 0.0150051690850293*G0_0_1 - 6.52398655866991e-05*G0_0_2 - 0.01500516908503*G0_1_0 - 0.0150051690850301*G0_1_1 - 6.52398655872475e-05*G0_1_2 - 6.5239865586706e-05*G0_2_0 - 6.52398655867042e-05*G0_2_1; A[2707] = -0.00939454064454082*G0_0_2 - 0.00939454064454055*G0_1_2 - 0.00939454064454043*G0_2_0 - 0.00939454064454039*G0_2_1; A[2708] = -0.0613254736518616*G0_0_0 - 0.0400572774704713*G0_0_1 - 0.0613254736518616*G0_0_2 - 0.0400572774704714*G0_1_0 - 0.018789081289081*G0_1_1 - 0.0400572774704714*G0_1_2 - 0.0187890812890807*G0_2_0 - 0.00939454064454018*G0_2_1 - 0.0187890812890807*G0_2_2; A[2709] = -0.0254435475789643*G0_0_0 + 0.0136351319077012*G0_0_1 - 0.0254435475789642*G0_0_2 + 0.0136351319077013*G0_1_0 - 0.000130479731173928*G0_1_1 + 0.0136351319077013*G0_1_2 + 0.0148746893538554*G0_2_0 - 6.52398655873753e-05*G0_2_1 + 0.0148746893538552*G0_2_2; A[2710] = -0.0528442911255399*G0_0_0 - 0.0137656116388754*G0_0_1 - 0.0528442911255401*G0_0_2 - 0.0137656116388755*G0_1_0 - 0.000130479731174459*G0_1_1 - 0.0137656116388756*G0_1_2 + 0.00117431758056794*G0_2_0 - 6.5239865586832e-05*G0_2_1 + 0.00117431758056799*G0_2_2; A[2711] = 0.0212681961813905*G0_0_1 + 0.0212681961813905*G0_1_0 - 0.0187890812890811*G0_1_1 + 0.0212681961813905*G0_1_2 + 0.01187365553685*G0_2_0 - 0.00939454064454073*G0_2_1 + 0.01187365553685*G0_2_2; A[2712] = -0.0693499771190732*G0_0_0 - 0.0906181733004635*G0_0_1 - 0.0906181733004633*G0_0_2 - 0.0906181733004633*G0_1_0 - 0.111886369481854*G0_1_1 - 0.111886369481854*G0_1_2 - 0.0547362472275654*G0_2_0 - 0.0641307878721058*G0_2_1 - 0.0641307878721059*G0_2_2; A[2713] = 0.0846813455320383*G0_0_0 + 0.173472802596064*G0_0_1 + 0.173472802596064*G0_0_2 + 0.173472802596063*G0_1_0 + 0.209419968534549*G0_1_1 + 0.209419968534549*G0_1_2 + 0.089313375988721*G0_2_0 + 0.127087258163645*G0_2_1 + 0.127087258163645*G0_2_2; A[2714] = -0.00339247301052781*G0_0_0 - 0.198068231922396*G0_0_1 - 0.198068231922396*G0_0_2 - 0.198068231922395*G0_1_0 - 0.271397840842282*G0_1_1 - 0.271397840842282*G0_1_2 - 0.0623693115012542*G0_2_0 - 0.12473862300251*G0_2_1 - 0.12473862300251*G0_2_2; A[2715] = -0.0644569872000425*G0_0_0 + 0.0962940416065402*G0_0_1 + 0.0962940416065404*G0_0_2 + 0.0962940416065401*G0_1_0 + 0.0284445813959693*G0_2_0 + 0.12473862300251*G0_2_1 + 0.124738623002509*G0_2_2; A[2716] = 0.0521918924696691*G0_0_0 - 0.135698920421141*G0_0_1 - 0.271397840842283*G0_0_2 - 0.135698920421143*G0_1_0 - 0.271397840842283*G0_1_2 - 0.271397840842283*G0_2_0 - 0.271397840842283*G0_2_1 - 0.542795681684565*G0_2_2; A[2717] = -0.0880738185425675*G0_0_0 + 0.00913358118219223*G0_0_1 + 0.0459941052388967*G0_0_2 + 0.00913358118219258*G0_1_0 - 0.185933616923199*G0_1_1 - 0.0812236326559238*G0_1_2 + 0.0459941052388971*G0_2_0 - 0.0812236326559233*G0_2_1 + 0.0234863516113515*G0_2_2; A[2718] = -0.0378391220405108*G0_0_1 - 0.0528442911255398*G0_0_2 - 0.0378391220405114*G0_1_0 + 0.0521918924696692*G0_1_1 - 0.000652398655871655*G0_1_2 - 0.0528442911255414*G0_2_0 - 0.000652398655871251*G0_2_1 - 0.0534966897814114*G0_2_2; A[2719] = -0.0228339529554794*G0_0_0 + 0.0368605240567053*G0_0_1 + 0.0737210481134085*G0_0_2 + 0.0368605240567048*G0_1_0 + 0.104709984267274*G0_1_2 + 0.0737210481134104*G0_2_0 + 0.104709984267276*G0_2_1 + 0.20941996853455*G0_2_2; A[2720] = -0.0120693751336119*G0_0_1 - 0.0127217737894833*G0_0_2 - 0.0120693751336111*G0_1_0 + 0.0260959462348353*G0_1_1 + 0.0198981590040623*G0_1_2 - 0.0127217737894832*G0_2_0 + 0.0198981590040604*G0_2_1 + 0.0137003717732873*G0_2_2; A[2721] = -0.0150051690850297*G0_0_1 - 0.0300103381700595*G0_0_2 - 0.0150051690850301*G0_1_0 - 0.05284429112554*G0_1_2 - 0.0300103381700609*G0_2_0 - 0.05284429112554*G0_2_1 - 0.10568858225108*G0_2_2; A[2722] = -0.0456679059109603*G0_0_0 - 0.00782878387045029*G0_0_1 + 0.0300103381700599*G0_0_2 - 0.00782878387045044*G0_1_0 + 0.0300103381700605*G0_1_1 + 0.0150051690850301*G0_1_2 + 0.0300103381700601*G0_2_0 + 0.0150051690850297*G0_2_1; A[2723] = -0.0880738185425689*G0_0_0 + 0.000652398655870526*G0_0_1 + 0.012721773789481*G0_0_2 + 0.000652398655870733*G0_1_0 + 0.00130479731174096*G0_1_1 + 0.000652398655870821*G0_1_2 + 0.0127217737894826*G0_2_0 + 0.000652398655870955*G0_2_1; A[2724] = 0.0378391220405103*G0_0_1 + 0.0528442911255409*G0_0_2 + 0.0378391220405115*G0_1_0 + 0.0300103381700607*G0_1_1 + 0.0150051690850307*G0_1_2 + 0.0528442911255415*G0_2_0 + 0.0150051690850305*G0_2_1; A[2725] = -0.0228339529554807*G0_0_0 - 0.0107645778218697*G0_0_1 + 0.00130479731174248*G0_0_2 - 0.0107645778218694*G0_1_0 + 0.00130479731174183*G0_1_1 + 0.00065239865587106*G0_1_2 + 0.00130479731174343*G0_2_0 + 0.000652398655872109*G0_2_1; A[2726] = 0.0120693751336123*G0_0_1 + 0.0127217737894828*G0_0_2 + 0.0120693751336109*G0_1_0 + 0.0013047973117416*G0_1_1 + 0.000652398655870424*G0_1_2 + 0.0127217737894826*G0_2_0 + 0.000652398655869592*G0_2_1; A[2727] = 0.0150051690850296*G0_0_1 + 0.0300103381700599*G0_0_2 + 0.0150051690850302*G0_1_0 + 0.0300103381700604*G0_1_1 + 0.0150051690850303*G0_1_2 + 0.0300103381700611*G0_2_0 + 0.0150051690850305*G0_2_1; A[2728] = 0.12787013655069*G0_0_0 + 0.0900310145101801*G0_0_1 + 0.0378391220405103*G0_0_2 + 0.0900310145101798*G0_1_0 + 0.0521918924696692*G0_1_1 + 0.0528442911255399*G0_1_2 + 0.03783912204051*G0_2_0 + 0.0528442911255404*G0_2_1; A[2729] = -0.292274597830149*G0_0_0 - 0.195067198105389*G0_0_1 - 0.0678494602105696*G0_0_2 - 0.19506719810539*G0_1_0 - 0.185933616923199*G0_1_1 - 0.104709984267273*G0_1_2 - 0.0678494602105709*G0_2_0 - 0.104709984267276*G0_2_1; A[2730] = 0.323589733311951*G0_0_0 + 0.135698920421141*G0_0_1 + 0.135698920421141*G0_0_2 + 0.135698920421141*G0_1_0 + 0.271397840842283*G0_1_2 + 0.135698920421141*G0_2_0 + 0.271397840842282*G0_2_1; A[2731] = 0.0502346965020579*G0_0_0 + 0.0381653213684469*G0_0_1 + 0.00554538857490268*G0_0_2 + 0.0381653213684463*G0_1_0 + 0.0260959462348352*G0_1_1 + 0.00619778723077335*G0_1_2 + 0.00554538857490283*G0_2_0 + 0.00619778723077469*G0_2_1; A[2732] = -0.0965550010688889*G0_0_0 - 0.0368605240567054*G0_0_1 - 0.0678494602105717*G0_0_2 - 0.036860524056704*G0_1_0 - 0.104709984267276*G0_1_2 - 0.0678494602105702*G0_2_0 - 0.104709984267276*G0_2_1; A[2733] = 0.0300103381700586*G0_0_0 + 0.0150051690850299*G0_0_1 + 0.0378391220405104*G0_0_2 + 0.0150051690850298*G0_1_0 + 0.0528442911255408*G0_1_2 + 0.0378391220405095*G0_2_0 + 0.05284429112554*G0_2_1; A[2734] = 0.255740273101382*G0_0_0 + 0.127870136550691*G0_0_1 + 0.180062029020361*G0_0_2 + 0.12787013655069*G0_1_0 + 0.105688582251081*G0_1_1 + 0.10503618359521*G0_1_2 + 0.0756782440810202*G0_2_0 + 0.0528442911255395*G0_2_1 + 0.105688582251081*G0_2_2; A[2735] = -0.584549195660301*G0_0_0 - 0.262916658315961*G0_0_1 - 0.39013439621078*G0_0_2 - 0.26291665831596*G0_1_0 - 0.209419968534548*G0_1_1 - 0.290643601190473*G0_1_2 - 0.135698920421141*G0_2_0 - 0.104709984267274*G0_2_1 - 0.20941996853455*G0_2_2; A[2736] = 0.647179466623904*G0_0_0 + 0.271397840842282*G0_0_1 + 0.271397840842282*G0_0_2 + 0.271397840842282*G0_1_0 + 0.542795681684565*G0_1_1 + 0.271397840842283*G0_1_2 + 0.271397840842282*G0_2_0 + 0.271397840842283*G0_2_1 + 0.542795681684564*G0_2_2; A[2737] = 0.17223324514991*G0_0_0 + 0.00619778723077326*G0_0_1 + 0.0714376528178604*G0_0_2 + 0.00619778723077341*G0_1_0 + 0.0123955744615468*G0_1_1 + 0.00619778723077282*G0_1_2 - 0.0264221455627693*G0_2_0 + 0.00619778723077425*G0_2_1 - 0.0137003717732876*G0_2_2; A[2738] = -0.268135847562928*G0_0_0 + 0.0534966897814118*G0_0_1 - 0.0459941052388963*G0_0_2 + 0.0534966897814111*G0_1_0 - 0.20941996853455*G0_1_1 + 0.081223632655924*G0_1_2 + 0.0225077536275453*G0_2_0 - 0.104709984267275*G0_2_1 - 0.0234863516113508*G0_2_2; A[2739] = 0.105688582251081*G0_0_0 - 0.0221815542996106*G0_0_1 + 0.0528442911255402*G0_0_2 - 0.022181554299609*G0_1_0 + 0.105688582251081*G0_1_1 + 0.000652398655871862*G0_1_2 + 0.000652398655870086*G0_2_0 + 0.0528442911255402*G0_2_1 + 0.0534966897814114*G0_2_2; A[2740] = 0.143527704291593*G0_0_0 - 0.0424059126316064*G0_0_1 - 0.0750258454251505*G0_0_2 - 0.0424059126316062*G0_1_0 - 0.0521918924696681*G0_1_1 - 0.0260959462348338*G0_1_2 - 0.0750258454251497*G0_2_0 - 0.0260959462348333*G0_2_1; A[2741] = -0.150051690850302*G0_0_0 + 0.185933616923198*G0_0_1 + 0.316413348097372*G0_0_2 + 0.1859336169232*G0_1_0 + 0.371867233846398*G0_1_1 + 0.185933616923199*G0_1_2 + 0.316413348097373*G0_2_0 + 0.1859336169232*G0_2_1; A[2742] = 0.176147637085136*G0_0_0 - 0.00978597983806339*G0_0_1 - 0.0587158790283778*G0_0_2 - 0.0097859798380633*G0_1_0 - 0.0521918924696703*G0_1_1 - 0.0260959462348353*G0_1_2 - 0.0587158790283797*G0_2_0 - 0.0260959462348364*G0_2_1; A[2743] = 0.0456679059109601*G0_0_0 - 0.0260959462348353*G0_0_1 - 0.0750258454251514*G0_0_2 - 0.0260959462348353*G0_1_0 - 0.0521918924696713*G0_1_1 - 0.0260959462348362*G0_1_2 - 0.0750258454251535*G0_2_0 - 0.026095946234835*G0_2_1; A[2744] = -0.0298472385060922*G0_0_0 - 0.0298472385060922*G0_0_1 - 0.0298472385060922*G0_0_2 - 0.0298472385060925*G0_1_0 - 0.0298472385060925*G0_1_1 - 0.0298472385060926*G0_1_2 - 0.0345719095719093*G0_2_0 - 0.0345719095719094*G0_2_1 - 0.0345719095719094*G0_2_2; A[2745] = 0.0117431758056757*G0_0_0 + 0.0022781761063012*G0_2_0; A[2746] = -0.0298472385060923*G0_1_1 + 0.00472467106581704*G0_2_1; A[2747] = -0.00946499969937471*G0_2_2; A[2748] = 0.0642612676032812*G0_1_1 + 0.0422754329004329*G0_1_2 + 0.0422754329004327*G0_2_1 + 0.0429604514890972*G0_2_2; A[2749] = 0.00880738185425678*G0_1_1 + 0.00649136662591481*G0_1_2 + 0.00649136662591522*G0_2_1 + 0.00352295274170248*G0_2_2; A[2750] = -0.000652398655870448*G0_1_1 - 0.00949240044292038*G0_1_2 - 0.00949240044292062*G0_2_1 - 0.0189848008858418*G0_2_2; A[2751] = 0.00329461321214812*G0_1_2 + 0.00329461321214799*G0_2_1 + 0.029260079715809*G0_2_2; A[2752] = -0.0091335811821921*G0_0_0 - 0.00583896797004423*G0_0_2 - 0.00583896797004458*G0_2_0 - 0.00254435475789626*G0_2_2; A[2753] = -0.0156575677409007*G0_0_0 - 0.0130805930502108*G0_0_2 - 0.0130805930502104*G0_2_0 - 0.010503618359521*G0_2_2; A[2754] = -0.000652398655870876*G0_0_0 + 0.0019245760348191*G0_0_2 + 0.00192457603481922*G0_2_0 + 0.00450155072550924*G0_2_2; A[2755] = 0.00329461321214792*G0_0_2 + 0.0032946132121478*G0_2_0 + 0.00658922642429579*G0_2_2; A[2756] = -0.0435476102793809*G0_0_0 - 0.00583896797004441*G0_0_1 - 0.00583896797004458*G0_1_0 - 0.0142875305635724*G0_2_0 - 0.0025443547578965*G0_2_1; A[2757] = 0.0567586830607658*G0_0_0 + 0.0188869410874615*G0_0_1 + 0.0188869410874622*G0_1_0 - 0.00619778723077404*G0_1_1 + 0.0377738821749237*G0_2_0 + 0.00939454064454077*G0_2_1; A[2758] = 0.104709984267274*G0_0_0 + 0.0743408268364856*G0_0_1 + 0.0743408268364847*G0_1_0 + 0.0371867233846399*G0_1_1 + 0.108232937008977*G0_2_0 + 0.0808321934624003*G0_2_1; A[2759] = 0.042275432900432*G0_0_1 + 0.042275432900433*G0_1_0 + 0.128522535206562*G0_1_1 + 0.0429604514890974*G0_2_0 + 0.0845508658008653*G0_2_1; A[2760] = 0.0642612676032805*G0_0_0 + 0.0642612676032806*G0_0_1 + 0.0219858347028483*G0_0_2 + 0.0642612676032809*G0_1_0 + 0.064261267603281*G0_1_1 + 0.0219858347028487*G0_1_2 + 0.0219858347028484*G0_2_0 + 0.0219858347028485*G0_2_1 + 0.0226708532915132*G0_2_2; A[2761] = 0.00880738185425658*G0_0_0 + 0.0088073818542565*G0_0_1 + 0.0023160152283416*G0_0_2 + 0.00880738185425566*G0_1_0 + 0.00880738185425565*G0_1_1 + 0.00231601522834164*G0_1_2 + 0.00231601522834138*G0_2_0 + 0.00231601522834131*G0_2_1 - 0.000652398655871135*G0_2_2; A[2762] = -0.000652398655870663*G0_0_0 - 0.000652398655870577*G0_0_1 + 0.00884000178705028*G0_0_2 - 0.000652398655870351*G0_1_0 - 0.000652398655870398*G0_1_1 + 0.00884000178705022*G0_1_2 + 0.00884000178705053*G0_2_0 + 0.00884000178705057*G0_2_1 - 0.000652398655870987*G0_2_2; A[2763] = -0.00329461321214793*G0_0_2 - 0.00329461321214793*G0_1_2 - 0.00329461321214789*G0_2_0 - 0.00329461321214793*G0_2_1 + 0.0226708532915129*G0_2_2; A[2764] = 0.176636936077038*G0_0_0 + 0.134361503176606*G0_0_1 + 0.176636936077038*G0_0_2 + 0.134361503176606*G0_1_0 + 0.092086070276174*G0_1_1 + 0.134361503176606*G0_1_2 + 0.127315597693201*G0_2_0 + 0.128000616281865*G0_2_1 + 0.127315597693201*G0_2_2; A[2765] = -0.334680510461755*G0_0_0 - 0.250814663249556*G0_0_1 - 0.334680510461756*G0_0_2 - 0.250814663249556*G0_1_0 - 0.0622388317700814*G0_1_1 - 0.250814663249557*G0_1_2 - 0.166948816037355*G0_2_0 - 0.160783648739377*G0_2_1 - 0.166948816037356*G0_2_2; A[2766] = 0.104709984267274*G0_0_0 + 0.188575831479475*G0_0_1 + 0.104709984267275*G0_0_2 + 0.188575831479476*G0_1_0 - 0.0622388317700808*G0_1_1 + 0.188575831479476*G0_1_2 + 0.182410664181496*G0_2_0 + 0.0985448169692955*G0_2_1 + 0.182410664181496*G0_2_2; A[2767] = -0.0422754329004326*G0_0_1 - 0.0422754329004329*G0_1_0 + 0.0920860702761732*G0_1_1 - 0.042275432900433*G0_1_2 - 0.0429604514890973*G0_2_0 - 0.0359145460056919*G0_2_1 - 0.0429604514890974*G0_2_2; A[2768] = 0.0439716694056966*G0_0_0 + 0.0862471023061288*G0_0_1 + 0.0862471023061289*G0_0_2 + 0.08624710230613*G0_1_0 + 0.128522535206562*G0_1_1 + 0.128522535206562*G0_1_2 + 0.0446566879943616*G0_2_0 + 0.0439716694056968*G0_2_1 + 0.0439716694056969*G0_2_2; A[2769] = -0.00678494602105712*G0_0_0 - 0.0371541034518459*G0_0_1 - 0.0371541034518459*G0_0_2 - 0.0371541034518473*G0_1_0 + 0.0371867233846394*G0_1_1 + 0.0371867233846395*G0_1_2 - 0.00975335990527002*G0_2_0 - 0.043645470077761*G0_2_1 - 0.0436454700777612*G0_2_2; A[2770] = 0.0127870136550692*G0_0_0 - 0.0250847283182345*G0_0_1 - 0.0250847283182347*G0_0_2 - 0.0250847283182339*G0_1_0 - 0.0061977872307722*G0_1_1 - 0.00619778723077228*G0_1_2 + 0.00329461321214833*G0_2_0 - 0.0155923278753132*G0_2_1 - 0.0155923278753134*G0_2_2; A[2771] = -0.0318696743392922*G0_0_0 + 0.00583896797004432*G0_0_1 + 0.00583896797004434*G0_0_2 + 0.00583896797004345*G0_1_0 - 0.00590420783563173*G0_2_0 + 0.00254435475789641*G0_2_1 + 0.00254435475789649*G0_2_2; A[2772] = 0.0391439193522519*G0_0_0 - 0.005545388574903*G0_0_1 + 0.0264221455627691*G0_0_2 - 0.00554538857490292*G0_1_0 - 0.00619778723077423*G0_1_2 + 0.0264221455627708*G0_2_0 - 0.00619778723077368*G0_2_1 + 0.0137003717732876*G0_2_2; A[2773] = 0.0929668084615987*G0_0_0 + 0.0606730749959914*G0_0_1 + 0.121346149991982*G0_0_2 + 0.0606730749959906*G0_1_0 + 0.0195719596761258*G0_1_1 + 0.0748627457611827*G0_1_2 + 0.12134614999198*G0_2_0 + 0.0748627457611822*G0_2_1 + 0.149725491522364*G0_2_2; A[2774] = 0.067849460210569*G0_0_1 + 0.104709984267273*G0_0_2 + 0.0678494602105706*G0_1_0 + 0.0391439193522512*G0_1_1 + 0.13569892042114*G0_1_2 + 0.104709984267275*G0_2_0 + 0.13569892042114*G0_2_1 + 0.209419968534549*G0_2_2; A[2775] = 0.0195719596761264*G0_0_0 - 0.0102752788299654*G0_0_1 + 0.00146789697571045*G0_0_2 - 0.010275278829966*G0_1_0 - 0.0181040627004167*G0_1_2 + 0.00146789697570958*G0_2_0 - 0.0181040627004155*G0_2_1 - 0.0166361657247065*G0_2_2; A[2776] = 0.0141896707651911*G0_0_1 + 0.028379341530383*G0_0_2 + 0.0141896707651922*G0_1_0 - 0.00489298991903034*G0_1_1 + 0.0283793415303832*G0_1_2 + 0.0283793415303832*G0_2_0 + 0.0283793415303827*G0_2_1 + 0.0567586830607654*G0_2_2; A[2777] = -0.000652398655871325*G0_0_1 - 0.0127217737894828*G0_0_2 - 0.000652398655870438*G0_1_0 - 0.00130479731174115*G0_1_2 - 0.0127217737894816*G0_2_0 - 0.00130479731174187*G0_2_1 - 0.0254435475789638*G0_2_2; A[2778] = -0.156575677409008*G0_0_0 - 0.224425137619579*G0_0_1 - 0.134067923781464*G0_0_2 - 0.22442513761958*G0_1_0 - 0.29227459783015*G0_1_1 - 0.0972073997247611*G0_1_2 - 0.134067923781463*G0_2_0 - 0.0972073997247595*G0_2_1 - 0.0880738185425678*G0_2_2; A[2779] = 0.0929668084615976*G0_0_0 + 0.228013330226868*G0_0_1 + 0.363059851992138*G0_0_2 + 0.228013330226871*G0_1_0 + 0.456026660453739*G0_1_1 + 0.22801333022687*G0_1_2 + 0.36305985199214*G0_2_0 + 0.228013330226869*G0_2_1 + 0.0929668084615986*G0_2_2; A[2780] = -0.0678494602105701*G0_0_1 - 0.104709984267274*G0_0_2 - 0.0678494602105707*G0_1_0 - 0.292274597830152*G0_1_1 - 0.195067198105392*G0_1_2 - 0.104709984267275*G0_2_0 - 0.195067198105391*G0_2_1 - 0.185933616923199*G0_2_2; A[2781] = 0.0195719596761265*G0_0_0 + 0.00538228891093494*G0_0_1 - 0.0552907860850558*G0_0_2 + 0.00538228891093522*G0_1_0 - 0.00880738185425532*G0_1_1 - 0.0411011153198637*G0_1_2 - 0.0552907860850552*G0_2_0 - 0.0411011153198644*G0_2_1 + 0.0195719596761266*G0_2_2; A[2782] = -0.0141896707651918*G0_0_1 - 0.0283793415303823*G0_0_2 - 0.0141896707651922*G0_1_0 - 0.00880738185425764*G0_1_1 + 0.0322937334656072*G0_1_2 - 0.0283793415303831*G0_2_0 + 0.0322937334656073*G0_2_1 + 0.0929668084615989*G0_2_2; A[2783] = 0.000652398655870627*G0_0_1 + 0.0127217737894813*G0_0_2 + 0.000652398655870319*G0_1_0 + 0.00130479731174108*G0_1_1 + 0.000652398655870313*G0_1_2 + 0.0127217737894812*G0_2_0 + 0.000652398655870207*G0_2_1 - 0.0880738185425687*G0_2_2; A[2784] = -0.0965550010688885*G0_0_0 - 0.0287055408583181*G0_0_1 - 0.0596944770121848*G0_0_2 - 0.028705540858318*G0_1_0 + 0.0391439193522517*G0_1_1 - 0.0965550010688906*G0_1_2 - 0.0596944770121844*G0_2_0 - 0.0965550010688884*G0_2_1 - 0.022833952955481*G0_2_2; A[2785] = -0.00880738185425647*G0_0_0 - 0.0411011153198646*G0_0_1 + 0.00538228891093475*G0_0_2 - 0.0411011153198646*G0_1_0 + 0.0195719596761271*G0_1_1 - 0.055290786085056*G0_1_2 + 0.0053822889109345*G0_2_0 - 0.0552907860850569*G0_2_1 + 0.0195719596761256*G0_2_2; A[2786] = 0.0502346965020565*G0_0_0 + 0.00554538857490244*G0_0_1 + 0.0381653213684454*G0_0_2 + 0.00554538857490158*G0_1_0 + 0.00619778723077227*G0_1_2 + 0.0381653213684461*G0_2_0 + 0.00619778723077355*G0_2_1 + 0.0260959462348342*G0_2_2; A[2787] = -0.0332723314494141*G0_0_0 - 0.0190826606842227*G0_0_1 - 0.0190826606842225*G0_0_2 - 0.0190826606842219*G0_1_0 - 0.00489298991903154*G0_1_1 - 0.0332723314494127*G0_1_2 - 0.0190826606842227*G0_2_0 - 0.0332723314494136*G0_2_1 - 0.00489298991903066*G0_2_2; A[2788] = 0.0401225173360584*G0_0_0 + 0.0102752788299656*G0_0_1 + 0.0298472385060926*G0_0_2 + 0.0102752788299662*G0_1_0 + 0.0181040627004171*G0_1_2 + 0.0298472385060919*G0_2_0 + 0.0181040627004158*G0_2_1 + 0.0195719596761267*G0_2_2; A[2789] = 0.0013047973117416*G0_0_0 + 0.000652398655871195*G0_0_1 - 0.0107645778218699*G0_0_2 + 0.000652398655870784*G0_1_0 + 0.001304797311741*G0_1_2 - 0.0107645778218697*G0_2_0 + 0.00130479731174166*G0_2_1 - 0.0228339529554814*G0_2_2; A[2790] = -0.268135847562927*G0_0_0 - 0.321632537344338*G0_0_1 - 0.290643601190471*G0_0_2 - 0.321632537344339*G0_1_0 - 0.584549195660302*G0_1_1 - 0.448850275239159*G0_1_2 - 0.222141742324031*G0_2_0 - 0.194414799449519*G0_2_1 - 0.268135847562927*G0_2_2; A[2791] = -0.0371867233846404*G0_0_0 + 0.186912214907003*G0_0_1 + 0.140428810676204*G0_0_2 + 0.186912214907004*G0_1_0 - 0.0371867233846415*G0_1_1 + 0.0376760223765417*G0_1_2 + 0.0376760223765424*G0_2_0 + 0.140428810676203*G0_2_1 + 0.0655660649150209*G0_2_2; A[2792] = 0.17223324514991*G0_0_0 + 0.00619778723077342*G0_0_1 - 0.0264221455627693*G0_0_2 + 0.00619778723077326*G0_1_0 + 0.0123955744615468*G0_1_1 + 0.00619778723077426*G0_1_2 + 0.0714376528178604*G0_2_0 + 0.00619778723077282*G0_2_1 - 0.0137003717732876*G0_2_2; A[2793] = 0.726119703984277*G0_0_0 + 0.456026660453737*G0_0_1 + 0.456026660453737*G0_0_2 + 0.456026660453737*G0_1_0 + 0.912053320907479*G0_1_1 + 0.456026660453739*G0_1_2 + 0.456026660453737*G0_2_0 + 0.456026660453739*G0_2_1 + 0.726119703984279*G0_2_2; A[2794] = -0.448197876583287*G0_0_0 - 0.224098938291643*G0_0_1 - 0.121346149991981*G0_0_2 - 0.224098938291643*G0_1_0 - 0.0371867233846385*G0_1_1 - 0.0748627457611826*G0_1_2 - 0.326851726591305*G0_2_0 - 0.177615534060842*G0_2_1 - 0.149725491522364*G0_2_2; A[2795] = -0.209419968534549*G0_0_0 - 0.26291665831596*G0_0_1 - 0.104709984267273*G0_0_2 - 0.262916658315961*G0_1_0 - 0.584549195660302*G0_1_1 - 0.13569892042114*G0_1_2 - 0.290643601190473*G0_2_0 - 0.390134396210782*G0_2_1 - 0.209419968534549*G0_2_2; A[2796] = 0.352295274170268*G0_0_0 + 0.249542485870606*G0_0_1 + 0.249542485870606*G0_0_2 + 0.249542485870608*G0_1_0 - 0.0391439193522522*G0_1_1 + 0.445262082631869*G0_1_2 + 0.249542485870605*G0_2_0 + 0.445262082631868*G0_2_1 + 0.146789697570945*G0_2_2; A[2797] = -0.234863516113511*G0_0_0 - 0.0195719596761255*G0_0_1 - 0.141896707651914*G0_0_2 - 0.0195719596761244*G0_1_0 - 0.0391439193522532*G0_1_1 - 0.0195719596761251*G0_1_2 - 0.141896707651913*G0_2_0 - 0.019571959676125*G0_2_1 - 0.0489298991903148*G0_2_2; A[2798] = -0.185933616923197*G0_0_0 - 0.288686405222858*G0_0_1 - 0.48440600198412*G0_0_2 - 0.288686405222862*G0_1_0 - 0.0391439193522512*G0_1_1 - 0.484406001984122*G0_1_2 - 0.484406001984121*G0_2_0 - 0.48440600198412*G0_2_1 - 0.782878387045044*G0_2_2; A[2799] = -0.0391439193522529*G0_0_0 + 0.0048929899190319*G0_0_1 + 0.0538228891093483*G0_0_2 + 0.00489298991903089*G0_1_0 + 0.00978597983806222*G0_1_1 + 0.00489298991903057*G0_1_2 + 0.0538228891093457*G0_2_0 + 0.00489298991903109*G0_2_1 + 0.146789697570945*G0_2_2; A[2800] = 0.0117431758056755*G0_0_0 + 0.0117431758056756*G0_0_1 + 0.0117431758056755*G0_0_2 + 0.0117431758056754*G0_1_0 + 0.0117431758056754*G0_1_1 + 0.0117431758056753*G0_1_2 + 0.00946499969937455*G0_2_0 + 0.00946499969937453*G0_2_1 + 0.00946499969937451*G0_2_2; A[2801] = -0.0298472385060924*G0_0_0 + 0.00472467106581675*G0_2_0; A[2802] = -0.0298472385060927*G0_1_1 + 0.00472467106581683*G0_2_1; A[2803] = -0.00946499969937474*G0_2_2; A[2804] = 0.0642612676032817*G0_1_1 + 0.0422754329004328*G0_1_2 + 0.0422754329004324*G0_2_1 + 0.0429604514890967*G0_2_2; A[2805] = 0.00880738185425641*G0_1_1 + 0.00649136662591534*G0_1_2 + 0.00649136662591481*G0_2_1 + 0.00352295274170237*G0_2_2; A[2806] = -0.000652398655870538*G0_1_1 - 0.00949240044292082*G0_1_2 - 0.00949240044292072*G0_2_1 - 0.0189848008858418*G0_2_2; A[2807] = 0.00329461321214759*G0_1_2 + 0.00329461321214745*G0_2_1 + 0.0292600797158082*G0_2_2; A[2808] = 0.0642612676032806*G0_0_0 + 0.0422754329004322*G0_0_2 + 0.0422754329004329*G0_2_0 + 0.0429604514890967*G0_2_2; A[2809] = 0.00880738185425659*G0_0_0 + 0.00649136662591492*G0_0_2 + 0.00649136662591446*G0_2_0 + 0.00352295274170296*G0_2_2; A[2810] = -0.000652398655871127*G0_0_0 - 0.00949240044292124*G0_0_2 - 0.00949240044292108*G0_2_0 - 0.0189848008858427*G0_2_2; A[2811] = 0.00329461321214769*G0_0_2 + 0.00329461321214746*G0_2_0 + 0.0292600797158083*G0_2_2; A[2812] = 0.176636936077038*G0_0_0 + 0.0422754329004323*G0_0_1 + 0.0422754329004322*G0_1_0 + 0.0493213383838378*G0_2_0 + 0.0429604514890969*G0_2_1; A[2813] = -0.334680510461756*G0_0_0 - 0.0838658472122002*G0_0_1 - 0.0838658472121999*G0_1_0 + 0.104709984267275*G0_1_1 - 0.167731694424401*G0_2_0 - 0.0777006799142215*G0_2_1; A[2814] = 0.104709984267274*G0_0_0 - 0.0838658472122004*G0_0_1 - 0.0838658472122005*G0_1_0 - 0.334680510461757*G0_1_1 - 0.0777006799142208*G0_2_0 - 0.1677316944244*G0_2_1; A[2815] = 0.0422754329004324*G0_0_1 + 0.0422754329004329*G0_1_0 + 0.176636936077039*G0_1_1 + 0.0429604514890967*G0_2_0 + 0.0493213383838374*G0_2_1; A[2816] = -0.00913358118219212*G0_0_0 - 0.00913358118219218*G0_0_1 - 0.0032946132121478*G0_0_2 - 0.00913358118219224*G0_1_0 - 0.00913358118219226*G0_1_1 - 0.00329461321214746*G0_1_2 - 0.0032946132121484*G0_2_0 - 0.0032946132121485*G0_2_1; A[2817] = -0.0156575677409006*G0_0_0 - 0.0156575677409005*G0_0_1 - 0.00257697469068973*G0_0_2 - 0.0156575677409005*G0_1_0 - 0.0156575677409005*G0_1_1 - 0.00257697469069004*G0_1_2 - 0.00257697469068927*G0_2_0 - 0.0025769746906892*G0_2_1; A[2818] = -0.000652398655871171*G0_0_0 - 0.000652398655871326*G0_0_1 - 0.00257697469069012*G0_0_2 - 0.000652398655871029*G0_1_0 - 0.000652398655871056*G0_1_1 - 0.00257697469068987*G0_1_2 - 0.00257697469069051*G0_2_0 - 0.00257697469069054*G0_2_1; A[2819] = -0.003294613212148*G0_0_2 - 0.00329461321214791*G0_1_2 - 0.00329461321214748*G0_2_0 - 0.0032946132121475*G0_2_1; A[2820] = -0.0435476102793802*G0_0_0 - 0.037708642309336*G0_0_1 - 0.0435476102793803*G0_0_2 - 0.0377086423093358*G0_1_0 - 0.0318696743392911*G0_1_1 - 0.0377086423093358*G0_1_2 - 0.0292600797158086*G0_2_0 - 0.0259654665036605*G0_2_1 - 0.0292600797158087*G0_2_2; A[2821] = 0.0567586830607657*G0_0_0 + 0.037871741973304*G0_0_1 + 0.0567586830607657*G0_0_2 + 0.0378717419733033*G0_1_0 + 0.0127870136550679*G0_1_1 + 0.0378717419733034*G0_1_2 + 0.0189848008858426*G0_2_0 + 0.00949240044292101*G0_2_1 + 0.0189848008858426*G0_2_2; A[2822] = 0.104709984267275*G0_0_0 + 0.0303691574307888*G0_0_1 + 0.104709984267275*G0_0_2 + 0.0303691574307896*G0_1_0 - 0.00678494602105651*G0_1_1 + 0.0303691574307895*G0_1_2 - 0.00352295274170334*G0_2_0 + 0.0029684138842124*G0_2_1 - 0.00352295274170328*G0_2_2; A[2823] = -0.0422754329004324*G0_0_1 - 0.0422754329004327*G0_1_0 + 0.0439716694056968*G0_1_1 - 0.0422754329004328*G0_1_2 - 0.0429604514890965*G0_2_0 - 0.000685018588664378*G0_2_1 - 0.0429604514890966*G0_2_2; A[2824] = -0.0318696743392918*G0_0_0 - 0.037708642309336*G0_0_1 - 0.0377086423093362*G0_0_2 - 0.037708642309336*G0_1_0 - 0.0435476102793807*G0_1_1 - 0.0435476102793807*G0_1_2 - 0.0259654665036605*G0_2_0 - 0.0292600797158089*G0_2_1 - 0.0292600797158089*G0_2_2; A[2825] = 0.0127870136550688*G0_0_0 + 0.0378717419733036*G0_0_1 + 0.0378717419733038*G0_0_2 + 0.037871741973304*G0_1_0 + 0.0567586830607661*G0_1_1 + 0.0567586830607662*G0_1_2 + 0.009492400442921*G0_2_0 + 0.0189848008858423*G0_2_1 + 0.0189848008858423*G0_2_2; A[2826] = -0.00678494602105687*G0_0_0 + 0.0303691574307889*G0_0_1 + 0.030369157430789*G0_0_2 + 0.0303691574307888*G0_1_0 + 0.104709984267275*G0_1_1 + 0.104709984267275*G0_1_2 + 0.00296841388421247*G0_2_0 - 0.00352295274170312*G0_2_1 - 0.00352295274170304*G0_2_2; A[2827] = 0.0439716694056967*G0_0_0 - 0.0422754329004323*G0_0_1 - 0.0422754329004323*G0_0_2 - 0.0422754329004323*G0_1_0 - 0.000685018588664253*G0_2_0 - 0.0429604514890968*G0_2_1 - 0.0429604514890968*G0_2_2; A[2828] = -0.156575677409009*G0_0_0 + 0.0678494602105704*G0_0_1 - 0.0225077536275449*G0_0_2 + 0.0678494602105716*G0_1_0 + 0.104709984267275*G0_1_2 - 0.0225077536275464*G0_2_0 + 0.104709984267275*G0_2_1 + 0.023486351611351*G0_2_2; A[2829] = 0.0929668084615994*G0_0_0 - 0.13504652176527*G0_0_1 - 0.27009304353054*G0_0_2 - 0.13504652176527*G0_1_0 + 0.0929668084615995*G0_1_1 - 0.27009304353054*G0_1_2 - 0.27009304353054*G0_2_0 - 0.270093043530542*G0_2_1 - 0.540186087061081*G0_2_2; A[2830] = 0.0678494602105706*G0_0_1 + 0.104709984267274*G0_0_2 + 0.0678494602105716*G0_1_0 - 0.156575677409009*G0_1_1 - 0.0225077536275441*G0_1_2 + 0.104709984267274*G0_2_0 - 0.0225077536275455*G0_2_1 + 0.0234863516113504*G0_2_2; A[2831] = 0.019571959676126*G0_0_0 + 0.0141896707651905*G0_0_1 + 0.0748627457611816*G0_0_2 + 0.0141896707651908*G0_1_0 + 0.0283793415303825*G0_1_2 + 0.0748627457611822*G0_2_0 + 0.0283793415303815*G0_2_1 + 0.149725491522363*G0_2_2; A[2832] = 0.014189670765192*G0_0_1 + 0.0283793415303832*G0_0_2 + 0.0141896707651919*G0_1_0 + 0.0195719596761269*G0_1_1 + 0.0748627457611822*G0_1_2 + 0.0283793415303839*G0_2_0 + 0.0748627457611842*G0_2_1 + 0.149725491522366*G0_2_2; A[2833] = -0.000652398655871092*G0_0_1 - 0.0127217737894818*G0_0_2 - 0.000652398655870605*G0_1_0 - 0.0127217737894818*G0_1_2 - 0.0127217737894817*G0_2_0 - 0.0127217737894822*G0_2_1 - 0.113517366121531*G0_2_2; A[2834] = 0.0391439193522517*G0_0_0 + 0.0446893079271544*G0_0_1 + 0.0127217737894818*G0_0_2 + 0.0446893079271541*G0_1_0 + 0.0502346965020568*G0_1_1 + 0.0120693751336107*G0_1_2 + 0.0127217737894822*G0_2_0 + 0.0120693751336118*G0_2_1; A[2835] = 0.092966808461601*G0_0_0 + 0.0322937334656088*G0_0_1 - 0.0283793415303817*G0_0_2 + 0.0322937334656095*G0_1_0 - 0.00880738185425563*G0_1_1 - 0.0141896707651903*G0_1_2 - 0.0283793415303826*G0_2_0 - 0.0141896707651918*G0_2_1; A[2836] = -0.0678494602105709*G0_0_1 - 0.104709984267275*G0_0_2 - 0.0678494602105718*G0_1_0 - 0.0965550010688902*G0_1_1 - 0.036860524056705*G0_1_2 - 0.104709984267274*G0_2_0 - 0.036860524056704*G0_2_1; A[2837] = 0.0195719596761257*G0_0_0 + 0.0298472385060919*G0_0_1 + 0.018104062700416*G0_0_2 + 0.0298472385060917*G0_1_0 + 0.0401225173360577*G0_1_1 + 0.0102752788299657*G0_1_2 + 0.0181040627004158*G0_2_0 + 0.0102752788299651*G0_2_1; A[2838] = -0.0141896707651915*G0_0_1 - 0.0283793415303843*G0_0_2 - 0.0141896707651918*G0_1_0 - 0.0332723314494136*G0_1_1 - 0.014189670765192*G0_1_2 - 0.0283793415303839*G0_2_0 - 0.0141896707651907*G0_2_1; A[2839] = 0.0006523986558714*G0_0_1 + 0.0127217737894829*G0_0_2 + 0.000652398655870589*G0_1_0 + 0.00130479731174155*G0_1_1 + 0.0120693751336115*G0_1_2 + 0.0127217737894819*G0_2_0 + 0.0120693751336112*G0_2_1; A[2840] = 0.0502346965020564*G0_0_0 + 0.0446893079271541*G0_0_1 + 0.0120693751336109*G0_0_2 + 0.0446893079271545*G0_1_0 + 0.0391439193522522*G0_1_1 + 0.0127217737894822*G0_1_2 + 0.0120693751336114*G0_2_0 + 0.0127217737894819*G0_2_1; A[2841] = -0.00880738185425643*G0_0_0 + 0.0322937334656079*G0_0_1 - 0.014189670765191*G0_0_2 + 0.0322937334656086*G0_1_0 + 0.0929668084615999*G0_1_1 - 0.0283793415303835*G0_1_2 - 0.0141896707651913*G0_2_0 - 0.0283793415303836*G0_2_1; A[2842] = -0.0965550010688885*G0_0_0 - 0.0678494602105698*G0_0_1 - 0.0368605240567041*G0_0_2 - 0.0678494602105707*G0_1_0 - 0.104709984267275*G0_1_2 - 0.0368605240567045*G0_2_0 - 0.104709984267275*G0_2_1; A[2843] = 0.0401225173360582*G0_0_0 + 0.029847238506092*G0_0_1 + 0.010275278829966*G0_0_2 + 0.0298472385060914*G0_1_0 + 0.0195719596761253*G0_1_1 + 0.0181040627004163*G0_1_2 + 0.0102752788299654*G0_2_0 + 0.0181040627004161*G0_2_1; A[2844] = -0.0332723314494144*G0_0_0 - 0.0141896707651905*G0_0_1 - 0.0141896707651914*G0_0_2 - 0.0141896707651909*G0_1_0 - 0.0283793415303822*G0_1_2 - 0.0141896707651907*G0_2_0 - 0.0283793415303815*G0_2_1; A[2845] = 0.0013047973117424*G0_0_0 + 0.000652398655871129*G0_0_1 + 0.0120693751336116*G0_0_2 + 0.000652398655871286*G0_1_0 + 0.0127217737894824*G0_1_2 + 0.0120693751336116*G0_2_0 + 0.0127217737894823*G0_2_1; A[2846] = 0.172233245149908*G0_0_0 + 0.166035457919135*G0_0_1 + 0.198655390712679*G0_0_2 + 0.166035457919136*G0_1_0 + 0.172233245149909*G0_1_1 + 0.198655390712679*G0_1_2 + 0.100795592332049*G0_2_0 + 0.10079559233205*G0_2_1 + 0.113517366121531*G0_2_2; A[2847] = -0.0371867233846383*G0_0_0 - 0.224098938291642*G0_0_1 - 0.177615534060844*G0_0_2 - 0.224098938291644*G0_1_0 - 0.448197876583288*G0_1_1 - 0.326851726591306*G0_1_2 - 0.0748627457611816*G0_2_0 - 0.121346149991981*G0_2_1 - 0.149725491522365*G0_2_2; A[2848] = -0.268135847562928*G0_0_0 + 0.0534966897814112*G0_0_1 + 0.0225077536275453*G0_0_2 + 0.0534966897814118*G0_1_0 - 0.20941996853455*G0_1_1 - 0.104709984267275*G0_1_2 - 0.0459941052388963*G0_2_0 + 0.081223632655924*G0_2_1 - 0.0234863516113508*G0_2_2; A[2849] = -0.448197876583287*G0_0_0 - 0.224098938291643*G0_0_1 - 0.326851726591305*G0_0_2 - 0.224098938291643*G0_1_0 - 0.0371867233846385*G0_1_1 - 0.177615534060842*G0_1_2 - 0.121346149991981*G0_2_0 - 0.0748627457611826*G0_2_1 - 0.149725491522364*G0_2_2; A[2850] = 0.726119703984277*G0_0_0 + 0.270093043530539*G0_0_1 + 0.27009304353054*G0_0_2 + 0.270093043530539*G0_1_0 + 0.72611970398428*G0_1_1 + 0.27009304353054*G0_1_2 + 0.27009304353054*G0_2_0 + 0.27009304353054*G0_2_1 + 0.540186087061081*G0_2_2; A[2851] = -0.209419968534549*G0_0_0 + 0.0534966897814119*G0_0_1 - 0.104709984267274*G0_0_2 + 0.053496689781411*G0_1_0 - 0.268135847562929*G0_1_1 + 0.0225077536275445*G0_1_2 + 0.0812236326559241*G0_2_0 - 0.0459941052388955*G0_2_1 - 0.0234863516113502*G0_2_2; A[2852] = -0.234863516113512*G0_0_0 - 0.215291556437384*G0_0_1 - 0.092966808461596*G0_0_2 - 0.215291556437386*G0_1_0 - 0.234863516113512*G0_1_1 - 0.0929668084615984*G0_1_2 - 0.0929668084615998*G0_2_0 - 0.0929668084615981*G0_2_1; A[2853] = 0.352295274170269*G0_0_0 + 0.102752788299661*G0_0_1 + 0.102752788299662*G0_0_2 + 0.10275278829966*G0_1_0 - 0.185933616923201*G0_1_1 + 0.298472385060923*G0_1_2 + 0.102752788299664*G0_2_0 + 0.298472385060925*G0_2_1; A[2854] = -0.1859336169232*G0_0_0 + 0.10275278829966*G0_0_1 + 0.298472385060922*G0_0_2 + 0.102752788299661*G0_1_0 + 0.352295274170269*G0_1_1 + 0.10275278829966*G0_1_2 + 0.298472385060924*G0_2_0 + 0.102752788299662*G0_2_1; A[2855] = -0.0391439193522515*G0_0_0 - 0.0440369092712843*G0_0_1 - 0.0929668084616009*G0_0_2 - 0.0440369092712827*G0_1_0 - 0.0391439193522521*G0_1_1 - 0.0929668084615994*G0_1_2 - 0.0929668084615981*G0_2_0 - 0.0929668084616008*G0_2_1; A[2856] = 0.0189195610202554*G0_0_0 + 0.0189195610202553*G0_0_1 + 0.0189195610202554*G0_0_2 + 0.0189195610202556*G0_1_0 + 0.0189195610202556*G0_1_1 + 0.0189195610202557*G0_1_2 + 0.0137421252872641*G0_2_0 + 0.0137421252872642*G0_2_1 + 0.0137421252872642*G0_2_2; A[2857] = 0.0189195610202552*G0_0_0 + 0.00517743573299114*G0_2_0; A[2858] = 0.0335985307773499*G0_1_1 - 0.014394523943135*G0_2_1; A[2859] = -0.0137421252872641*G0_2_2; A[2860] = -0.128522535206562*G0_1_1 - 0.0962940416065412*G0_1_2 - 0.0962940416065409*G0_2_1 - 0.124738623002511*G0_2_2; A[2861] = 0.0476251018785733*G0_1_1 + 0.0623693115012553*G0_1_2 + 0.0623693115012554*G0_2_1 + 0.124738623002511*G0_2_2; A[2862] = -0.0150051690850306*G0_1_1 - 0.0377738821749245*G0_1_2 - 0.0377738821749241*G0_2_1 - 0.127087258163647*G0_2_2; A[2863] = 0.00939454064454078*G0_1_2 + 0.00939454064454076*G0_2_1 + 0.0641307878721075*G0_2_2; A[2864] = -0.0306627368259304*G0_0_0 - 0.0212681961813902*G0_0_2 - 0.0212681961813899*G0_2_0 - 0.0118736555368495*G0_2_2; A[2865] = -0.00130479731174234*G0_0_0 - 0.00123955744615482*G0_0_2 - 0.00123955744615484*G0_2_0 - 0.00117431758056794*G0_2_2; A[2866] = -0.0150051690850299*G0_0_0 - 0.014939929219443*G0_0_2 - 0.014939929219443*G0_2_0 - 0.0148746893538556*G0_2_2; A[2867] = 0.00939454064454079*G0_0_2 + 0.00939454064454091*G0_2_0 + 0.0187890812890814*G0_2_2; A[2868] = -0.111886369481854*G0_0_0 - 0.02126819618139*G0_0_1 - 0.0212681961813896*G0_1_0 - 0.0477555816097471*G0_2_0 - 0.0118736555368493*G0_2_1; A[2869] = 0.209419968534549*G0_0_0 + 0.0359471659384844*G0_0_1 + 0.0359471659384838*G0_1_0 - 0.0528442911255408*G0_1_1 + 0.0823327103709023*G0_2_0 - 0.00182671623643968*G0_2_1; A[2870] = -0.271397840842282*G0_0_0 - 0.0733296089198856*G0_0_1 - 0.073329608919885*G0_1_0 + 0.121346149991982*G0_1_1 - 0.146659217839771*G0_2_0 - 0.0109602974186302*G0_2_1; A[2871] = -0.0962940416065404*G0_0_1 - 0.0962940416065412*G0_1_0 - 0.257045070413124*G0_1_1 - 0.124738623002511*G0_2_0 - 0.192588083213081*G0_2_1; A[2872] = -0.0306627368259312*G0_0_0 - 0.0306627368259313*G0_0_1 - 0.00939454064454099*G0_0_2 - 0.0306627368259311*G0_1_0 - 0.0306627368259311*G0_1_1 - 0.00939454064454139*G0_1_2 - 0.00939454064454066*G0_2_0 - 0.00939454064454068*G0_2_1; A[2873] = -0.00130479731174159*G0_0_0 - 0.00130479731174157*G0_0_1 - 6.52398655867353e-05*G0_0_2 - 0.00130479731174115*G0_1_0 - 0.00130479731174116*G0_1_1 - 6.52398655865927e-05*G0_1_2 - 6.52398655866956e-05*G0_2_0 - 6.52398655867467e-05*G0_2_1; A[2874] = -0.0150051690850301*G0_0_0 - 0.01500516908503*G0_0_1 - 6.52398655872872e-05*G0_0_2 - 0.0150051690850301*G0_1_0 - 0.01500516908503*G0_1_1 - 6.52398655871962e-05*G0_1_2 - 6.52398655872026e-05*G0_2_0 - 6.52398655871796e-05*G0_2_1; A[2875] = -0.00939454064454027*G0_0_2 - 0.00939454064454058*G0_1_2 - 0.0093945406445408*G0_2_0 - 0.00939454064454075*G0_2_1; A[2876] = -0.111886369481854*G0_0_0 - 0.0906181733004643*G0_0_1 - 0.111886369481855*G0_0_2 - 0.0906181733004642*G0_1_0 - 0.0693499771190745*G0_1_1 - 0.0906181733004644*G0_1_2 - 0.0641307878721062*G0_2_0 - 0.0547362472275662*G0_2_1 - 0.0641307878721065*G0_2_2; A[2877] = 0.209419968534549*G0_0_0 + 0.173472802596065*G0_0_1 + 0.209419968534549*G0_0_2 + 0.173472802596065*G0_1_0 + 0.0846813455320398*G0_1_1 + 0.173472802596065*G0_1_2 + 0.127087258163645*G0_2_0 + 0.0893133759887219*G0_2_1 + 0.127087258163645*G0_2_2; A[2878] = -0.271397840842282*G0_0_0 - 0.198068231922397*G0_0_1 - 0.271397840842282*G0_0_2 - 0.198068231922397*G0_1_0 - 0.00339247301052886*G0_1_1 - 0.198068231922397*G0_1_2 - 0.12473862300251*G0_2_0 - 0.0623693115012549*G0_2_1 - 0.12473862300251*G0_2_2; A[2879] = 0.096294041606541*G0_0_1 + 0.096294041606541*G0_1_0 - 0.0644569872000419*G0_1_1 + 0.0962940416065411*G0_1_2 + 0.124738623002511*G0_2_0 + 0.0284445813959701*G0_2_1 + 0.124738623002511*G0_2_2; A[2880] = -0.0187890812890813*G0_0_0 - 0.0400572774704716*G0_0_1 - 0.0400572774704716*G0_0_2 - 0.0400572774704724*G0_1_0 - 0.0613254736518621*G0_1_1 - 0.0613254736518622*G0_1_2 - 0.00939454064454061*G0_2_0 - 0.0187890812890808*G0_2_1 - 0.0187890812890808*G0_2_2; A[2881] = -0.000130479731173934*G0_0_0 + 0.0136351319077014*G0_0_1 + 0.0136351319077014*G0_0_2 + 0.013635131907702*G0_1_0 - 0.0254435475789642*G0_1_1 - 0.0254435475789642*G0_1_2 - 6.52398655872558e-05*G0_2_0 + 0.0148746893538558*G0_2_1 + 0.0148746893538558*G0_2_2; A[2882] = -0.000130479731174586*G0_0_0 - 0.0137656116388759*G0_0_1 - 0.0137656116388758*G0_0_2 - 0.0137656116388761*G0_1_0 - 0.0528442911255412*G0_1_1 - 0.0528442911255411*G0_1_2 - 6.5239865586954e-05*G0_2_0 + 0.00117431758056718*G0_2_1 + 0.00117431758056723*G0_2_2; A[2883] = -0.0187890812890807*G0_0_0 + 0.0212681961813902*G0_0_1 + 0.0212681961813901*G0_0_2 + 0.0212681961813911*G0_1_0 - 0.00939454064454061*G0_2_0 + 0.0118736555368495*G0_2_1 + 0.0118736555368494*G0_2_2; A[2884] = 0.0521918924696687*G0_0_0 - 0.0378391220405104*G0_0_1 - 0.000652398655870285*G0_0_2 - 0.037839122040512*G0_1_0 - 0.0528442911255402*G0_1_2 - 0.000652398655871975*G0_2_0 - 0.0528442911255403*G0_2_1 - 0.0534966897814111*G0_2_2; A[2885] = -0.185933616923197*G0_0_0 + 0.00913358118219241*G0_0_1 - 0.0812236326559239*G0_0_2 + 0.00913358118219373*G0_1_0 - 0.0880738185425673*G0_1_1 + 0.0459941052388955*G0_1_2 - 0.0812236326559222*G0_2_0 + 0.0459941052388959*G0_2_1 + 0.0234863516113496*G0_2_2; A[2886] = -0.13569892042114*G0_0_1 - 0.271397840842281*G0_0_2 - 0.135698920421143*G0_1_0 + 0.0521918924696697*G0_1_1 - 0.271397840842282*G0_1_2 - 0.271397840842284*G0_2_0 - 0.271397840842282*G0_2_1 - 0.542795681684564*G0_2_2; A[2887] = 0.0260959462348353*G0_0_0 - 0.0120693751336118*G0_0_1 + 0.0198981590040612*G0_0_2 - 0.0120693751336101*G0_1_0 - 0.012721773789482*G0_1_2 + 0.0198981590040626*G0_2_0 - 0.0127217737894821*G0_2_1 + 0.0137003717732887*G0_2_2; A[2888] = 0.0368605240567048*G0_0_1 + 0.104709984267276*G0_0_2 + 0.0368605240567031*G0_1_0 - 0.0228339529554809*G0_1_1 + 0.0737210481134092*G0_1_2 + 0.104709984267274*G0_2_0 + 0.0737210481134087*G0_2_1 + 0.209419968534551*G0_2_2; A[2889] = -0.0150051690850292*G0_0_1 - 0.0528442911255404*G0_0_2 - 0.0150051690850303*G0_1_0 - 0.0300103381700605*G0_1_2 - 0.0528442911255404*G0_2_0 - 0.0300103381700591*G0_2_1 - 0.105688582251082*G0_2_2; A[2890] = 0.0521918924696692*G0_0_0 + 0.0900310145101802*G0_0_1 + 0.0528442911255405*G0_0_2 + 0.0900310145101811*G0_1_0 + 0.127870136550691*G0_1_1 + 0.0378391220405116*G0_1_2 + 0.0528442911255409*G0_2_0 + 0.0378391220405105*G0_2_1; A[2891] = -0.185933616923199*G0_0_0 - 0.19506719810539*G0_0_1 - 0.104709984267275*G0_0_2 - 0.195067198105393*G0_1_0 - 0.292274597830151*G0_1_1 - 0.0678494602105721*G0_1_2 - 0.104709984267276*G0_2_0 - 0.0678494602105706*G0_2_1; A[2892] = 0.135698920421141*G0_0_1 + 0.271397840842283*G0_0_2 + 0.135698920421143*G0_1_0 + 0.323589733311953*G0_1_1 + 0.135698920421143*G0_1_2 + 0.271397840842283*G0_2_0 + 0.135698920421142*G0_2_1; A[2893] = 0.0260959462348341*G0_0_0 + 0.0381653213684454*G0_0_1 + 0.00619778723077337*G0_0_2 + 0.038165321368445*G0_1_0 + 0.0502346965020557*G0_1_1 + 0.00554538857490194*G0_1_2 + 0.00619778723077353*G0_2_0 + 0.00554538857490198*G0_2_1; A[2894] = -0.0368605240567033*G0_0_1 - 0.104709984267274*G0_0_2 - 0.0368605240567032*G0_1_0 - 0.0965550010688876*G0_1_1 - 0.067849460210569*G0_1_2 - 0.104709984267274*G0_2_0 - 0.0678494602105704*G0_2_1; A[2895] = 0.0150051690850301*G0_0_1 + 0.0528442911255405*G0_0_2 + 0.0150051690850306*G0_1_0 + 0.0300103381700606*G0_1_1 + 0.0378391220405107*G0_1_2 + 0.0528442911255405*G0_2_0 + 0.0378391220405113*G0_2_1; A[2896] = 0.0300103381700605*G0_0_0 - 0.00782878387045044*G0_0_1 + 0.0150051690850306*G0_0_2 - 0.00782878387045065*G0_1_0 - 0.0456679059109607*G0_1_1 + 0.0300103381700611*G0_1_2 + 0.0150051690850307*G0_2_0 + 0.0300103381700613*G0_2_1; A[2897] = 0.00130479731174178*G0_0_0 + 0.000652398655870803*G0_0_1 + 0.000652398655870782*G0_0_2 + 0.000652398655871083*G0_1_0 - 0.0880738185425679*G0_1_1 + 0.0127217737894827*G0_1_2 + 0.000652398655869583*G0_2_0 + 0.0127217737894814*G0_2_1; A[2898] = 0.0300103381700592*G0_0_0 + 0.0378391220405101*G0_0_1 + 0.0150051690850309*G0_0_2 + 0.0378391220405102*G0_1_0 + 0.0528442911255419*G0_1_2 + 0.0150051690850304*G0_2_0 + 0.0528442911255403*G0_2_1; A[2899] = 0.00130479731174109*G0_0_0 - 0.0107645778218701*G0_0_1 + 0.00065239865587028*G0_0_2 - 0.01076457782187*G0_1_0 - 0.0228339529554804*G0_1_1 + 0.00130479731174051*G0_1_2 + 0.00065239865587059*G0_2_0 + 0.00130479731174244*G0_2_1; A[2900] = 0.0013047973117429*G0_0_0 + 0.0120693751336117*G0_0_1 + 0.000652398655870432*G0_0_2 + 0.0120693751336116*G0_1_0 + 0.0127217737894808*G0_1_2 + 0.000652398655871062*G0_2_0 + 0.012721773789482*G0_2_1; A[2901] = 0.0300103381700599*G0_0_0 + 0.0150051690850294*G0_0_1 + 0.0150051690850303*G0_0_2 + 0.0150051690850297*G0_1_0 + 0.0300103381700606*G0_1_2 + 0.0150051690850301*G0_2_0 + 0.0300103381700594*G0_2_1; A[2902] = 0.105688582251081*G0_0_0 + 0.127870136550691*G0_0_1 + 0.10503618359521*G0_0_2 + 0.12787013655069*G0_1_0 + 0.255740273101382*G0_1_1 + 0.180062029020361*G0_1_2 + 0.05284429112554*G0_2_0 + 0.0756782440810202*G0_2_1 + 0.105688582251081*G0_2_2; A[2903] = 0.0123955744615465*G0_0_0 + 0.00619778723077373*G0_0_1 + 0.00619778723077381*G0_0_2 + 0.00619778723077397*G0_1_0 + 0.172233245149912*G0_1_1 + 0.0714376528178612*G0_1_2 + 0.00619778723077313*G0_2_0 - 0.0264221455627696*G0_2_1 - 0.0137003717732882*G0_2_2; A[2904] = 0.105688582251081*G0_0_0 - 0.022181554299609*G0_0_1 + 0.000652398655870087*G0_0_2 - 0.0221815542996106*G0_1_0 + 0.105688582251081*G0_1_1 + 0.0528442911255402*G0_1_2 + 0.0528442911255402*G0_2_0 + 0.000652398655871858*G0_2_1 + 0.0534966897814114*G0_2_2; A[2905] = -0.209419968534549*G0_0_0 - 0.262916658315961*G0_0_1 - 0.290643601190473*G0_0_2 - 0.26291665831596*G0_1_0 - 0.584549195660302*G0_1_1 - 0.390134396210782*G0_1_2 - 0.104709984267273*G0_2_0 - 0.13569892042114*G0_2_1 - 0.209419968534549*G0_2_2; A[2906] = -0.209419968534549*G0_0_0 + 0.053496689781411*G0_0_1 + 0.0812236326559241*G0_0_2 + 0.0534966897814119*G0_1_0 - 0.268135847562929*G0_1_1 - 0.0459941052388955*G0_1_2 - 0.104709984267274*G0_2_0 + 0.0225077536275445*G0_2_1 - 0.0234863516113502*G0_2_2; A[2907] = 0.542795681684564*G0_0_0 + 0.271397840842282*G0_0_1 + 0.271397840842281*G0_0_2 + 0.271397840842282*G0_1_0 + 0.647179466623905*G0_1_1 + 0.271397840842282*G0_1_2 + 0.271397840842281*G0_2_0 + 0.271397840842282*G0_2_1 + 0.542795681684565*G0_2_2; A[2908] = -0.0521918924696704*G0_0_0 - 0.0424059126316081*G0_0_1 - 0.0260959462348372*G0_0_2 - 0.0424059126316072*G0_1_0 + 0.14352770429159*G0_1_1 - 0.075025845425151*G0_1_2 - 0.0260959462348351*G0_2_0 - 0.075025845425153*G0_2_1; A[2909] = -0.0521918924696674*G0_0_0 - 0.00978597983806276*G0_0_1 - 0.0260959462348348*G0_0_2 - 0.00978597983806171*G0_1_0 + 0.176147637085136*G0_1_1 - 0.0587158790283792*G0_1_2 - 0.0260959462348335*G0_2_0 - 0.0587158790283774*G0_2_1; A[2910] = 0.371867233846396*G0_0_0 + 0.185933616923199*G0_0_1 + 0.185933616923197*G0_0_2 + 0.185933616923199*G0_1_0 - 0.150051690850299*G0_1_1 + 0.316413348097373*G0_1_2 + 0.185933616923199*G0_2_0 + 0.316413348097374*G0_2_1; A[2911] = -0.0521918924696695*G0_0_0 - 0.0260959462348349*G0_0_1 - 0.0260959462348325*G0_0_2 - 0.026095946234835*G0_1_0 + 0.0456679059109609*G0_1_1 - 0.0750258454251485*G0_1_2 - 0.0260959462348359*G0_2_0 - 0.0750258454251511*G0_2_1; A[2912] = -0.0782878387045041*G0_0_0 - 0.0782878387045042*G0_0_1 - 0.0782878387045041*G0_0_2 - 0.0782878387045042*G0_1_0 - 0.0782878387045045*G0_1_1 - 0.0782878387045044*G0_1_2 - 0.0782878387045041*G0_2_0 - 0.0782878387045042*G0_2_1 - 0.0782878387045042*G0_2_2; A[2913] = 0.0440369092712838*G0_0_0; A[2914] = 0.0440369092712843*G0_1_1; A[2915] = 0.044036909271284*G0_2_2; A[2916] = -0.0505608958299923*G0_1_1 - 0.00260959462348251*G0_1_2 - 0.00260959462348329*G0_2_1; A[2917] = 0.0391439193522505*G0_1_1 + 0.0319675341376703*G0_1_2 + 0.0319675341376702*G0_2_1 + 0.0260959462348327*G0_2_2; A[2918] = 0.0260959462348353*G0_1_1 + 0.0319675341376734*G0_1_2 + 0.0319675341376734*G0_2_1 + 0.0391439193522526*G0_2_2; A[2919] = -0.00260959462348335*G0_1_2 - 0.00260959462348392*G0_2_1 - 0.0505608958299934*G0_2_2; A[2920] = -0.0505608958299932*G0_0_0 - 0.00260959462348371*G0_0_2 - 0.00260959462348315*G0_2_0; A[2921] = 0.039143919352252*G0_0_0 + 0.0319675341376721*G0_0_2 + 0.031967534137672*G0_2_0 + 0.0260959462348334*G0_2_2; A[2922] = 0.0260959462348351*G0_0_0 + 0.0319675341376731*G0_0_2 + 0.0319675341376735*G0_2_0 + 0.0391439193522542*G0_2_2; A[2923] = -0.00260959462348383*G0_0_2 - 0.00260959462348415*G0_2_0 - 0.0505608958299942*G0_2_2; A[2924] = -0.050560895829993*G0_0_0 - 0.00260959462348409*G0_0_1 - 0.00260959462348313*G0_1_0; A[2925] = 0.0391439193522521*G0_0_0 + 0.0319675341376731*G0_0_1 + 0.0319675341376711*G0_1_0 + 0.0260959462348338*G0_1_1; A[2926] = 0.0260959462348351*G0_0_0 + 0.0319675341376719*G0_0_1 + 0.0319675341376736*G0_1_0 + 0.0391439193522525*G0_1_1; A[2927] = -0.00260959462348259*G0_0_1 - 0.00260959462348265*G0_1_0 - 0.050560895829992*G0_1_1; A[2928] = 0.096228801740953*G0_0_0 + 0.0962288017409528*G0_0_1 + 0.131458329157979*G0_0_2 + 0.0962288017409526*G0_1_0 + 0.0962288017409527*G0_1_1 + 0.13145832915798*G0_1_2 + 0.13145832915798*G0_2_0 + 0.131458329157979*G0_2_1 + 0.166687856575007*G0_2_2; A[2929] = -0.15657567740901*G0_0_0 - 0.15657567740901*G0_0_1 - 0.0662184635708919*G0_0_2 - 0.156575677409009*G0_1_0 - 0.156575677409009*G0_1_1 - 0.0662184635708924*G0_1_2 - 0.0662184635708927*G0_2_0 - 0.0662184635708926*G0_2_1 - 0.161794866655975*G0_2_2; A[2930] = 0.0260959462348355*G0_0_0 + 0.0260959462348354*G0_0_1 + 0.0104383784939325*G0_0_2 + 0.0260959462348346*G0_1_0 + 0.0260959462348348*G0_1_1 + 0.0104383784939327*G0_1_2 + 0.0104383784939341*G0_2_0 + 0.0104383784939341*G0_2_1 + 0.180714427676231*G0_2_2; A[2931] = 0.00260959462348409*G0_0_2 + 0.00260959462348422*G0_1_2 + 0.00260959462348422*G0_2_0 + 0.00260959462348423*G0_2_1 - 0.151356488162042*G0_2_2; A[2932] = 0.0962288017409534*G0_0_0 + 0.13145832915798*G0_0_1 + 0.0962288017409535*G0_0_2 + 0.13145832915798*G0_1_0 + 0.166687856575008*G0_1_1 + 0.13145832915798*G0_1_2 + 0.096228801740953*G0_2_0 + 0.13145832915798*G0_2_1 + 0.0962288017409532*G0_2_2; A[2933] = -0.156575677409008*G0_0_0 - 0.0662184635708929*G0_0_1 - 0.156575677409008*G0_0_2 - 0.0662184635708927*G0_1_0 - 0.161794866655976*G0_1_1 - 0.0662184635708928*G0_1_2 - 0.156575677409008*G0_2_0 - 0.0662184635708934*G0_2_1 - 0.156575677409008*G0_2_2; A[2934] = 0.0260959462348352*G0_0_0 + 0.0104383784939335*G0_0_1 + 0.0260959462348351*G0_0_2 + 0.0104383784939344*G0_1_0 + 0.180714427676232*G0_1_1 + 0.0104383784939346*G0_1_2 + 0.0260959462348361*G0_2_0 + 0.0104383784939345*G0_2_1 + 0.0260959462348365*G0_2_2; A[2935] = 0.00260959462348367*G0_0_1 + 0.00260959462348255*G0_1_0 - 0.151356488162043*G0_1_1 + 0.00260959462348259*G0_1_2 + 0.00260959462348284*G0_2_1; A[2936] = 0.166687856575007*G0_0_0 + 0.13145832915798*G0_0_1 + 0.13145832915798*G0_0_2 + 0.13145832915798*G0_1_0 + 0.0962288017409533*G0_1_1 + 0.0962288017409533*G0_1_2 + 0.13145832915798*G0_2_0 + 0.0962288017409532*G0_2_1 + 0.0962288017409532*G0_2_2; A[2937] = -0.161794866655976*G0_0_0 - 0.066218463570893*G0_0_1 - 0.0662184635708932*G0_0_2 - 0.0662184635708933*G0_1_0 - 0.156575677409008*G0_1_1 - 0.156575677409009*G0_1_2 - 0.0662184635708936*G0_2_0 - 0.156575677409009*G0_2_1 - 0.156575677409009*G0_2_2; A[2938] = 0.180714427676231*G0_0_0 + 0.0104383784939334*G0_0_1 + 0.0104383784939333*G0_0_2 + 0.0104383784939333*G0_1_0 + 0.0260959462348337*G0_1_1 + 0.0260959462348335*G0_1_2 + 0.0104383784939343*G0_2_0 + 0.0260959462348348*G0_2_1 + 0.0260959462348348*G0_2_2; A[2939] = -0.151356488162042*G0_0_0 + 0.00260959462348398*G0_0_1 + 0.00260959462348398*G0_0_2 + 0.00260959462348407*G0_1_0 + 0.00260959462348326*G0_2_0; A[2940] = 0.195719596761262*G0_0_0 + 0.0750258454251487*G0_0_1 + 0.0750258454251491*G0_0_2 + 0.0750258454251492*G0_1_0 + 0.0260959462348333*G0_1_2 + 0.0750258454251472*G0_2_0 + 0.0260959462348325*G0_2_1; A[2941] = 0.146789697570947*G0_0_0 + 0.141896707651916*G0_0_1 + 0.0929668084616*G0_0_2 + 0.141896707651916*G0_1_0 + 0.146789697570947*G0_1_1 + 0.0929668084615979*G0_1_2 + 0.0929668084616005*G0_2_0 + 0.0929668084615992*G0_2_1; A[2942] = 0.0750258454251478*G0_0_1 + 0.0260959462348348*G0_0_2 + 0.0750258454251495*G0_1_0 + 0.19571959676126*G0_1_1 + 0.0750258454251521*G0_1_2 + 0.0260959462348318*G0_2_0 + 0.0750258454251475*G0_2_1; A[2943] = 0.146789697570945*G0_0_0 + 0.0929668084615988*G0_0_1 + 0.141896707651913*G0_0_2 + 0.0929668084616009*G0_1_0 + 0.0929668084616006*G0_1_2 + 0.141896707651916*G0_2_0 + 0.0929668084616004*G0_2_1 + 0.146789697570946*G0_2_2; A[2944] = 0.0929668084615995*G0_0_1 + 0.0929668084615976*G0_0_2 + 0.0929668084615963*G0_1_0 + 0.146789697570945*G0_1_1 + 0.141896707651913*G0_1_2 + 0.0929668084615972*G0_2_0 + 0.141896707651915*G0_2_1 + 0.146789697570944*G0_2_2; A[2945] = 0.0260959462348348*G0_0_1 + 0.0750258454251517*G0_0_2 + 0.0260959462348348*G0_1_0 + 0.0750258454251505*G0_1_2 + 0.0750258454251482*G0_2_0 + 0.0750258454251486*G0_2_1 + 0.195719596761262*G0_2_2; A[2946] = -0.782878387045048*G0_0_0 - 0.466465038947673*G0_0_1 - 0.466465038947675*G0_0_2 - 0.466465038947673*G0_1_0 - 0.150051690850299*G0_1_1 - 0.335985307773498*G0_1_2 - 0.466465038947671*G0_2_0 - 0.335985307773496*G0_2_1 - 0.150051690850299*G0_2_2; A[2947] = 0.146789697570943*G0_0_0 + 0.44526208263187*G0_0_1 + 0.249542485870605*G0_0_2 + 0.445262082631867*G0_1_0 - 0.0391439193522526*G0_1_1 + 0.249542485870604*G0_1_2 + 0.249542485870607*G0_2_0 + 0.249542485870607*G0_2_1 + 0.352295274170267*G0_2_2; A[2948] = -0.0750258454251506*G0_0_1 - 0.026095946234834*G0_0_2 - 0.0750258454251499*G0_1_0 + 0.143527704291591*G0_1_1 - 0.0424059126316053*G0_1_2 - 0.0260959462348322*G0_2_0 - 0.0424059126316074*G0_2_1 - 0.0521918924696696*G0_2_2; A[2949] = 0.146789697570946*G0_0_0 + 0.249542485870608*G0_0_1 + 0.445262082631873*G0_0_2 + 0.249542485870607*G0_1_0 + 0.352295274170269*G0_1_1 + 0.249542485870609*G0_1_2 + 0.445262082631868*G0_2_0 + 0.249542485870606*G0_2_1 - 0.0391439193522525*G0_2_2; A[2950] = -0.092966808461598*G0_0_1 - 0.0929668084615982*G0_0_2 - 0.0929668084615962*G0_1_0 - 0.234863516113512*G0_1_1 - 0.215291556437385*G0_1_2 - 0.0929668084615973*G0_2_0 - 0.215291556437385*G0_2_1 - 0.234863516113511*G0_2_2; A[2951] = -0.0260959462348358*G0_0_1 - 0.0750258454251515*G0_0_2 - 0.026095946234835*G0_1_0 - 0.0521918924696691*G0_1_1 - 0.0424059126316076*G0_1_2 - 0.0750258454251482*G0_2_0 - 0.0424059126316067*G0_2_1 + 0.143527704291592*G0_2_2; A[2952] = -0.150051690850299*G0_0_0 - 0.466465038947674*G0_0_1 - 0.335985307773499*G0_0_2 - 0.466465038947672*G0_1_0 - 0.782878387045046*G0_1_1 - 0.466465038947673*G0_1_2 - 0.335985307773497*G0_2_0 - 0.466465038947671*G0_2_1 - 0.150051690850299*G0_2_2; A[2953] = -0.0391439193522542*G0_0_0 + 0.44526208263187*G0_0_1 + 0.249542485870609*G0_0_2 + 0.445262082631869*G0_1_0 + 0.146789697570945*G0_1_1 + 0.249542485870609*G0_1_2 + 0.249542485870607*G0_2_0 + 0.249542485870609*G0_2_1 + 0.352295274170272*G0_2_2; A[2954] = 0.143527704291593*G0_0_0 - 0.0750258454251492*G0_0_1 - 0.0424059126316057*G0_0_2 - 0.0750258454251495*G0_1_0 - 0.0260959462348334*G0_1_2 - 0.0424059126316065*G0_2_0 - 0.026095946234833*G0_2_1 - 0.052191892469668*G0_2_2; A[2955] = 0.352295274170273*G0_0_0 + 0.249542485870611*G0_0_1 + 0.24954248587061*G0_0_2 + 0.249542485870609*G0_1_0 + 0.146789697570948*G0_1_1 + 0.445262082631871*G0_1_2 + 0.249542485870609*G0_2_0 + 0.445262082631871*G0_2_1 - 0.0391439193522532*G0_2_2; A[2956] = -0.234863516113514*G0_0_0 - 0.092966808461598*G0_0_1 - 0.215291556437389*G0_0_2 - 0.0929668084615998*G0_1_0 - 0.0929668084616004*G0_1_2 - 0.215291556437388*G0_2_0 - 0.0929668084615996*G0_2_1 - 0.234863516113517*G0_2_2; A[2957] = -0.0521918924696708*G0_0_0 - 0.0260959462348356*G0_0_1 - 0.0424059126316075*G0_0_2 - 0.0260959462348354*G0_1_0 - 0.0750258454251508*G0_1_2 - 0.0424059126316076*G0_2_0 - 0.0750258454251492*G0_2_1 + 0.143527704291594*G0_2_2; A[2958] = -0.1500516908503*G0_0_0 - 0.335985307773498*G0_0_1 - 0.466465038947672*G0_0_2 - 0.335985307773498*G0_1_0 - 0.1500516908503*G0_1_1 - 0.466465038947672*G0_1_2 - 0.466465038947673*G0_2_0 - 0.466465038947672*G0_2_1 - 0.782878387045044*G0_2_2; A[2959] = -0.0391439193522539*G0_0_0 + 0.249542485870606*G0_0_1 + 0.445262082631867*G0_0_2 + 0.249542485870607*G0_1_0 + 0.352295274170269*G0_1_1 + 0.249542485870606*G0_1_2 + 0.445262082631869*G0_2_0 + 0.249542485870607*G0_2_1 + 0.146789697570944*G0_2_2; A[2960] = 0.143527704291593*G0_0_0 - 0.0424059126316062*G0_0_1 - 0.0750258454251497*G0_0_2 - 0.0424059126316064*G0_1_0 - 0.0521918924696681*G0_1_1 - 0.0260959462348333*G0_1_2 - 0.0750258454251505*G0_2_0 - 0.0260959462348338*G0_2_1; A[2961] = 0.352295274170268*G0_0_0 + 0.249542485870608*G0_0_1 + 0.249542485870605*G0_0_2 + 0.249542485870606*G0_1_0 - 0.0391439193522522*G0_1_1 + 0.445262082631868*G0_1_2 + 0.249542485870606*G0_2_0 + 0.445262082631869*G0_2_1 + 0.146789697570945*G0_2_2; A[2962] = -0.234863516113512*G0_0_0 - 0.215291556437386*G0_0_1 - 0.0929668084615997*G0_0_2 - 0.215291556437384*G0_1_0 - 0.234863516113512*G0_1_1 - 0.0929668084615981*G0_1_2 - 0.092966808461596*G0_2_0 - 0.0929668084615984*G0_2_1; A[2963] = -0.0521918924696704*G0_0_0 - 0.0424059126316072*G0_0_1 - 0.0260959462348351*G0_0_2 - 0.0424059126316081*G0_1_0 + 0.14352770429159*G0_1_1 - 0.075025845425153*G0_1_2 - 0.0260959462348372*G0_2_0 - 0.075025845425151*G0_2_1; A[2964] = 1.76147637085136*G0_0_0 + 0.978597983806305*G0_0_1 + 0.978597983806306*G0_0_2 + 0.978597983806305*G0_1_0 + 1.76147637085135*G0_1_1 + 0.978597983806303*G0_1_2 + 0.978597983806307*G0_2_0 + 0.978597983806303*G0_2_1 + 1.76147637085135*G0_2_2; A[2965] = -1.17431758056757*G0_0_0 - 0.587158790283785*G0_0_1 - 0.58715879028378*G0_0_2 - 0.587158790283781*G0_1_0 - 0.293579395141891*G0_1_1 - 0.342509294332207*G0_1_2 - 0.587158790283783*G0_2_0 - 0.342509294332208*G0_2_1 - 0.293579395141889*G0_2_2; A[2966] = -0.293579395141891*G0_0_0 - 0.58715879028378*G0_0_1 - 0.342509294332203*G0_0_2 - 0.587158790283783*G0_1_0 - 1.17431758056756*G0_1_1 - 0.58715879028378*G0_1_2 - 0.342509294332208*G0_2_0 - 0.587158790283781*G0_2_1 - 0.293579395141889*G0_2_2; A[2967] = -0.293579395141891*G0_0_0 - 0.34250929433221*G0_0_1 - 0.587158790283786*G0_0_2 - 0.342509294332208*G0_1_0 - 0.293579395141893*G0_1_1 - 0.587158790283782*G0_1_2 - 0.587158790283784*G0_2_0 - 0.587158790283786*G0_2_1 - 1.17431758056757*G0_2_2; A[2968] = 0.0440369092712835*G0_0_0 + 0.0440369092712835*G0_0_1 + 0.0440369092712835*G0_0_2 + 0.0440369092712838*G0_1_0 + 0.0440369092712837*G0_1_1 + 0.0440369092712838*G0_1_2 + 0.0440369092712839*G0_2_0 + 0.0440369092712838*G0_2_1 + 0.0440369092712838*G0_2_2; A[2969] = -0.0782878387045047*G0_0_0; A[2970] = 0.0440369092712844*G0_1_1; A[2971] = 0.044036909271284*G0_2_2; A[2972] = -0.0505608958299936*G0_1_1 - 0.00260959462348366*G0_1_2 - 0.00260959462348337*G0_2_1; A[2973] = 0.0391439193522519*G0_1_1 + 0.0319675341376711*G0_1_2 + 0.0319675341376728*G0_2_1 + 0.0260959462348342*G0_2_2; A[2974] = 0.0260959462348343*G0_1_1 + 0.0319675341376732*G0_1_2 + 0.0319675341376727*G0_2_1 + 0.0391439193522527*G0_2_2; A[2975] = -0.0026095946234849*G0_1_2 - 0.00260959462348377*G0_2_1 - 0.0505608958299935*G0_2_2; A[2976] = 0.0962288017409548*G0_0_0 - 0.0352295274170266*G0_0_2 - 0.0352295274170272*G0_2_0; A[2977] = -0.15657567740901*G0_0_0 - 0.0903572138381158*G0_0_2 - 0.0903572138381148*G0_2_0 - 0.185933616923198*G0_2_2; A[2978] = 0.0260959462348351*G0_0_0 + 0.0156575677409015*G0_0_2 + 0.015657567740901*G0_2_0 + 0.185933616923199*G0_2_2; A[2979] = -0.00260959462348314*G0_0_2 - 0.00260959462348375*G0_2_0 - 0.15657567740901*G0_2_2; A[2980] = 0.0962288017409546*G0_0_0 - 0.0352295274170262*G0_0_1 - 0.035229527417027*G0_1_0; A[2981] = -0.15657567740901*G0_0_0 - 0.0903572138381167*G0_0_1 - 0.0903572138381162*G0_1_0 - 0.185933616923199*G0_1_1; A[2982] = 0.0260959462348343*G0_0_0 + 0.0156575677409017*G0_0_1 + 0.0156575677409012*G0_1_0 + 0.185933616923199*G0_1_1; A[2983] = -0.00260959462348498*G0_0_1 - 0.00260959462348333*G0_1_0 - 0.15657567740901*G0_1_1; A[2984] = -0.0505608958299919*G0_0_0 - 0.0505608958299916*G0_0_1 - 0.0479513012065085*G0_0_2 - 0.0505608958299934*G0_1_0 - 0.0505608958299934*G0_1_1 - 0.0479513012065096*G0_1_2 - 0.0479513012065092*G0_2_0 - 0.0479513012065091*G0_2_1 - 0.0453417065830264*G0_2_2; A[2985] = 0.0391439193522517*G0_0_0 + 0.0391439193522517*G0_0_1 + 0.00717638521457911*G0_0_2 + 0.0391439193522531*G0_1_0 + 0.0391439193522531*G0_1_1 + 0.00717638521458013*G0_1_2 + 0.00717638521457972*G0_2_0 + 0.00717638521457969*G0_2_1 + 0.00130479731174272*G0_2_2; A[2986] = 0.0260959462348347*G0_0_0 + 0.0260959462348346*G0_0_1 - 0.00587158790283747*G0_0_2 + 0.0260959462348347*G0_1_0 + 0.0260959462348347*G0_1_1 - 0.00587158790283786*G0_1_2 - 0.00587158790283796*G0_2_0 - 0.00587158790283795*G0_2_1 + 0.00130479731174129*G0_2_2; A[2987] = 0.0026095946234832*G0_0_2 + 0.0026095946234832*G0_1_2 + 0.00260959462348353*G0_2_0 + 0.00260959462348353*G0_2_1 - 0.0453417065830259*G0_2_2; A[2988] = -0.0505608958299922*G0_0_0 - 0.047951301206509*G0_0_1 - 0.0505608958299923*G0_0_2 - 0.0479513012065096*G0_1_0 - 0.0453417065830257*G0_1_1 - 0.0479513012065096*G0_1_2 - 0.0505608958299923*G0_2_0 - 0.0479513012065096*G0_2_1 - 0.0505608958299924*G0_2_2; A[2989] = 0.039143919352252*G0_0_0 + 0.00717638521457987*G0_0_1 + 0.0391439193522519*G0_0_2 + 0.00717638521458073*G0_1_0 + 0.00130479731174184*G0_1_1 + 0.00717638521458062*G0_1_2 + 0.0391439193522521*G0_2_0 + 0.00717638521458012*G0_2_1 + 0.0391439193522525*G0_2_2; A[2990] = 0.0260959462348333*G0_0_0 - 0.00587158790283851*G0_0_1 + 0.0260959462348336*G0_0_2 - 0.00587158790283831*G0_1_0 + 0.00130479731174187*G0_1_1 - 0.00587158790283824*G0_1_2 + 0.0260959462348354*G0_2_0 - 0.00587158790283811*G0_2_1 + 0.0260959462348353*G0_2_2; A[2991] = 0.00260959462348404*G0_0_1 + 0.00260959462348354*G0_1_0 - 0.0453417065830262*G0_1_1 + 0.00260959462348342*G0_1_2 + 0.00260959462348345*G0_2_1; A[2992] = -0.151356488162042*G0_0_0 - 0.153966082785525*G0_0_1 - 0.153966082785525*G0_0_2 - 0.153966082785526*G0_1_0 - 0.15657567740901*G0_1_1 - 0.15657567740901*G0_1_2 - 0.153966082785526*G0_2_0 - 0.156575677409009*G0_2_1 - 0.156575677409009*G0_2_2; A[2993] = 0.18071442767623*G0_0_0 + 0.170276049182297*G0_0_1 + 0.170276049182297*G0_0_2 + 0.170276049182297*G0_1_0 + 0.185933616923198*G0_1_1 + 0.185933616923198*G0_1_2 + 0.170276049182297*G0_2_0 + 0.185933616923198*G0_2_1 + 0.185933616923198*G0_2_2; A[2994] = -0.161794866655976*G0_0_0 - 0.0955764030850826*G0_0_1 - 0.0955764030850826*G0_0_2 - 0.0955764030850822*G0_1_0 - 0.185933616923199*G0_1_1 - 0.185933616923199*G0_1_2 - 0.0955764030850829*G0_2_0 - 0.185933616923199*G0_2_1 - 0.185933616923199*G0_2_2; A[2995] = 0.166687856575008*G0_0_0 + 0.0352295274170263*G0_0_1 + 0.0352295274170262*G0_0_2 + 0.0352295274170272*G0_1_0 + 0.0352295274170275*G0_2_0; A[2996] = -0.78287838704505*G0_0_0 - 0.316413348097372*G0_0_1 - 0.316413348097373*G0_0_2 - 0.316413348097376*G0_1_0 - 0.1859336169232*G0_1_2 - 0.316413348097374*G0_2_0 - 0.185933616923198*G0_2_1; A[2997] = 0.146789697570947*G0_0_0 - 0.298472385060926*G0_0_1 - 0.102752788299664*G0_0_2 - 0.298472385060924*G0_1_0 - 0.782878387045049*G0_1_1 - 0.298472385060925*G0_1_2 - 0.102752788299663*G0_2_0 - 0.298472385060927*G0_2_1; A[2998] = 0.075025845425152*G0_0_1 + 0.0260959462348334*G0_0_2 + 0.0750258454251471*G0_1_0 + 0.293579395141891*G0_1_1 + 0.0587158790283778*G0_1_2 + 0.0260959462348355*G0_2_0 + 0.0587158790283796*G0_2_1; A[2999] = 0.14678969757095*G0_0_0 - 0.102752788299661*G0_0_1 - 0.298472385060922*G0_0_2 - 0.102752788299659*G0_1_0 - 0.298472385060924*G0_1_2 - 0.298472385060923*G0_2_0 - 0.298472385060923*G0_2_1 - 0.782878387045047*G0_2_2; A[3000] = 0.0929668084615994*G0_0_1 + 0.0929668084616024*G0_0_2 + 0.0929668084615984*G0_1_0 - 0.0489298991903158*G0_1_1 - 0.0293579395141906*G0_1_2 + 0.0929668084615998*G0_2_0 - 0.029357939514188*G0_2_1 - 0.0489298991903149*G0_2_2; A[3001] = 0.0260959462348364*G0_0_1 + 0.0750258454251501*G0_0_2 + 0.0260959462348326*G0_1_0 + 0.0587158790283789*G0_1_2 + 0.0750258454251502*G0_2_0 + 0.0587158790283786*G0_2_1 + 0.293579395141894*G0_2_2; A[3002] = 0.19571959676126*G0_0_0 + 0.12069375133611*G0_0_1 + 0.12069375133611*G0_0_2 + 0.120693751336114*G0_1_0 + 0.0456679059109638*G0_1_1 + 0.0717638521457975*G0_1_2 + 0.120693751336112*G0_2_0 + 0.0717638521457967*G0_2_1 + 0.0456679059109614*G0_2_2; A[3003] = 0.146789697570949*G0_0_0 + 0.00489298991903261*G0_0_1 + 0.053822889109351*G0_0_2 + 0.00489298991903092*G0_1_0 + 0.00978597983806056*G0_1_1 + 0.00489298991902956*G0_1_2 + 0.0538228891093454*G0_2_0 + 0.00489298991903041*G0_2_1 - 0.0391439193522538*G0_2_2; A[3004] = -0.0750258454251499*G0_0_1 - 0.0260959462348352*G0_0_2 - 0.0750258454251473*G0_1_0 + 0.0456679059109624*G0_1_1 - 0.0260959462348324*G0_1_2 - 0.0260959462348355*G0_2_0 - 0.0260959462348345*G0_2_1 - 0.0521918924696688*G0_2_2; A[3005] = 0.146789697570947*G0_0_0 + 0.053822889109349*G0_0_1 + 0.0048929899190314*G0_0_2 + 0.053822889109345*G0_1_0 - 0.0391439193522547*G0_1_1 + 0.00489298991903032*G0_1_2 + 0.00489298991903033*G0_2_0 + 0.00489298991903027*G0_2_1 + 0.00978597983806249*G0_2_2; A[3006] = -0.092966808461602*G0_0_1 - 0.0929668084616013*G0_0_2 - 0.0929668084615987*G0_1_0 - 0.0391439193522503*G0_1_1 - 0.0440369092712842*G0_1_2 - 0.0929668084616001*G0_2_0 - 0.044036909271282*G0_2_1 - 0.0391439193522516*G0_2_2; A[3007] = -0.0260959462348336*G0_0_1 - 0.0750258454251501*G0_0_2 - 0.0260959462348323*G0_1_0 - 0.0521918924696691*G0_1_1 - 0.0260959462348327*G0_1_2 - 0.07502584542515*G0_2_0 - 0.0260959462348348*G0_2_1 + 0.0456679059109621*G0_2_2; A[3008] = 0.14352770429159*G0_0_0 + 0.21855354971674*G0_0_1 + 0.185933616923197*G0_0_2 + 0.218553549716742*G0_1_0 + 0.293579395141893*G0_1_1 + 0.234863516113515*G0_1_2 + 0.185933616923198*G0_2_0 + 0.234863516113514*G0_2_1 + 0.176147637085135*G0_2_2; A[3009] = -0.0391439193522503*G0_0_0 - 0.484406001984122*G0_0_1 - 0.28868640522286*G0_0_2 - 0.484406001984122*G0_1_0 - 0.782878387045047*G0_1_1 - 0.484406001984121*G0_1_2 - 0.28868640522286*G0_2_0 - 0.484406001984119*G0_2_1 - 0.185933616923195*G0_2_2; A[3010] = -0.150051690850302*G0_0_0 + 0.316413348097372*G0_0_1 + 0.185933616923199*G0_0_2 + 0.316413348097373*G0_1_0 + 0.185933616923198*G0_1_2 + 0.185933616923198*G0_2_0 + 0.185933616923198*G0_2_1 + 0.371867233846397*G0_2_2; A[3011] = -0.234863516113515*G0_0_0 - 0.141896707651917*G0_0_1 - 0.0195719596761259*G0_0_2 - 0.141896707651915*G0_1_0 - 0.0489298991903161*G0_1_1 - 0.0195719596761277*G0_1_2 - 0.0195719596761252*G0_2_0 - 0.0195719596761252*G0_2_1 - 0.039143919352253*G0_2_2; A[3012] = 0.352295274170272*G0_0_0 + 0.102752788299661*G0_0_1 + 0.102752788299661*G0_0_2 + 0.102752788299662*G0_1_0 + 0.298472385060922*G0_1_2 + 0.10275278829966*G0_2_0 + 0.298472385060922*G0_2_1 - 0.185933616923203*G0_2_2; A[3013] = -0.0521918924696689*G0_0_0 - 0.0260959462348357*G0_0_1 - 0.00978597983806207*G0_0_2 - 0.0260959462348353*G0_1_0 - 0.0587158790283765*G0_1_2 - 0.00978597983806269*G0_2_0 - 0.0587158790283778*G0_2_1 + 0.176147637085137*G0_2_2; A[3014] = 0.143527704291591*G0_0_0 + 0.185933616923196*G0_0_1 + 0.21855354971674*G0_0_2 + 0.185933616923198*G0_1_0 + 0.176147637085137*G0_1_1 + 0.234863516113515*G0_1_2 + 0.218553549716741*G0_2_0 + 0.234863516113513*G0_2_1 + 0.293579395141891*G0_2_2; A[3015] = -0.039143919352251*G0_0_0 - 0.288686405222859*G0_0_1 - 0.484406001984121*G0_0_2 - 0.28868640522286*G0_1_0 - 0.185933616923196*G0_1_1 - 0.484406001984122*G0_1_2 - 0.484406001984121*G0_2_0 - 0.484406001984121*G0_2_1 - 0.782878387045044*G0_2_2; A[3016] = -0.150051690850302*G0_0_0 + 0.1859336169232*G0_0_1 + 0.316413348097373*G0_0_2 + 0.185933616923198*G0_1_0 + 0.371867233846398*G0_1_1 + 0.1859336169232*G0_1_2 + 0.316413348097372*G0_2_0 + 0.185933616923199*G0_2_1; A[3017] = -0.234863516113511*G0_0_0 - 0.0195719596761244*G0_0_1 - 0.141896707651913*G0_0_2 - 0.0195719596761254*G0_1_0 - 0.0391439193522532*G0_1_1 - 0.019571959676125*G0_1_2 - 0.141896707651914*G0_2_0 - 0.0195719596761251*G0_2_1 - 0.0489298991903148*G0_2_2; A[3018] = 0.352295274170269*G0_0_0 + 0.10275278829966*G0_0_1 + 0.102752788299664*G0_0_2 + 0.102752788299661*G0_1_0 - 0.185933616923201*G0_1_1 + 0.298472385060925*G0_1_2 + 0.102752788299662*G0_2_0 + 0.298472385060923*G0_2_1; A[3019] = -0.0521918924696674*G0_0_0 - 0.00978597983806168*G0_0_1 - 0.0260959462348335*G0_0_2 - 0.00978597983806276*G0_1_0 + 0.176147637085136*G0_1_1 - 0.0587158790283774*G0_1_2 - 0.0260959462348348*G0_2_0 - 0.0587158790283792*G0_2_1; A[3020] = -1.17431758056757*G0_0_0 - 0.587158790283781*G0_0_1 - 0.587158790283783*G0_0_2 - 0.587158790283785*G0_1_0 - 0.293579395141891*G0_1_1 - 0.342509294332208*G0_1_2 - 0.58715879028378*G0_2_0 - 0.342509294332207*G0_2_1 - 0.293579395141889*G0_2_2; A[3021] = 1.76147637085136*G0_0_0 + 0.782878387045047*G0_0_1 + 0.782878387045043*G0_0_2 + 0.782878387045047*G0_1_0 + 1.5657567740901*G0_1_1 + 0.782878387045045*G0_1_2 + 0.782878387045043*G0_2_0 + 0.782878387045045*G0_2_1 + 1.56575677409009*G0_2_2; A[3022] = -0.293579395141896*G0_0_0 + 0.29357939514189*G0_0_1 + 0.048929899190311*G0_0_2 + 0.293579395141894*G0_1_0 - 0.293579395141893*G0_1_1 + 0.0489298991903153*G0_1_2 + 0.0489298991903179*G0_2_0 + 0.0489298991903147*G0_2_1 + 0.0978597983806289*G0_2_2; A[3023] = -0.293579395141897*G0_0_0 + 0.0489298991903164*G0_0_1 + 0.293579395141893*G0_0_2 + 0.0489298991903141*G0_1_0 + 0.0978597983806303*G0_1_1 + 0.0489298991903145*G0_1_2 + 0.293579395141893*G0_2_0 + 0.0489298991903122*G0_2_1 - 0.293579395141896*G0_2_2; A[3024] = 0.044036909271284*G0_0_0 + 0.0440369092712839*G0_0_1 + 0.044036909271284*G0_0_2 + 0.0440369092712833*G0_1_0 + 0.0440369092712836*G0_1_1 + 0.0440369092712834*G0_1_2 + 0.0440369092712837*G0_2_0 + 0.0440369092712838*G0_2_1 + 0.0440369092712838*G0_2_2; A[3025] = 0.0440369092712839*G0_0_0; A[3026] = -0.0782878387045052*G0_1_1; A[3027] = 0.0440369092712841*G0_2_2; A[3028] = 0.0962288017409532*G0_1_1 - 0.0352295274170285*G0_1_2 - 0.0352295274170276*G0_2_1; A[3029] = -0.156575677409008*G0_1_1 - 0.0903572138381128*G0_1_2 - 0.0903572138381161*G0_2_1 - 0.1859336169232*G0_2_2; A[3030] = 0.0260959462348345*G0_1_1 + 0.0156575677408998*G0_1_2 + 0.0156575677409002*G0_2_1 + 0.185933616923199*G0_2_2; A[3031] = -0.00260959462348278*G0_1_2 - 0.00260959462348371*G0_2_1 - 0.156575677409011*G0_2_2; A[3032] = -0.0505608958299922*G0_0_0 - 0.00260959462348373*G0_0_2 - 0.00260959462348322*G0_2_0; A[3033] = 0.0391439193522513*G0_0_0 + 0.0319675341376732*G0_0_2 + 0.0319675341376726*G0_2_0 + 0.0260959462348359*G0_2_2; A[3034] = 0.026095946234835*G0_0_0 + 0.0319675341376721*G0_0_2 + 0.0319675341376734*G0_2_0 + 0.0391439193522517*G0_2_2; A[3035] = -0.00260959462348398*G0_0_2 - 0.00260959462348332*G0_2_0 - 0.050560895829992*G0_2_2; A[3036] = -0.156575677409009*G0_0_0 - 0.00260959462348357*G0_0_1 - 0.00260959462348335*G0_1_0; A[3037] = 0.185933616923199*G0_0_0 + 0.015657567740901*G0_0_1 + 0.0156575677409011*G0_1_0 + 0.0260959462348346*G0_1_1; A[3038] = -0.185933616923198*G0_0_0 - 0.0903572138381152*G0_0_1 - 0.0903572138381154*G0_1_0 - 0.156575677409009*G0_1_1; A[3039] = -0.0352295274170272*G0_0_1 - 0.0352295274170284*G0_1_0 + 0.0962288017409529*G0_1_1; A[3040] = -0.0505608958299927*G0_0_0 - 0.0505608958299929*G0_0_1 - 0.0479513012065092*G0_0_2 - 0.0505608958299913*G0_1_0 - 0.0505608958299914*G0_1_1 - 0.0479513012065078*G0_1_2 - 0.0479513012065083*G0_2_0 - 0.0479513012065085*G0_2_1 - 0.0453417065830252*G0_2_2; A[3041] = 0.0391439193522528*G0_0_0 + 0.0391439193522529*G0_0_1 + 0.00717638521457925*G0_0_2 + 0.0391439193522513*G0_1_0 + 0.0391439193522514*G0_1_1 + 0.00717638521457816*G0_1_2 + 0.00717638521457911*G0_2_0 + 0.00717638521457926*G0_2_1 + 0.00130479731174097*G0_2_2; A[3042] = 0.0260959462348344*G0_0_0 + 0.0260959462348345*G0_0_1 - 0.00587158790283738*G0_0_2 + 0.0260959462348348*G0_1_0 + 0.0260959462348346*G0_1_1 - 0.00587158790283699*G0_1_2 - 0.0058715879028371*G0_2_0 - 0.0058715879028372*G0_2_1 + 0.00130479731174213*G0_2_2; A[3043] = 0.00260959462348346*G0_0_2 + 0.00260959462348342*G0_1_2 + 0.0026095946234835*G0_2_0 + 0.00260959462348355*G0_2_1 - 0.0453417065830256*G0_2_2; A[3044] = -0.15657567740901*G0_0_0 - 0.153966082785526*G0_0_1 - 0.15657567740901*G0_0_2 - 0.153966082785525*G0_1_0 - 0.151356488162042*G0_1_1 - 0.153966082785525*G0_1_2 - 0.156575677409009*G0_2_0 - 0.153966082785526*G0_2_1 - 0.156575677409009*G0_2_2; A[3045] = 0.185933616923198*G0_0_0 + 0.170276049182298*G0_0_1 + 0.185933616923199*G0_0_2 + 0.170276049182296*G0_1_0 + 0.180714427676232*G0_1_1 + 0.170276049182296*G0_1_2 + 0.185933616923198*G0_2_0 + 0.170276049182298*G0_2_1 + 0.185933616923199*G0_2_2; A[3046] = -0.185933616923199*G0_0_0 - 0.0955764030850826*G0_0_1 - 0.185933616923199*G0_0_2 - 0.0955764030850833*G0_1_0 - 0.161794866655977*G0_1_1 - 0.0955764030850833*G0_1_2 - 0.185933616923198*G0_2_0 - 0.0955764030850832*G0_2_1 - 0.185933616923199*G0_2_2; A[3047] = 0.035229527417027*G0_0_1 + 0.0352295274170285*G0_1_0 + 0.166687856575009*G0_1_1 + 0.0352295274170285*G0_1_2 + 0.0352295274170274*G0_2_1; A[3048] = -0.0453417065830261*G0_0_0 - 0.0479513012065098*G0_0_1 - 0.0479513012065095*G0_0_2 - 0.0479513012065082*G0_1_0 - 0.0505608958299917*G0_1_1 - 0.0505608958299917*G0_1_2 - 0.0479513012065091*G0_2_0 - 0.0505608958299922*G0_2_1 - 0.0505608958299921*G0_2_2; A[3049] = 0.00130479731174229*G0_0_0 + 0.00717638521457955*G0_0_1 + 0.00717638521457949*G0_0_2 + 0.00717638521457889*G0_1_0 + 0.0391439193522521*G0_1_1 + 0.0391439193522521*G0_1_2 + 0.0071763852145796*G0_2_0 + 0.0391439193522519*G0_2_1 + 0.0391439193522519*G0_2_2; A[3050] = 0.00130479731174152*G0_0_0 - 0.00587158790283802*G0_0_1 - 0.00587158790283791*G0_0_2 - 0.00587158790283735*G0_1_0 + 0.0260959462348354*G0_1_1 + 0.0260959462348356*G0_1_2 - 0.00587158790283746*G0_2_0 + 0.0260959462348352*G0_2_1 + 0.0260959462348353*G0_2_2; A[3051] = -0.0453417065830255*G0_0_0 + 0.00260959462348351*G0_0_1 + 0.00260959462348351*G0_0_2 + 0.00260959462348318*G0_1_0 + 0.00260959462348343*G0_2_0; A[3052] = 0.293579395141893*G0_0_0 + 0.0750258454251508*G0_0_1 + 0.0587158790283796*G0_0_2 + 0.0750258454251517*G0_1_0 + 0.0260959462348366*G0_1_2 + 0.0587158790283786*G0_2_0 + 0.0260959462348354*G0_2_1; A[3053] = -0.782878387045047*G0_0_0 - 0.298472385060925*G0_0_1 - 0.298472385060924*G0_0_2 - 0.298472385060925*G0_1_0 + 0.146789697570943*G0_1_1 - 0.102752788299663*G0_1_2 - 0.298472385060924*G0_2_0 - 0.102752788299663*G0_2_1; A[3054] = -0.316413348097373*G0_0_1 - 0.185933616923198*G0_0_2 - 0.316413348097371*G0_1_0 - 0.782878387045044*G0_1_1 - 0.316413348097374*G0_1_2 - 0.185933616923199*G0_2_0 - 0.316413348097372*G0_2_1; A[3055] = -0.0489298991903171*G0_0_0 + 0.0929668084615971*G0_0_1 - 0.0293579395141925*G0_0_2 + 0.0929668084615975*G0_1_0 + 0.0929668084615981*G0_1_2 - 0.0293579395141878*G0_2_0 + 0.0929668084616005*G0_2_1 - 0.0489298991903143*G0_2_2; A[3056] = -0.102752788299661*G0_0_1 - 0.298472385060925*G0_0_2 - 0.10275278829966*G0_1_0 + 0.146789697570947*G0_1_1 - 0.298472385060922*G0_1_2 - 0.298472385060926*G0_2_0 - 0.298472385060925*G0_2_1 - 0.78287838704505*G0_2_2; A[3057] = 0.0260959462348339*G0_0_1 + 0.0587158790283796*G0_0_2 + 0.0260959462348366*G0_1_0 + 0.075025845425151*G0_1_2 + 0.0587158790283774*G0_2_0 + 0.0750258454251506*G0_2_1 + 0.293579395141893*G0_2_2; A[3058] = 0.293579395141893*G0_0_0 + 0.218553549716743*G0_0_1 + 0.234863516113515*G0_0_2 + 0.218553549716739*G0_1_0 + 0.143527704291589*G0_1_1 + 0.185933616923197*G0_1_2 + 0.234863516113514*G0_2_0 + 0.185933616923198*G0_2_1 + 0.176147637085135*G0_2_2; A[3059] = -0.782878387045047*G0_0_0 - 0.484406001984124*G0_0_1 - 0.484406001984124*G0_0_2 - 0.484406001984119*G0_1_0 - 0.0391439193522513*G0_1_1 - 0.288686405222857*G0_1_2 - 0.484406001984121*G0_2_0 - 0.288686405222861*G0_2_1 - 0.185933616923198*G0_2_2; A[3060] = 0.316413348097375*G0_0_1 + 0.185933616923199*G0_0_2 + 0.316413348097371*G0_1_0 - 0.150051690850299*G0_1_1 + 0.185933616923196*G0_1_2 + 0.1859336169232*G0_2_0 + 0.1859336169232*G0_2_1 + 0.371867233846398*G0_2_2; A[3061] = -0.0489298991903161*G0_0_0 - 0.141896707651915*G0_0_1 - 0.019571959676127*G0_0_2 - 0.141896707651913*G0_1_0 - 0.234863516113511*G0_1_1 - 0.0195719596761261*G0_1_2 - 0.0195719596761243*G0_2_0 - 0.0195719596761253*G0_2_1 - 0.0391439193522507*G0_2_2; A[3062] = 0.102752788299663*G0_0_1 + 0.298472385060924*G0_0_2 + 0.10275278829966*G0_1_0 + 0.352295274170268*G0_1_1 + 0.102752788299661*G0_1_2 + 0.298472385060926*G0_2_0 + 0.102752788299663*G0_2_1 - 0.185933616923198*G0_2_2; A[3063] = -0.026095946234835*G0_0_1 - 0.0587158790283766*G0_0_2 - 0.0260959462348364*G0_1_0 - 0.0521918924696697*G0_1_1 - 0.00978597983806303*G0_1_2 - 0.0587158790283772*G0_2_0 - 0.00978597983806336*G0_2_1 + 0.176147637085135*G0_2_2; A[3064] = 0.0456679059109613*G0_0_0 + 0.120693751336112*G0_0_1 + 0.0717638521457974*G0_0_2 + 0.12069375133611*G0_1_0 + 0.19571959676126*G0_1_1 + 0.12069375133611*G0_1_2 + 0.0717638521457948*G0_2_0 + 0.120693751336111*G0_2_1 + 0.0456679059109603*G0_2_2; A[3065] = 0.00978597983806257*G0_0_0 + 0.00489298991903147*G0_0_1 + 0.00489298991903172*G0_0_2 + 0.00489298991903245*G0_1_0 + 0.146789697570947*G0_1_1 + 0.0538228891093467*G0_1_2 + 0.00489298991903132*G0_2_0 + 0.053822889109347*G0_2_1 - 0.0391439193522523*G0_2_2; A[3066] = 0.0456679059109611*G0_0_0 - 0.0750258454251509*G0_0_1 - 0.0260959462348348*G0_0_2 - 0.0750258454251513*G0_1_0 - 0.0260959462348364*G0_1_2 - 0.0260959462348346*G0_2_0 - 0.0260959462348352*G0_2_1 - 0.0521918924696712*G0_2_2; A[3067] = -0.0391439193522522*G0_0_0 + 0.0538228891093464*G0_0_1 + 0.00489298991902998*G0_0_2 + 0.0538228891093473*G0_1_0 + 0.146789697570946*G0_1_1 + 0.00489298991903219*G0_1_2 + 0.00489298991903226*G0_2_0 + 0.00489298991903282*G0_2_1 + 0.00978597983806447*G0_2_2; A[3068] = -0.0391439193522519*G0_0_0 - 0.0929668084615978*G0_0_1 - 0.0440369092712842*G0_0_2 - 0.0929668084615991*G0_1_0 - 0.092966808461598*G0_1_2 - 0.0440369092712839*G0_2_0 - 0.0929668084616009*G0_2_1 - 0.0391439193522519*G0_2_2; A[3069] = -0.0521918924696697*G0_0_0 - 0.0260959462348336*G0_0_1 - 0.0260959462348332*G0_0_2 - 0.0260959462348343*G0_1_0 - 0.075025845425151*G0_1_2 - 0.0260959462348364*G0_2_0 - 0.0750258454251504*G0_2_1 + 0.04566790591096*G0_2_2; A[3070] = 0.176147637085136*G0_0_0 + 0.1859336169232*G0_0_1 + 0.234863516113514*G0_0_2 + 0.185933616923197*G0_1_0 + 0.14352770429159*G0_1_1 + 0.21855354971674*G0_1_2 + 0.234863516113513*G0_2_0 + 0.218553549716742*G0_2_1 + 0.293579395141892*G0_2_2; A[3071] = -0.0391439193522527*G0_0_0 - 0.0195719596761248*G0_0_1 - 0.0195719596761249*G0_0_2 - 0.0195719596761257*G0_1_0 - 0.234863516113513*G0_1_1 - 0.141896707651912*G0_1_2 - 0.0195719596761262*G0_2_0 - 0.141896707651913*G0_2_1 - 0.0489298991903139*G0_2_2; A[3072] = 0.176147637085136*G0_0_0 - 0.00978597983806329*G0_0_1 - 0.0587158790283797*G0_0_2 - 0.00978597983806338*G0_1_0 - 0.0521918924696703*G0_1_1 - 0.0260959462348364*G0_1_2 - 0.0587158790283778*G0_2_0 - 0.0260959462348353*G0_2_1; A[3073] = -0.185933616923197*G0_0_0 - 0.288686405222862*G0_0_1 - 0.484406001984121*G0_0_2 - 0.288686405222858*G0_1_0 - 0.0391439193522513*G0_1_1 - 0.48440600198412*G0_1_2 - 0.48440600198412*G0_2_0 - 0.484406001984122*G0_2_1 - 0.782878387045043*G0_2_2; A[3074] = -0.1859336169232*G0_0_0 + 0.102752788299661*G0_0_1 + 0.298472385060924*G0_0_2 + 0.10275278829966*G0_1_0 + 0.352295274170269*G0_1_1 + 0.102752788299662*G0_1_2 + 0.298472385060922*G0_2_0 + 0.10275278829966*G0_2_1; A[3075] = 0.371867233846396*G0_0_0 + 0.185933616923199*G0_0_1 + 0.185933616923199*G0_0_2 + 0.185933616923199*G0_1_0 - 0.150051690850299*G0_1_1 + 0.316413348097374*G0_1_2 + 0.185933616923197*G0_2_0 + 0.316413348097373*G0_2_1; A[3076] = -0.293579395141891*G0_0_0 - 0.587158790283783*G0_0_1 - 0.342509294332208*G0_0_2 - 0.58715879028378*G0_1_0 - 1.17431758056756*G0_1_1 - 0.587158790283781*G0_1_2 - 0.342509294332203*G0_2_0 - 0.58715879028378*G0_2_1 - 0.293579395141889*G0_2_2; A[3077] = -0.293579395141895*G0_0_0 + 0.293579395141894*G0_0_1 + 0.0489298991903179*G0_0_2 + 0.29357939514189*G0_1_0 - 0.293579395141893*G0_1_1 + 0.0489298991903147*G0_1_2 + 0.048929899190311*G0_2_0 + 0.0489298991903153*G0_2_1 + 0.0978597983806289*G0_2_2; A[3078] = 1.5657567740901*G0_0_0 + 0.782878387045045*G0_0_1 + 0.782878387045046*G0_0_2 + 0.782878387045045*G0_1_0 + 1.76147637085135*G0_1_1 + 0.782878387045042*G0_1_2 + 0.782878387045046*G0_2_0 + 0.782878387045042*G0_2_1 + 1.56575677409009*G0_2_2; A[3079] = 0.0978597983806328*G0_0_0 + 0.0489298991903145*G0_0_1 + 0.0489298991903143*G0_0_2 + 0.0489298991903152*G0_1_0 - 0.293579395141892*G0_1_1 + 0.29357939514189*G0_1_2 + 0.0489298991903124*G0_2_0 + 0.293579395141893*G0_2_1 - 0.293579395141895*G0_2_2; A[3080] = 0.0440369092712843*G0_0_0 + 0.0440369092712844*G0_0_1 + 0.0440369092712843*G0_0_2 + 0.0440369092712841*G0_1_0 + 0.0440369092712842*G0_1_1 + 0.0440369092712841*G0_1_2 + 0.0440369092712837*G0_2_0 + 0.0440369092712838*G0_2_1 + 0.0440369092712838*G0_2_2; A[3081] = 0.044036909271284*G0_0_0; A[3082] = 0.0440369092712839*G0_1_1; A[3083] = -0.0782878387045049*G0_2_2; A[3084] = -0.15657567740901*G0_1_1 - 0.0026095946234836*G0_1_2 - 0.00260959462348427*G0_2_1; A[3085] = 0.185933616923199*G0_1_1 + 0.0156575677409007*G0_1_2 + 0.0156575677409033*G0_2_1 + 0.0260959462348368*G0_2_2; A[3086] = -0.185933616923198*G0_1_1 - 0.0903572138381154*G0_1_2 - 0.0903572138381166*G0_2_1 - 0.15657567740901*G0_2_2; A[3087] = -0.0352295274170264*G0_1_2 - 0.0352295274170262*G0_2_1 + 0.0962288017409553*G0_2_2; A[3088] = -0.15657567740901*G0_0_0 - 0.0026095946234836*G0_0_2 - 0.0026095946234834*G0_2_0; A[3089] = 0.1859336169232*G0_0_0 + 0.0156575677409011*G0_0_2 + 0.0156575677409009*G0_2_0 + 0.0260959462348358*G0_2_2; A[3090] = -0.1859336169232*G0_0_0 - 0.0903572138381167*G0_0_2 - 0.0903572138381174*G0_2_0 - 0.156575677409012*G0_2_2; A[3091] = -0.0352295274170267*G0_0_2 - 0.0352295274170263*G0_2_0 + 0.0962288017409554*G0_2_2; A[3092] = -0.050560895829992*G0_0_0 - 0.00260959462348363*G0_0_1 - 0.00260959462348355*G0_1_0; A[3093] = 0.0391439193522523*G0_0_0 + 0.0319675341376738*G0_0_1 + 0.031967534137673*G0_1_0 + 0.0260959462348357*G0_1_1; A[3094] = 0.0260959462348347*G0_0_0 + 0.0319675341376715*G0_0_1 + 0.0319675341376732*G0_1_0 + 0.0391439193522522*G0_1_1; A[3095] = -0.00260959462348264*G0_0_1 - 0.00260959462348333*G0_1_0 - 0.0505608958299922*G0_1_1; A[3096] = -0.15657567740901*G0_0_0 - 0.156575677409009*G0_0_1 - 0.153966082785527*G0_0_2 - 0.156575677409009*G0_1_0 - 0.156575677409009*G0_1_1 - 0.153966082785526*G0_1_2 - 0.153966082785525*G0_2_0 - 0.153966082785525*G0_2_1 - 0.151356488162042*G0_2_2; A[3097] = 0.185933616923198*G0_0_0 + 0.185933616923197*G0_0_1 + 0.170276049182298*G0_0_2 + 0.185933616923197*G0_1_0 + 0.185933616923198*G0_1_1 + 0.170276049182298*G0_1_2 + 0.170276049182296*G0_2_0 + 0.170276049182297*G0_2_1 + 0.180714427676231*G0_2_2; A[3098] = -0.185933616923199*G0_0_0 - 0.185933616923198*G0_0_1 - 0.0955764030850831*G0_0_2 - 0.185933616923197*G0_1_0 - 0.185933616923197*G0_1_1 - 0.0955764030850829*G0_1_2 - 0.095576403085083*G0_2_0 - 0.0955764030850831*G0_2_1 - 0.161794866655976*G0_2_2; A[3099] = 0.035229527417027*G0_0_2 + 0.0352295274170271*G0_1_2 + 0.035229527417026*G0_2_0 + 0.035229527417026*G0_2_1 + 0.166687856575008*G0_2_2; A[3100] = -0.0505608958299931*G0_0_0 - 0.0479513012065103*G0_0_1 - 0.0505608958299931*G0_0_2 - 0.0479513012065089*G0_1_0 - 0.045341706583026*G0_1_1 - 0.0479513012065088*G0_1_2 - 0.0505608958299926*G0_2_0 - 0.047951301206509*G0_2_1 - 0.0505608958299927*G0_2_2; A[3101] = 0.0391439193522522*G0_0_0 + 0.00717638521458078*G0_0_1 + 0.0391439193522523*G0_0_2 + 0.00717638521457935*G0_1_0 + 0.00130479731174179*G0_1_1 + 0.00717638521457941*G0_1_2 + 0.0391439193522516*G0_2_0 + 0.00717638521457941*G0_2_1 + 0.0391439193522514*G0_2_2; A[3102] = 0.0260959462348351*G0_0_0 - 0.00587158790283834*G0_0_1 + 0.0260959462348349*G0_0_2 - 0.00587158790283824*G0_1_0 + 0.0013047973117417*G0_1_1 - 0.00587158790283847*G0_1_2 + 0.0260959462348331*G0_2_0 - 0.00587158790283796*G0_2_1 + 0.0260959462348332*G0_2_2; A[3103] = 0.00260959462348327*G0_0_1 + 0.00260959462348334*G0_1_0 - 0.0453417065830256*G0_1_1 + 0.0026095946234836*G0_1_2 + 0.00260959462348362*G0_2_1; A[3104] = -0.0453417065830263*G0_0_0 - 0.047951301206509*G0_0_1 - 0.0479513012065089*G0_0_2 - 0.0479513012065094*G0_1_0 - 0.050560895829992*G0_1_1 - 0.0505608958299921*G0_1_2 - 0.047951301206509*G0_2_0 - 0.0505608958299926*G0_2_1 - 0.0505608958299927*G0_2_2; A[3105] = 0.00130479731174247*G0_0_0 + 0.00717638521458002*G0_0_1 + 0.00717638521458003*G0_0_2 + 0.00717638521457983*G0_1_0 + 0.0391439193522519*G0_1_1 + 0.039143919352252*G0_1_2 + 0.00717638521457991*G0_2_0 + 0.0391439193522524*G0_2_1 + 0.0391439193522526*G0_2_2; A[3106] = 0.00130479731174075*G0_0_0 - 0.00587158790283852*G0_0_1 - 0.00587158790283847*G0_0_2 - 0.00587158790283788*G0_1_0 + 0.0260959462348356*G0_1_1 + 0.0260959462348356*G0_1_2 - 0.00587158790283841*G0_2_0 + 0.0260959462348353*G0_2_1 + 0.0260959462348352*G0_2_2; A[3107] = -0.0453417065830252*G0_0_0 + 0.00260959462348351*G0_0_1 + 0.00260959462348349*G0_0_2 + 0.00260959462348376*G0_1_0 + 0.00260959462348384*G0_2_0; A[3108] = 0.293579395141896*G0_0_0 + 0.0587158790283811*G0_0_1 + 0.075025845425154*G0_0_2 + 0.0587158790283796*G0_1_0 + 0.0260959462348353*G0_1_2 + 0.0750258454251527*G0_2_0 + 0.0260959462348366*G0_2_1; A[3109] = -0.0489298991903158*G0_0_0 - 0.0293579395141895*G0_0_1 + 0.0929668084615977*G0_0_2 - 0.0293579395141874*G0_1_0 - 0.0489298991903127*G0_1_1 + 0.0929668084616011*G0_1_2 + 0.0929668084616*G0_2_0 + 0.0929668084616013*G0_2_1; A[3110] = 0.0587158790283802*G0_0_1 + 0.0260959462348368*G0_0_2 + 0.058715879028378*G0_1_0 + 0.293579395141892*G0_1_1 + 0.0750258454251511*G0_1_2 + 0.0260959462348366*G0_2_0 + 0.0750258454251521*G0_2_1; A[3111] = -0.78287838704505*G0_0_0 - 0.298472385060928*G0_0_1 - 0.298472385060927*G0_0_2 - 0.298472385060923*G0_1_0 - 0.102752788299661*G0_1_2 - 0.298472385060927*G0_2_0 - 0.102752788299666*G0_2_1 + 0.146789697570946*G0_2_2; A[3112] = -0.298472385060921*G0_0_1 - 0.102752788299659*G0_0_2 - 0.298472385060924*G0_1_0 - 0.782878387045045*G0_1_1 - 0.298472385060925*G0_1_2 - 0.10275278829966*G0_2_0 - 0.298472385060923*G0_2_1 + 0.14678969757095*G0_2_2; A[3113] = -0.185933616923198*G0_0_1 - 0.316413348097372*G0_0_2 - 0.185933616923196*G0_1_0 - 0.316413348097372*G0_1_2 - 0.316413348097371*G0_2_0 - 0.316413348097372*G0_2_1 - 0.782878387045048*G0_2_2; A[3114] = 0.293579395141892*G0_0_0 + 0.234863516113515*G0_0_1 + 0.218553549716742*G0_0_2 + 0.234863516113514*G0_1_0 + 0.176147637085136*G0_1_1 + 0.185933616923198*G0_1_2 + 0.218553549716741*G0_2_0 + 0.185933616923197*G0_2_1 + 0.143527704291592*G0_2_2; A[3115] = -0.0489298991903176*G0_0_0 - 0.0195719596761286*G0_0_1 - 0.141896707651916*G0_0_2 - 0.0195719596761273*G0_1_0 - 0.0391439193522537*G0_1_1 - 0.0195719596761258*G0_1_2 - 0.141896707651914*G0_2_0 - 0.0195719596761274*G0_2_1 - 0.234863516113511*G0_2_2; A[3116] = -0.0587158790283767*G0_0_1 - 0.0260959462348348*G0_0_2 - 0.0587158790283778*G0_1_0 + 0.176147637085137*G0_1_1 - 0.00978597983806184*G0_1_2 - 0.0260959462348363*G0_2_0 - 0.0097859798380607*G0_2_1 - 0.0521918924696698*G0_2_2; A[3117] = -0.782878387045047*G0_0_0 - 0.484406001984122*G0_0_1 - 0.484406001984123*G0_0_2 - 0.484406001984119*G0_1_0 - 0.185933616923197*G0_1_1 - 0.288686405222859*G0_1_2 - 0.48440600198412*G0_2_0 - 0.288686405222858*G0_2_1 - 0.039143919352253*G0_2_2; A[3118] = 0.298472385060924*G0_0_1 + 0.102752788299663*G0_0_2 + 0.298472385060925*G0_1_0 - 0.185933616923199*G0_1_1 + 0.102752788299661*G0_1_2 + 0.102752788299661*G0_2_0 + 0.102752788299658*G0_2_1 + 0.352295274170269*G0_2_2; A[3119] = 0.185933616923198*G0_0_1 + 0.316413348097373*G0_0_2 + 0.185933616923196*G0_1_0 + 0.371867233846396*G0_1_1 + 0.185933616923196*G0_1_2 + 0.316413348097371*G0_2_0 + 0.185933616923199*G0_2_1 - 0.150051690850301*G0_2_2; A[3120] = 0.176147637085136*G0_0_0 + 0.234863516113512*G0_0_1 + 0.185933616923197*G0_0_2 + 0.234863516113514*G0_1_0 + 0.293579395141892*G0_1_1 + 0.218553549716741*G0_1_2 + 0.185933616923197*G0_2_0 + 0.21855354971674*G0_2_1 + 0.143527704291591*G0_2_2; A[3121] = -0.0391439193522527*G0_0_0 - 0.0195719596761246*G0_0_1 - 0.019571959676126*G0_0_2 - 0.0195719596761258*G0_1_0 - 0.0489298991903165*G0_1_1 - 0.141896707651916*G0_1_2 - 0.0195719596761247*G0_2_0 - 0.141896707651915*G0_2_1 - 0.234863516113516*G0_2_2; A[3122] = 0.176147637085136*G0_0_0 - 0.0587158790283809*G0_0_1 - 0.0097859798380623*G0_0_2 - 0.058715879028379*G0_1_0 - 0.0260959462348362*G0_1_2 - 0.00978597983806374*G0_2_0 - 0.0260959462348367*G0_2_1 - 0.0521918924696707*G0_2_2; A[3123] = -0.185933616923196*G0_0_0 - 0.484406001984122*G0_0_1 - 0.288686405222859*G0_0_2 - 0.484406001984124*G0_1_0 - 0.782878387045047*G0_1_1 - 0.484406001984121*G0_1_2 - 0.288686405222862*G0_2_0 - 0.484406001984125*G0_2_1 - 0.0391439193522516*G0_2_2; A[3124] = -0.1859336169232*G0_0_0 + 0.298472385060927*G0_0_1 + 0.102752788299662*G0_0_2 + 0.298472385060926*G0_1_0 + 0.102752788299665*G0_1_2 + 0.102752788299664*G0_2_0 + 0.102752788299666*G0_2_1 + 0.352295274170276*G0_2_2; A[3125] = 0.371867233846398*G0_0_0 + 0.185933616923198*G0_0_1 + 0.185933616923197*G0_0_2 + 0.185933616923198*G0_1_0 + 0.316413348097371*G0_1_2 + 0.1859336169232*G0_2_0 + 0.316413348097372*G0_2_1 - 0.150051690850302*G0_2_2; A[3126] = 0.0456679059109616*G0_0_0 + 0.0717638521457957*G0_0_1 + 0.120693751336111*G0_0_2 + 0.0717638521457957*G0_1_0 + 0.0456679059109608*G0_1_1 + 0.120693751336111*G0_1_2 + 0.120693751336111*G0_2_0 + 0.120693751336111*G0_2_1 + 0.19571959676126*G0_2_2; A[3127] = 0.00978597983806366*G0_0_0 + 0.00489298991903163*G0_0_1 + 0.00489298991903326*G0_0_2 + 0.00489298991903203*G0_1_0 - 0.0391439193522515*G0_1_1 + 0.0538228891093476*G0_1_2 + 0.00489298991903267*G0_2_0 + 0.0538228891093477*G0_2_1 + 0.146789697570949*G0_2_2; A[3128] = 0.0456679059109601*G0_0_0 - 0.0260959462348354*G0_0_1 - 0.0750258454251535*G0_0_2 - 0.0260959462348353*G0_1_0 - 0.0521918924696713*G0_1_1 - 0.026095946234835*G0_1_2 - 0.0750258454251514*G0_2_0 - 0.0260959462348362*G0_2_1; A[3129] = -0.0391439193522529*G0_0_0 + 0.00489298991903089*G0_0_1 + 0.0538228891093457*G0_0_2 + 0.0048929899190319*G0_1_0 + 0.00978597983806222*G0_1_1 + 0.00489298991903109*G0_1_2 + 0.0538228891093483*G0_2_0 + 0.00489298991903056*G0_2_1 + 0.146789697570945*G0_2_2; A[3130] = -0.0391439193522515*G0_0_0 - 0.0440369092712827*G0_0_1 - 0.0929668084615981*G0_0_2 - 0.0440369092712843*G0_1_0 - 0.0391439193522521*G0_1_1 - 0.0929668084616008*G0_1_2 - 0.0929668084616009*G0_2_0 - 0.0929668084615993*G0_2_1; A[3131] = -0.0521918924696695*G0_0_0 - 0.026095946234835*G0_0_1 - 0.0260959462348359*G0_0_2 - 0.0260959462348349*G0_1_0 + 0.0456679059109609*G0_1_1 - 0.0750258454251511*G0_1_2 - 0.0260959462348325*G0_2_0 - 0.0750258454251485*G0_2_1; A[3132] = -0.293579395141891*G0_0_0 - 0.342509294332208*G0_0_1 - 0.587158790283784*G0_0_2 - 0.34250929433221*G0_1_0 - 0.293579395141893*G0_1_1 - 0.587158790283786*G0_1_2 - 0.587158790283786*G0_2_0 - 0.587158790283782*G0_2_1 - 1.17431758056757*G0_2_2; A[3133] = -0.293579395141897*G0_0_0 + 0.0489298991903141*G0_0_1 + 0.293579395141893*G0_0_2 + 0.0489298991903164*G0_1_0 + 0.0978597983806302*G0_1_1 + 0.0489298991903121*G0_1_2 + 0.293579395141893*G0_2_0 + 0.0489298991903145*G0_2_1 - 0.293579395141896*G0_2_2; A[3134] = 0.0978597983806328*G0_0_0 + 0.0489298991903152*G0_0_1 + 0.0489298991903124*G0_0_2 + 0.0489298991903145*G0_1_0 - 0.293579395141892*G0_1_1 + 0.293579395141893*G0_1_2 + 0.0489298991903143*G0_2_0 + 0.29357939514189*G0_2_1 - 0.293579395141895*G0_2_2; A[3135] = 1.5657567740901*G0_0_0 + 0.782878387045044*G0_0_1 + 0.782878387045048*G0_0_2 + 0.782878387045044*G0_1_0 + 1.56575677409009*G0_1_1 + 0.782878387045049*G0_1_2 + 0.782878387045048*G0_2_0 + 0.782878387045049*G0_2_1 + 1.76147637085136*G0_2_2; } /// Constructor poisson3d_5_cell_integral_1_otherwise::poisson3d_5_cell_integral_1_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson3d_5_cell_integral_1_otherwise::~poisson3d_5_cell_integral_1_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson3d_5_cell_integral_1_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 56 // Number of operations (multiply-add pairs) for tensor contraction: 3108 // Total number of operations (multiply-add pairs): 3167 // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0 = det*w[0][0]*(1.0); const double G0_1 = det*w[0][1]*(1.0); const double G0_2 = det*w[0][2]*(1.0); const double G0_3 = det*w[0][3]*(1.0); const double G0_4 = det*w[0][4]*(1.0); const double G0_5 = det*w[0][5]*(1.0); const double G0_6 = det*w[0][6]*(1.0); const double G0_7 = det*w[0][7]*(1.0); const double G0_8 = det*w[0][8]*(1.0); const double G0_9 = det*w[0][9]*(1.0); const double G0_10 = det*w[0][10]*(1.0); const double G0_11 = det*w[0][11]*(1.0); const double G0_12 = det*w[0][12]*(1.0); const double G0_13 = det*w[0][13]*(1.0); const double G0_14 = det*w[0][14]*(1.0); const double G0_15 = det*w[0][15]*(1.0); const double G0_16 = det*w[0][16]*(1.0); const double G0_17 = det*w[0][17]*(1.0); const double G0_18 = det*w[0][18]*(1.0); const double G0_19 = det*w[0][19]*(1.0); const double G0_20 = det*w[0][20]*(1.0); const double G0_21 = det*w[0][21]*(1.0); const double G0_22 = det*w[0][22]*(1.0); const double G0_23 = det*w[0][23]*(1.0); const double G0_24 = det*w[0][24]*(1.0); const double G0_25 = det*w[0][25]*(1.0); const double G0_26 = det*w[0][26]*(1.0); const double G0_27 = det*w[0][27]*(1.0); const double G0_28 = det*w[0][28]*(1.0); const double G0_29 = det*w[0][29]*(1.0); const double G0_30 = det*w[0][30]*(1.0); const double G0_31 = det*w[0][31]*(1.0); const double G0_32 = det*w[0][32]*(1.0); const double G0_33 = det*w[0][33]*(1.0); const double G0_34 = det*w[0][34]*(1.0); const double G0_35 = det*w[0][35]*(1.0); const double G0_36 = det*w[0][36]*(1.0); const double G0_37 = det*w[0][37]*(1.0); const double G0_38 = det*w[0][38]*(1.0); const double G0_39 = det*w[0][39]*(1.0); const double G0_40 = det*w[0][40]*(1.0); const double G0_41 = det*w[0][41]*(1.0); const double G0_42 = det*w[0][42]*(1.0); const double G0_43 = det*w[0][43]*(1.0); const double G0_44 = det*w[0][44]*(1.0); const double G0_45 = det*w[0][45]*(1.0); const double G0_46 = det*w[0][46]*(1.0); const double G0_47 = det*w[0][47]*(1.0); const double G0_48 = det*w[0][48]*(1.0); const double G0_49 = det*w[0][49]*(1.0); const double G0_50 = det*w[0][50]*(1.0); const double G0_51 = det*w[0][51]*(1.0); const double G0_52 = det*w[0][52]*(1.0); const double G0_53 = det*w[0][53]*(1.0); const double G0_54 = det*w[0][54]*(1.0); const double G0_55 = det*w[0][55]*(1.0); // Compute element tensor A[0] = 8.34957866207909e-05*G0_0 + 9.27851405282009e-06*G0_1 + 9.27851405281996e-06*G0_2 + 9.2785140528201e-06*G0_3 + 4.07498237359385e-06*G0_4 + 1.52962392545734e-05*G0_5 + 1.52962392545729e-05*G0_6 + 4.07498237359359e-06*G0_7 + 4.07498237359345e-06*G0_8 + 1.52962392545733e-05*G0_9 + 1.52962392545732e-05*G0_10 + 4.07498237359376e-06*G0_11 + 4.07498237359351e-06*G0_12 + 1.52962392545735e-05*G0_13 + 1.52962392545738e-05*G0_14 + 4.07498237359346e-06*G0_15 - 6.04020786312488e-05*G0_16 + 6.04020786312485e-05*G0_17 - 4.4383182404018e-05*G0_18 + 1.81868671452013e-05*G0_19 - 6.04020786312478e-05*G0_20 + 6.04020786312478e-05*G0_21 - 4.43831824040177e-05*G0_22 + 1.81868671452012e-05*G0_23 - 6.0402078631248e-05*G0_24 + 6.04020786312488e-05*G0_25 - 4.4383182404018e-05*G0_26 + 1.81868671452016e-05*G0_27 + 0.000173437673437682*G0_28 - 1.77151327324942e-05*G0_29 + 0.000173437673437682*G0_30 - 1.77151327324943e-05*G0_31 - 1.77151327324945e-05*G0_32 + 0.000173437673437683*G0_33 + 0.000149650214754388*G0_34 - 0.000121496703527958*G0_35 + 9.59527869250135e-05*G0_36 - 0.00012149670352796*G0_37 + 3.98465025201159e-05*G0_38 + 9.59527869250142e-05*G0_39 + 0.00014965021475439*G0_40 - 0.000121496703527959*G0_41 + 9.59527869250138e-05*G0_42 - 0.00012149670352796*G0_43 + 3.98465025201155e-05*G0_44 + 9.59527869250147e-05*G0_45 + 0.000149650214754389*G0_46 - 0.000121496703527959*G0_47 + 9.59527869250144e-05*G0_48 - 0.00012149670352796*G0_49 + 3.98465025201155e-05*G0_50 + 9.5952786925014e-05*G0_51 - 0.000280029576904591*G0_52 + 0.000204250963799584*G0_53 + 0.000204250963799586*G0_54 + 0.000204250963799585*G0_55; A[1] = 9.27851405282009e-06*G0_0 + 8.34957866207907e-05*G0_1 + 9.27851405281996e-06*G0_2 + 9.27851405281993e-06*G0_3 + 4.07498237359405e-06*G0_4 + 1.52962392545731e-05*G0_5 + 1.52962392545732e-05*G0_6 + 4.07498237359368e-06*G0_7 - 6.04020786312483e-05*G0_8 + 6.04020786312483e-05*G0_9 - 4.43831824040182e-05*G0_10 + 1.81868671452016e-05*G0_11 - 6.04020786312486e-05*G0_12 + 6.04020786312484e-05*G0_13 - 4.43831824040178e-05*G0_14 + 1.81868671452015e-05*G0_15 + 4.07498237359319e-06*G0_16 + 1.52962392545734e-05*G0_17 + 1.52962392545731e-05*G0_18 + 4.07498237359385e-06*G0_19 + 4.07498237359389e-06*G0_20 + 1.52962392545731e-05*G0_21 + 1.52962392545732e-05*G0_22 + 4.07498237359383e-06*G0_23 + 1.81868671452017e-05*G0_24 - 4.43831824040179e-05*G0_25 + 6.04020786312484e-05*G0_26 - 6.04020786312483e-05*G0_27 + 0.000149650214754389*G0_28 - 0.000121496703527959*G0_29 + 9.59527869250137e-05*G0_30 - 0.00012149670352796*G0_31 + 3.98465025201158e-05*G0_32 + 9.59527869250137e-05*G0_33 + 0.000173437673437682*G0_34 - 1.77151327324941e-05*G0_35 + 0.000173437673437682*G0_36 - 1.77151327324949e-05*G0_37 - 1.77151327324946e-05*G0_38 + 0.000173437673437682*G0_39 + 9.59527869250138e-05*G0_40 - 0.000121496703527959*G0_41 + 0.000149650214754389*G0_42 + 3.98465025201159e-05*G0_43 - 0.000121496703527959*G0_44 + 9.59527869250137e-05*G0_45 + 9.59527869250138e-05*G0_46 - 0.00012149670352796*G0_47 + 0.000149650214754389*G0_48 + 3.98465025201156e-05*G0_49 - 0.00012149670352796*G0_50 + 9.59527869250135e-05*G0_51 + 0.000204250963799583*G0_52 - 0.000280029576904591*G0_53 + 0.000204250963799585*G0_54 + 0.000204250963799585*G0_55; A[2] = 9.27851405281995e-06*G0_0 + 9.27851405281996e-06*G0_1 + 8.3495786620791e-05*G0_2 + 9.27851405282004e-06*G0_3 - 6.04020786312489e-05*G0_4 + 6.04020786312487e-05*G0_5 - 4.43831824040186e-05*G0_6 + 1.81868671452014e-05*G0_7 + 4.0749823735937e-06*G0_8 + 1.5296239254573e-05*G0_9 + 1.52962392545734e-05*G0_10 + 4.07498237359363e-06*G0_11 + 1.81868671452015e-05*G0_12 - 4.43831824040185e-05*G0_13 + 6.04020786312492e-05*G0_14 - 6.04020786312494e-05*G0_15 + 4.07498237359353e-06*G0_16 + 1.52962392545731e-05*G0_17 + 1.52962392545737e-05*G0_18 + 4.07498237359358e-06*G0_19 + 1.81868671452023e-05*G0_20 - 4.43831824040195e-05*G0_21 + 6.04020786312498e-05*G0_22 - 6.04020786312495e-05*G0_23 + 4.07498237359434e-06*G0_24 + 1.52962392545734e-05*G0_25 + 1.52962392545737e-05*G0_26 + 4.0749823735938e-06*G0_27 + 9.59527869250135e-05*G0_28 - 0.00012149670352796*G0_29 + 0.000149650214754389*G0_30 + 3.98465025201166e-05*G0_31 - 0.00012149670352796*G0_32 + 9.59527869250134e-05*G0_33 + 9.59527869250138e-05*G0_34 - 0.000121496703527959*G0_35 + 0.000149650214754389*G0_36 + 3.98465025201158e-05*G0_37 - 0.00012149670352796*G0_38 + 9.59527869250137e-05*G0_39 + 0.000173437673437683*G0_40 - 1.77151327324935e-05*G0_41 + 0.000173437673437683*G0_42 - 1.77151327324943e-05*G0_43 - 1.77151327324948e-05*G0_44 + 0.000173437673437683*G0_45 + 9.59527869250146e-05*G0_46 + 3.98465025201168e-05*G0_47 + 9.59527869250144e-05*G0_48 - 0.00012149670352796*G0_49 - 0.000121496703527961*G0_50 + 0.000149650214754389*G0_51 + 0.000204250963799588*G0_52 + 0.000204250963799586*G0_53 - 0.000280029576904595*G0_54 + 0.000204250963799584*G0_55; A[3] = 9.2785140528201e-06*G0_0 + 9.27851405281993e-06*G0_1 + 9.27851405282004e-06*G0_2 + 8.34957866207912e-05*G0_3 + 1.81868671452016e-05*G0_4 - 4.43831824040185e-05*G0_5 + 6.04020786312485e-05*G0_6 - 6.04020786312489e-05*G0_7 + 1.81868671452016e-05*G0_8 - 4.43831824040187e-05*G0_9 + 6.04020786312489e-05*G0_10 - 6.04020786312488e-05*G0_11 + 4.07498237359377e-06*G0_12 + 1.52962392545733e-05*G0_13 + 1.52962392545738e-05*G0_14 + 4.07498237359358e-06*G0_15 + 1.8186867145201e-05*G0_16 - 4.43831824040184e-05*G0_17 + 6.04020786312487e-05*G0_18 - 6.04020786312488e-05*G0_19 + 4.07498237359402e-06*G0_20 + 1.52962392545731e-05*G0_21 + 1.52962392545733e-05*G0_22 + 4.07498237359384e-06*G0_23 + 4.07498237359401e-06*G0_24 + 1.5296239254574e-05*G0_25 + 1.52962392545732e-05*G0_26 + 4.07498237359414e-06*G0_27 + 9.59527869250138e-05*G0_28 + 3.98465025201172e-05*G0_29 + 9.59527869250141e-05*G0_30 - 0.00012149670352796*G0_31 - 0.000121496703527961*G0_32 + 0.00014965021475439*G0_33 + 9.59527869250128e-05*G0_34 + 3.98465025201176e-05*G0_35 + 9.59527869250136e-05*G0_36 - 0.00012149670352796*G0_37 - 0.000121496703527961*G0_38 + 0.000149650214754389*G0_39 + 9.59527869250139e-05*G0_40 + 3.98465025201171e-05*G0_41 + 9.5952786925014e-05*G0_42 - 0.00012149670352796*G0_43 - 0.00012149670352796*G0_44 + 0.00014965021475439*G0_45 + 0.000173437673437683*G0_46 - 1.77151327324946e-05*G0_47 + 0.000173437673437683*G0_48 - 1.77151327324942e-05*G0_49 - 1.77151327324942e-05*G0_50 + 0.000173437673437683*G0_51 + 0.000204250963799585*G0_52 + 0.000204250963799587*G0_53 + 0.000204250963799586*G0_54 - 0.000280029576904594*G0_55; A[4] = 4.07498237359386e-06*G0_0 + 4.07498237359404e-06*G0_1 - 6.04020786312489e-05*G0_2 + 1.81868671452016e-05*G0_3 + 0.000886258481744639*G0_4 - 0.000858657000150102*G0_5 + 0.000659424487549523*G0_6 - 0.000299350614020769*G0_7 + 5.50356814824434e-05*G0_8 - 0.000178405940124699*G0_9 + 9.04994032887593e-05*G0_10 - 0.000144029549411501*G0_11 - 0.000144029549411502*G0_12 + 0.0003573137253693*G0_13 - 0.000456929981669589*G0_14 + 0.00044312924087232*G0_15 + 5.50356814824436e-05*G0_16 - 0.000178405940124699*G0_17 + 9.04994032887595e-05*G0_18 - 0.000144029549411502*G0_19 - 0.000144029549411503*G0_20 + 0.000357313725369301*G0_21 - 0.00045692998166959*G0_22 + 0.000443129240872321*G0_23 + 2.75178407412211e-05*G0_24 - 2.24993895422146e-05*G0_25 - 2.24993895422148e-05*G0_26 + 2.75178407412214e-05*G0_27 - 4.01476095920541e-05*G0_28 - 5.52029631890776e-05*G0_29 + 0.000110405926378156*G0_30 - 9.28413471816316e-05*G0_31 + 0.000308634748738931*G0_32 - 0.000341254681532476*G0_33 - 4.01476095920544e-05*G0_34 - 5.52029631890776e-05*G0_35 + 0.000110405926378158*G0_36 - 9.28413471816295e-05*G0_37 + 0.00030863474873893*G0_38 - 0.000341254681532475*G0_39 - 0.00026681432208054*G0_40 + 0.000135498182373187*G0_41 - 0.000266814322080539*G0_42 - 8.78228959826289e-06*G0_43 - 8.7822895982625e-06*G0_44 - 0.000555375266023443*G0_45 - 2.00738047960281e-05*G0_46 + 2.8856094394288e-05*G0_47 - 2.00738047960269e-05*G0_48 - 2.76014815945372e-05*G0_49 - 2.76014815945387e-05*G0_50 + 5.52029631890785e-05*G0_51 - 0.000301107071940421*G0_52 - 0.000301107071940421*G0_53 + 0.000727675423856025*G0_54 - 0.000777859935846086*G0_55; A[5] = 1.52962392545734e-05*G0_0 + 1.52962392545731e-05*G0_1 + 6.04020786312487e-05*G0_2 - 4.43831824040185e-05*G0_3 - 0.000858657000150102*G0_4 + 0.00168419222238676*G0_5 - 0.00130178624102242*G0_6 + 0.000659424487549524*G0_7 - 0.0001784059401247*G0_8 + 0.000347778668091186*G0_9 - 0.000261963152588167*G0_10 + 0.0003573137253693*G0_11 + 9.04994032887599e-05*G0_12 - 0.000261963152588166*G0_13 + 0.000328541271828326*G0_14 - 0.00045692998166959*G0_15 - 0.000178405940124699*G0_16 + 0.000347778668091186*G0_17 - 0.000261963152588166*G0_18 + 0.0003573137253693*G0_19 + 9.04994032887608e-05*G0_20 - 0.000261963152588168*G0_21 + 0.000328541271828327*G0_22 - 0.00045692998166959*G0_23 - 2.24993895422141e-05*G0_24 + 1.12078743444484e-05*G0_25 + 1.12078743444493e-05*G0_26 - 2.24993895422149e-05*G0_27 + 0.000127970505574677*G0_28 - 0.000120442828776168*G0_29 - 0.000110405926378154*G0_30 - 7.02583167860953e-05*G0_31 - 4.51660607910628e-05*G0_32 + 0.000491808217502687*G0_33 + 0.000127970505574678*G0_34 - 0.000120442828776169*G0_35 - 0.000110405926378155*G0_36 - 7.02583167860984e-05*G0_37 - 4.51660607910627e-05*G0_38 + 0.000491808217502686*G0_39 + 0.00017062734076624*G0_40 - 0.000122952054375671*G0_41 + 0.000170627340766238*G0_42 - 0.000148044310370707*G0_43 - 0.000148044310370706*G0_44 + 0.000873210508627223*G0_45 - 0.000109569517844986*G0_46 - 2.25830303955294e-05*G0_47 - 0.000109569517844988*G0_48 + 0.000253431785549852*G0_49 + 0.000253431785549855*G0_50 - 0.000623960765743207*G0_51 + 6.27306399875851e-05*G0_52 + 6.27306399875866e-05*G0_53 - 0.000903321215821268*G0_54 + 0.00110405926378155*G0_55; A[6] = 1.52962392545729e-05*G0_0 + 1.52962392545732e-05*G0_1 - 4.43831824040186e-05*G0_2 + 6.04020786312485e-05*G0_3 + 0.000659424487549523*G0_4 - 0.00130178624102242*G0_5 + 0.00168419222238676*G0_6 - 0.000858657000150102*G0_7 + 9.04994032887601e-05*G0_8 - 0.000261963152588167*G0_9 + 0.000328541271828326*G0_10 - 0.000456929981669589*G0_11 - 0.000178405940124699*G0_12 + 0.000347778668091186*G0_13 - 0.000261963152588166*G0_14 + 0.0003573137253693*G0_15 + 9.04994032887595e-05*G0_16 - 0.000261963152588166*G0_17 + 0.000328541271828325*G0_18 - 0.000456929981669589*G0_19 - 0.000178405940124699*G0_20 + 0.000347778668091186*G0_21 - 0.000261963152588166*G0_22 + 0.000357313725369301*G0_23 - 2.2499389542214e-05*G0_24 + 1.12078743444494e-05*G0_25 + 1.12078743444489e-05*G0_26 - 2.24993895422142e-05*G0_27 + 0.000127970505574677*G0_28 - 7.02583167860966e-05*G0_29 + 0.000491808217502684*G0_30 - 0.00012044282877617*G0_31 - 4.51660607910635e-05*G0_32 - 0.000110405926378156*G0_33 + 0.000127970505574675*G0_34 - 7.02583167860945e-05*G0_35 + 0.000491808217502686*G0_36 - 0.000120442828776167*G0_37 - 4.51660607910644e-05*G0_38 - 0.000110405926378154*G0_39 - 0.00010956951784499*G0_40 - 2.25830303955296e-05*G0_41 - 0.000109569517844988*G0_42 + 0.000253431785549855*G0_43 + 0.000253431785549853*G0_44 - 0.000623960765743207*G0_45 + 0.000170627340766236*G0_46 - 0.000122952054375671*G0_47 + 0.000170627340766238*G0_48 - 0.000148044310370704*G0_49 - 0.000148044310370707*G0_50 + 0.000873210508627219*G0_51 + 6.27306399875877e-05*G0_52 + 6.27306399875852e-05*G0_53 + 0.00110405926378154*G0_54 - 0.000903321215821269*G0_55; A[7] = 4.07498237359359e-06*G0_0 + 4.07498237359368e-06*G0_1 + 1.81868671452014e-05*G0_2 - 6.04020786312489e-05*G0_3 - 0.000299350614020769*G0_4 + 0.000659424487549524*G0_5 - 0.000858657000150102*G0_6 + 0.00088625848174464*G0_7 - 0.000144029549411501*G0_8 + 0.0003573137253693*G0_9 - 0.00045692998166959*G0_10 + 0.000443129240872321*G0_11 + 5.50356814824442e-05*G0_12 - 0.0001784059401247*G0_13 + 9.04994032887597e-05*G0_14 - 0.000144029549411502*G0_15 - 0.000144029549411501*G0_16 + 0.000357313725369299*G0_17 - 0.000456929981669589*G0_18 + 0.000443129240872321*G0_19 + 5.50356814824437e-05*G0_20 - 0.000178405940124699*G0_21 + 9.04994032887596e-05*G0_22 - 0.000144029549411502*G0_23 + 2.75178407412213e-05*G0_24 - 2.24993895422149e-05*G0_25 - 2.24993895422156e-05*G0_26 + 2.75178407412219e-05*G0_27 - 4.01476095920561e-05*G0_28 - 9.28413471816307e-05*G0_29 - 0.000341254681532479*G0_30 - 5.5202963189076e-05*G0_31 + 0.000308634748738935*G0_32 + 0.000110405926378151*G0_33 - 4.01476095920578e-05*G0_34 - 9.28413471816295e-05*G0_35 - 0.000341254681532479*G0_36 - 5.52029631890757e-05*G0_37 + 0.000308634748738933*G0_38 + 0.000110405926378151*G0_39 - 2.00738047960298e-05*G0_40 + 2.88560943942895e-05*G0_41 - 2.00738047960286e-05*G0_42 - 2.76014815945376e-05*G0_43 - 2.76014815945378e-05*G0_44 + 5.52029631890753e-05*G0_45 - 0.000266814322080542*G0_46 + 0.00013549818237319*G0_47 - 0.000266814322080541*G0_48 - 8.78228959826203e-06*G0_49 - 8.78228959826275e-06*G0_50 - 0.000555375266023445*G0_51 - 0.000301107071940422*G0_52 - 0.000301107071940423*G0_53 - 0.000777859935846091*G0_54 + 0.000727675423856019*G0_55; A[8] = 4.07498237359345e-06*G0_0 - 6.04020786312483e-05*G0_1 + 4.0749823735937e-06*G0_2 + 1.81868671452016e-05*G0_3 + 5.50356814824434e-05*G0_4 - 0.0001784059401247*G0_5 + 9.04994032887601e-05*G0_6 - 0.000144029549411501*G0_7 + 0.000886258481744637*G0_8 - 0.0008586570001501*G0_9 + 0.000659424487549521*G0_10 - 0.000299350614020768*G0_11 + 0.000443129240872318*G0_12 - 0.000456929981669588*G0_13 + 0.000357313725369298*G0_14 - 0.000144029549411501*G0_15 + 5.50356814824443e-05*G0_16 - 0.000178405940124699*G0_17 + 9.04994032887596e-05*G0_18 - 0.000144029549411501*G0_19 + 2.75178407412219e-05*G0_20 - 2.24993895422143e-05*G0_21 - 2.24993895422148e-05*G0_22 + 2.7517840741222e-05*G0_23 - 0.000144029549411501*G0_24 + 0.0003573137253693*G0_25 - 0.00045692998166959*G0_26 + 0.000443129240872321*G0_27 + 0.000110405926378152*G0_28 - 5.52029631890794e-05*G0_29 - 4.0147609592056e-05*G0_30 + 0.000308634748738931*G0_31 - 9.28413471816294e-05*G0_32 - 0.000341254681532478*G0_33 - 0.00026681432208054*G0_34 + 0.000135498182373189*G0_35 - 0.00026681432208054*G0_36 - 8.78228959826132e-06*G0_37 - 8.78228959826217e-06*G0_38 - 0.000555375266023443*G0_39 - 4.01476095920569e-05*G0_40 - 5.52029631890796e-05*G0_41 + 0.000110405926378156*G0_42 - 9.28413471816298e-05*G0_43 + 0.000308634748738929*G0_44 - 0.000341254681532478*G0_45 - 2.00738047960292e-05*G0_46 - 2.76014815945395e-05*G0_47 + 5.52029631890763e-05*G0_48 + 2.88560943942922e-05*G0_49 - 2.76014815945402e-05*G0_50 - 2.00738047960284e-05*G0_51 - 0.000301107071940419*G0_52 + 0.000727675423856011*G0_53 - 0.000301107071940422*G0_54 - 0.000777859935846088*G0_55; A[9] = 1.52962392545732e-05*G0_0 + 6.04020786312483e-05*G0_1 + 1.5296239254573e-05*G0_2 - 4.43831824040187e-05*G0_3 - 0.000178405940124699*G0_4 + 0.000347778668091186*G0_5 - 0.000261963152588167*G0_6 + 0.0003573137253693*G0_7 - 0.0008586570001501*G0_8 + 0.00168419222238675*G0_9 - 0.00130178624102242*G0_10 + 0.000659424487549523*G0_11 - 0.000456929981669589*G0_12 + 0.000328541271828326*G0_13 - 0.000261963152588167*G0_14 + 9.04994032887603e-05*G0_15 - 0.000178405940124699*G0_16 + 0.000347778668091186*G0_17 - 0.000261963152588166*G0_18 + 0.000357313725369299*G0_19 - 2.24993895422135e-05*G0_20 + 1.12078743444479e-05*G0_21 + 1.12078743444491e-05*G0_22 - 2.24993895422145e-05*G0_23 + 9.04994032887607e-05*G0_24 - 0.000261963152588168*G0_25 + 0.000328541271828328*G0_26 - 0.000456929981669591*G0_27 - 0.000110405926378157*G0_28 - 0.000120442828776168*G0_29 + 0.000127970505574676*G0_30 - 4.51660607910612e-05*G0_31 - 7.02583167860965e-05*G0_32 + 0.000491808217502685*G0_33 + 0.000170627340766238*G0_34 - 0.000122952054375669*G0_35 + 0.000170627340766238*G0_36 - 0.000148044310370707*G0_37 - 0.000148044310370706*G0_38 + 0.000873210508627217*G0_39 + 0.000127970505574679*G0_40 - 0.000120442828776168*G0_41 - 0.000110405926378157*G0_42 - 7.02583167860976e-05*G0_43 - 4.51660607910577e-05*G0_44 + 0.000491808217502686*G0_45 - 0.000109569517844988*G0_46 + 0.000253431785549856*G0_47 - 0.000623960765743208*G0_48 - 2.25830303955307e-05*G0_49 + 0.000253431785549854*G0_50 - 0.000109569517844988*G0_51 + 6.2730639987587e-05*G0_52 - 0.000903321215821267*G0_53 + 6.27306399875871e-05*G0_54 + 0.00110405926378154*G0_55; A[10] = 1.52962392545732e-05*G0_0 - 4.43831824040182e-05*G0_1 + 1.52962392545734e-05*G0_2 + 6.04020786312489e-05*G0_3 + 9.04994032887593e-05*G0_4 - 0.000261963152588167*G0_5 + 0.000328541271828326*G0_6 - 0.00045692998166959*G0_7 + 0.000659424487549521*G0_8 - 0.00130178624102242*G0_9 + 0.00168419222238676*G0_10 - 0.000858657000150102*G0_11 + 0.000357313725369299*G0_12 - 0.000261963152588166*G0_13 + 0.000347778668091187*G0_14 - 0.0001784059401247*G0_15 + 9.04994032887593e-05*G0_16 - 0.000261963152588166*G0_17 + 0.000328541271828325*G0_18 - 0.000456929981669589*G0_19 - 2.24993895422143e-05*G0_20 + 1.12078743444485e-05*G0_21 + 1.12078743444492e-05*G0_22 - 2.24993895422152e-05*G0_23 - 0.000178405940124699*G0_24 + 0.000347778668091187*G0_25 - 0.000261963152588167*G0_26 + 0.000357313725369302*G0_27 + 0.000491808217502686*G0_28 - 7.02583167860986e-05*G0_29 + 0.000127970505574679*G0_30 - 4.51660607910646e-05*G0_31 - 0.00012044282877617*G0_32 - 0.000110405926378152*G0_33 - 0.000109569517844988*G0_34 - 2.25830303955302e-05*G0_35 - 0.000109569517844988*G0_36 + 0.000253431785549853*G0_37 + 0.000253431785549853*G0_38 - 0.000623960765743204*G0_39 + 0.000127970505574679*G0_40 - 7.02583167860965e-05*G0_41 + 0.000491808217502688*G0_42 - 0.000120442828776169*G0_43 - 4.51660607910669e-05*G0_44 - 0.000110405926378152*G0_45 + 0.000170627340766239*G0_46 - 0.000148044310370708*G0_47 + 0.000873210508627222*G0_48 - 0.000122952054375671*G0_49 - 0.000148044310370707*G0_50 + 0.000170627340766239*G0_51 + 6.2730639987588e-05*G0_52 + 0.00110405926378154*G0_53 + 6.27306399875817e-05*G0_54 - 0.000903321215821265*G0_55; A[11] = 4.07498237359376e-06*G0_0 + 1.81868671452016e-05*G0_1 + 4.07498237359364e-06*G0_2 - 6.04020786312488e-05*G0_3 - 0.000144029549411501*G0_4 + 0.0003573137253693*G0_5 - 0.000456929981669589*G0_6 + 0.000443129240872321*G0_7 - 0.000299350614020768*G0_8 + 0.000659424487549523*G0_9 - 0.000858657000150102*G0_10 + 0.000886258481744641*G0_11 - 0.000144029549411502*G0_12 + 9.049940328876e-05*G0_13 - 0.0001784059401247*G0_14 + 5.50356814824441e-05*G0_15 - 0.0001440295494115*G0_16 + 0.000357313725369299*G0_17 - 0.000456929981669589*G0_18 + 0.00044312924087232*G0_19 + 2.75178407412218e-05*G0_20 - 2.24993895422144e-05*G0_21 - 2.24993895422148e-05*G0_22 + 2.7517840741222e-05*G0_23 + 5.50356814824433e-05*G0_24 - 0.0001784059401247*G0_25 + 9.04994032887604e-05*G0_26 - 0.000144029549411503*G0_27 - 0.000341254681532477*G0_28 - 9.28413471816302e-05*G0_29 - 4.01476095920568e-05*G0_30 + 0.000308634748738933*G0_31 - 5.5202963189075e-05*G0_32 + 0.000110405926378153*G0_33 - 2.00738047960267e-05*G0_34 + 2.885609439429e-05*G0_35 - 2.00738047960276e-05*G0_36 - 2.76014815945383e-05*G0_37 - 2.76014815945368e-05*G0_38 + 5.52029631890754e-05*G0_39 - 4.0147609592056e-05*G0_40 - 9.28413471816316e-05*G0_41 - 0.000341254681532478*G0_42 - 5.52029631890763e-05*G0_43 + 0.000308634748738934*G0_44 + 0.000110405926378152*G0_45 - 0.00026681432208054*G0_46 - 8.78228959826211e-06*G0_47 - 0.000555375266023444*G0_48 + 0.000135498182373189*G0_49 - 8.78228959826266e-06*G0_50 - 0.00026681432208054*G0_51 - 0.00030110707194042*G0_52 - 0.000777859935846089*G0_53 - 0.000301107071940417*G0_54 + 0.00072767542385602*G0_55; A[12] = 4.0749823735935e-06*G0_0 - 6.04020786312486e-05*G0_1 + 1.81868671452015e-05*G0_2 + 4.07498237359377e-06*G0_3 - 0.000144029549411502*G0_4 + 9.049940328876e-05*G0_5 - 0.000178405940124699*G0_6 + 5.50356814824442e-05*G0_7 + 0.000443129240872319*G0_8 - 0.000456929981669589*G0_9 + 0.000357313725369299*G0_10 - 0.000144029549411502*G0_11 + 0.000886258481744637*G0_12 - 0.000858657000150099*G0_13 + 0.000659424487549521*G0_14 - 0.000299350614020768*G0_15 + 2.75178407412226e-05*G0_16 - 2.24993895422151e-05*G0_17 - 2.24993895422148e-05*G0_18 + 2.7517840741222e-05*G0_19 + 5.50356814824435e-05*G0_20 - 0.000178405940124699*G0_21 + 9.04994032887593e-05*G0_22 - 0.000144029549411501*G0_23 - 0.000144029549411501*G0_24 + 0.0003573137253693*G0_25 - 0.00045692998166959*G0_26 + 0.000443129240872321*G0_27 + 0.000110405926378152*G0_28 + 0.000308634748738931*G0_29 - 0.000341254681532477*G0_30 - 5.5202963189077e-05*G0_31 - 9.28413471816288e-05*G0_32 - 4.01476095920576e-05*G0_33 - 0.00026681432208054*G0_34 - 8.78228959826283e-06*G0_35 - 0.000555375266023444*G0_36 + 0.000135498182373189*G0_37 - 8.78228959826204e-06*G0_38 - 0.000266814322080541*G0_39 - 2.00738047960296e-05*G0_40 - 2.76014815945397e-05*G0_41 + 5.52029631890771e-05*G0_42 + 2.88560943942904e-05*G0_43 - 2.760148159454e-05*G0_44 - 2.00738047960296e-05*G0_45 - 4.01476095920576e-05*G0_46 - 5.52029631890784e-05*G0_47 + 0.000110405926378154*G0_48 - 9.28413471816284e-05*G0_49 + 0.00030863474873893*G0_50 - 0.000341254681532478*G0_51 - 0.000301107071940422*G0_52 + 0.000727675423856014*G0_53 - 0.00077785993584609*G0_54 - 0.000301107071940423*G0_55; A[13] = 1.52962392545735e-05*G0_0 + 6.04020786312484e-05*G0_1 - 4.43831824040185e-05*G0_2 + 1.52962392545733e-05*G0_3 + 0.0003573137253693*G0_4 - 0.000261963152588166*G0_5 + 0.000347778668091186*G0_6 - 0.0001784059401247*G0_7 - 0.000456929981669588*G0_8 + 0.000328541271828326*G0_9 - 0.000261963152588166*G0_10 + 9.049940328876e-05*G0_11 - 0.000858657000150099*G0_12 + 0.00168419222238675*G0_13 - 0.00130178624102242*G0_14 + 0.000659424487549521*G0_15 - 2.24993895422155e-05*G0_16 + 1.12078743444495e-05*G0_17 + 1.12078743444486e-05*G0_18 - 2.24993895422148e-05*G0_19 - 0.000178405940124699*G0_20 + 0.000347778668091185*G0_21 - 0.000261963152588166*G0_22 + 0.000357313725369299*G0_23 + 9.04994032887598e-05*G0_24 - 0.000261963152588166*G0_25 + 0.000328541271828327*G0_26 - 0.00045692998166959*G0_27 - 0.000110405926378153*G0_28 - 4.51660607910596e-05*G0_29 + 0.000491808217502685*G0_30 - 0.000120442828776169*G0_31 - 7.02583167860994e-05*G0_32 + 0.00012797050557468*G0_33 + 0.000170627340766237*G0_34 - 0.000148044310370706*G0_35 + 0.00087321050862722*G0_36 - 0.000122952054375671*G0_37 - 0.000148044310370707*G0_38 + 0.000170627340766238*G0_39 - 0.000109569517844986*G0_40 + 0.000253431785549855*G0_41 - 0.000623960765743205*G0_42 - 2.25830303955309e-05*G0_43 + 0.000253431785549856*G0_44 - 0.000109569517844986*G0_45 + 0.000127970505574679*G0_46 - 0.000120442828776167*G0_47 - 0.000110405926378155*G0_48 - 7.02583167860995e-05*G0_49 - 4.51660607910602e-05*G0_50 + 0.000491808217502687*G0_51 + 6.27306399875878e-05*G0_52 - 0.000903321215821259*G0_53 + 0.00110405926378155*G0_54 + 6.2730639987589e-05*G0_55; A[14] = 1.52962392545738e-05*G0_0 - 4.43831824040178e-05*G0_1 + 6.04020786312492e-05*G0_2 + 1.52962392545738e-05*G0_3 - 0.000456929981669589*G0_4 + 0.000328541271828326*G0_5 - 0.000261963152588166*G0_6 + 9.04994032887597e-05*G0_7 + 0.000357313725369298*G0_8 - 0.000261963152588167*G0_9 + 0.000347778668091187*G0_10 - 0.0001784059401247*G0_11 + 0.000659424487549521*G0_12 - 0.00130178624102242*G0_13 + 0.00168419222238675*G0_14 - 0.000858657000150101*G0_15 - 2.24993895422162e-05*G0_16 + 1.12078743444498e-05*G0_17 + 1.12078743444489e-05*G0_18 - 2.24993895422148e-05*G0_19 + 9.04994032887591e-05*G0_20 - 0.000261963152588165*G0_21 + 0.000328541271828325*G0_22 - 0.000456929981669589*G0_23 - 0.0001784059401247*G0_24 + 0.000347778668091188*G0_25 - 0.000261963152588168*G0_26 + 0.000357313725369301*G0_27 + 0.000491808217502691*G0_28 - 4.51660607910668e-05*G0_29 - 0.000110405926378148*G0_30 - 7.02583167860994e-05*G0_31 - 0.000120442828776167*G0_32 + 0.000127970505574682*G0_33 - 0.000109569517844985*G0_34 + 0.000253431785549853*G0_35 - 0.000623960765743202*G0_36 - 2.25830303955335e-05*G0_37 + 0.000253431785549855*G0_38 - 0.000109569517844984*G0_39 + 0.000170627340766241*G0_40 - 0.000148044310370706*G0_41 + 0.000873210508627225*G0_42 - 0.000122952054375672*G0_43 - 0.00014804431037071*G0_44 + 0.000170627340766241*G0_45 + 0.00012797050557468*G0_46 - 7.02583167860982e-05*G0_47 + 0.000491808217502691*G0_48 - 0.000120442828776168*G0_49 - 4.51660607910672e-05*G0_50 - 0.000110405926378149*G0_51 + 6.27306399875872e-05*G0_52 + 0.00110405926378155*G0_53 - 0.000903321215821262*G0_54 + 6.27306399875903e-05*G0_55; A[15] = 4.07498237359345e-06*G0_0 + 1.81868671452015e-05*G0_1 - 6.04020786312494e-05*G0_2 + 4.07498237359358e-06*G0_3 + 0.00044312924087232*G0_4 - 0.00045692998166959*G0_5 + 0.0003573137253693*G0_6 - 0.000144029549411502*G0_7 - 0.000144029549411501*G0_8 + 9.04994032887603e-05*G0_9 - 0.0001784059401247*G0_10 + 5.50356814824441e-05*G0_11 - 0.000299350614020768*G0_12 + 0.000659424487549521*G0_13 - 0.000858657000150101*G0_14 + 0.000886258481744639*G0_15 + 2.75178407412226e-05*G0_16 - 2.24993895422152e-05*G0_17 - 2.2499389542215e-05*G0_18 + 2.75178407412216e-05*G0_19 - 0.000144029549411501*G0_20 + 0.000357313725369299*G0_21 - 0.000456929981669589*G0_22 + 0.00044312924087232*G0_23 + 5.50356814824437e-05*G0_24 - 0.0001784059401247*G0_25 + 9.04994032887604e-05*G0_26 - 0.000144029549411502*G0_27 - 0.000341254681532478*G0_28 + 0.000308634748738932*G0_29 + 0.000110405926378152*G0_30 - 9.28413471816292e-05*G0_31 - 5.52029631890778e-05*G0_32 - 4.01476095920576e-05*G0_33 - 2.00738047960288e-05*G0_34 - 2.76014815945378e-05*G0_35 + 5.5202963189076e-05*G0_36 + 2.88560943942909e-05*G0_37 - 2.76014815945385e-05*G0_38 - 2.00738047960292e-05*G0_39 - 0.000266814322080541*G0_40 - 8.78228959826371e-06*G0_41 - 0.000555375266023445*G0_42 + 0.000135498182373189*G0_43 - 8.78228959826022e-06*G0_44 - 0.000266814322080542*G0_45 - 4.0147609592058e-05*G0_46 - 9.28413471816304e-05*G0_47 - 0.000341254681532479*G0_48 - 5.52029631890756e-05*G0_49 + 0.000308634748738933*G0_50 + 0.000110405926378151*G0_51 - 0.000301107071940423*G0_52 - 0.00077785993584609*G0_53 + 0.00072767542385602*G0_54 - 0.000301107071940422*G0_55; A[16] = -6.04020786312488e-05*G0_0 + 4.07498237359319e-06*G0_1 + 4.07498237359353e-06*G0_2 + 1.8186867145201e-05*G0_3 + 5.50356814824436e-05*G0_4 - 0.000178405940124699*G0_5 + 9.04994032887595e-05*G0_6 - 0.000144029549411501*G0_7 + 5.50356814824443e-05*G0_8 - 0.000178405940124699*G0_9 + 9.04994032887592e-05*G0_10 - 0.0001440295494115*G0_11 + 2.75178407412226e-05*G0_12 - 2.24993895422155e-05*G0_13 - 2.24993895422162e-05*G0_14 + 2.75178407412226e-05*G0_15 + 0.00088625848174464*G0_16 - 0.000858657000150101*G0_17 + 0.000659424487549521*G0_18 - 0.000299350614020768*G0_19 + 0.00044312924087232*G0_20 - 0.000456929981669589*G0_21 + 0.000357313725369299*G0_22 - 0.000144029549411501*G0_23 + 0.00044312924087232*G0_24 - 0.00045692998166959*G0_25 + 0.000357313725369299*G0_26 - 0.000144029549411501*G0_27 - 0.000266814322080544*G0_28 + 0.00013549818237319*G0_29 - 0.000266814322080544*G0_30 - 8.78228959826275e-06*G0_31 - 8.78228959826139e-06*G0_32 - 0.000555375266023447*G0_33 + 0.000110405926378153*G0_34 - 5.52029631890789e-05*G0_35 - 4.01476095920588e-05*G0_36 + 0.000308634748738933*G0_37 - 9.28413471816288e-05*G0_38 - 0.00034125468153248*G0_39 + 0.000110405926378151*G0_40 - 5.52029631890766e-05*G0_41 - 4.0147609592061e-05*G0_42 + 0.000308634748738931*G0_43 - 9.28413471816292e-05*G0_44 - 0.000341254681532481*G0_45 + 5.52029631890731e-05*G0_46 - 2.76014815945388e-05*G0_47 - 2.00738047960333e-05*G0_48 - 2.76014815945374e-05*G0_49 + 2.88560943942921e-05*G0_50 - 2.00738047960327e-05*G0_51 + 0.000727675423856012*G0_52 - 0.000301107071940427*G0_53 - 0.000301107071940426*G0_54 - 0.000777859935846091*G0_55; A[17] = 6.04020786312484e-05*G0_0 + 1.52962392545734e-05*G0_1 + 1.5296239254573e-05*G0_2 - 4.43831824040184e-05*G0_3 - 0.000178405940124699*G0_4 + 0.000347778668091186*G0_5 - 0.000261963152588166*G0_6 + 0.000357313725369299*G0_7 - 0.000178405940124699*G0_8 + 0.000347778668091186*G0_9 - 0.000261963152588166*G0_10 + 0.000357313725369299*G0_11 - 2.24993895422151e-05*G0_12 + 1.12078743444495e-05*G0_13 + 1.12078743444498e-05*G0_14 - 2.24993895422152e-05*G0_15 - 0.000858657000150101*G0_16 + 0.00168419222238675*G0_17 - 0.00130178624102242*G0_18 + 0.000659424487549522*G0_19 - 0.000456929981669588*G0_20 + 0.000328541271828327*G0_21 - 0.000261963152588167*G0_22 + 9.04994032887604e-05*G0_23 - 0.000456929981669589*G0_24 + 0.000328541271828326*G0_25 - 0.000261963152588167*G0_26 + 9.049940328876e-05*G0_27 + 0.000170627340766239*G0_28 - 0.000122952054375672*G0_29 + 0.00017062734076624*G0_30 - 0.000148044310370702*G0_31 - 0.000148044310370706*G0_32 + 0.00087321050862722*G0_33 - 0.000110405926378156*G0_34 - 0.000120442828776165*G0_35 + 0.000127970505574677*G0_36 - 4.51660607910647e-05*G0_37 - 7.02583167860971e-05*G0_38 + 0.000491808217502685*G0_39 - 0.000110405926378155*G0_40 - 0.000120442828776169*G0_41 + 0.000127970505574679*G0_42 - 4.51660607910624e-05*G0_43 - 7.02583167860935e-05*G0_44 + 0.000491808217502685*G0_45 - 0.000623960765743206*G0_46 + 0.000253431785549855*G0_47 - 0.000109569517844986*G0_48 + 0.000253431785549854*G0_49 - 2.25830303955324e-05*G0_50 - 0.000109569517844986*G0_51 - 0.000903321215821268*G0_52 + 6.27306399875893e-05*G0_53 + 6.27306399875908e-05*G0_54 + 0.00110405926378154*G0_55; A[18] = -4.4383182404018e-05*G0_0 + 1.52962392545731e-05*G0_1 + 1.52962392545737e-05*G0_2 + 6.04020786312486e-05*G0_3 + 9.04994032887595e-05*G0_4 - 0.000261963152588166*G0_5 + 0.000328541271828325*G0_6 - 0.000456929981669589*G0_7 + 9.04994032887596e-05*G0_8 - 0.000261963152588166*G0_9 + 0.000328541271828325*G0_10 - 0.000456929981669589*G0_11 - 2.24993895422148e-05*G0_12 + 1.12078743444486e-05*G0_13 + 1.12078743444489e-05*G0_14 - 2.2499389542215e-05*G0_15 + 0.000659424487549521*G0_16 - 0.00130178624102242*G0_17 + 0.00168419222238675*G0_18 - 0.000858657000150102*G0_19 + 0.0003573137253693*G0_20 - 0.000261963152588167*G0_21 + 0.000347778668091187*G0_22 - 0.0001784059401247*G0_23 + 0.0003573137253693*G0_24 - 0.000261963152588166*G0_25 + 0.000347778668091187*G0_26 - 0.000178405940124699*G0_27 - 0.000109569517844987*G0_28 - 2.25830303955314e-05*G0_29 - 0.000109569517844987*G0_30 + 0.000253431785549852*G0_31 + 0.000253431785549853*G0_32 - 0.000623960765743204*G0_33 + 0.000491808217502688*G0_34 - 7.02583167860994e-05*G0_35 + 0.00012797050557468*G0_36 - 4.51660607910637e-05*G0_37 - 0.000120442828776169*G0_38 - 0.000110405926378152*G0_39 + 0.000491808217502688*G0_40 - 7.0258316786095e-05*G0_41 + 0.000127970505574679*G0_42 - 4.51660607910647e-05*G0_43 - 0.000120442828776171*G0_44 - 0.000110405926378151*G0_45 + 0.000873210508627222*G0_46 - 0.000148044310370707*G0_47 + 0.000170627340766239*G0_48 - 0.000148044310370707*G0_49 - 0.000122952054375671*G0_50 + 0.000170627340766239*G0_51 + 0.00110405926378155*G0_52 + 6.27306399875881e-05*G0_53 + 6.27306399875846e-05*G0_54 - 0.000903321215821263*G0_55; A[19] = 1.81868671452013e-05*G0_0 + 4.07498237359385e-06*G0_1 + 4.07498237359357e-06*G0_2 - 6.04020786312488e-05*G0_3 - 0.000144029549411502*G0_4 + 0.0003573137253693*G0_5 - 0.000456929981669589*G0_6 + 0.000443129240872321*G0_7 - 0.000144029549411501*G0_8 + 0.000357313725369299*G0_9 - 0.000456929981669589*G0_10 + 0.00044312924087232*G0_11 + 2.7517840741222e-05*G0_12 - 2.24993895422148e-05*G0_13 - 2.24993895422148e-05*G0_14 + 2.75178407412216e-05*G0_15 - 0.000299350614020768*G0_16 + 0.000659424487549522*G0_17 - 0.000858657000150102*G0_18 + 0.00088625848174464*G0_19 - 0.000144029549411501*G0_20 + 9.04994032887602e-05*G0_21 - 0.0001784059401247*G0_22 + 5.50356814824437e-05*G0_23 - 0.000144029549411502*G0_24 + 9.04994032887592e-05*G0_25 - 0.0001784059401247*G0_26 + 5.50356814824433e-05*G0_27 - 2.00738047960288e-05*G0_28 + 2.88560943942901e-05*G0_29 - 2.00738047960286e-05*G0_30 - 2.76014815945365e-05*G0_31 - 2.7601481594538e-05*G0_32 + 5.5202963189076e-05*G0_33 - 0.000341254681532478*G0_34 - 9.28413471816293e-05*G0_35 - 4.0147609592057e-05*G0_36 + 0.000308634748738932*G0_37 - 5.52029631890766e-05*G0_38 + 0.000110405926378152*G0_39 - 0.000341254681532478*G0_40 - 9.28413471816316e-05*G0_41 - 4.01476095920564e-05*G0_42 + 0.000308634748738933*G0_43 - 5.52029631890743e-05*G0_44 + 0.000110405926378152*G0_45 - 0.000555375266023445*G0_46 - 8.78228959826201e-06*G0_47 - 0.000266814322080541*G0_48 - 8.78228959826243e-06*G0_49 + 0.000135498182373189*G0_50 - 0.00026681432208054*G0_51 - 0.000777859935846087*G0_52 - 0.000301107071940422*G0_53 - 0.00030110707194042*G0_54 + 0.000727675423856021*G0_55; A[20] = -6.04020786312478e-05*G0_0 + 4.07498237359389e-06*G0_1 + 1.81868671452023e-05*G0_2 + 4.07498237359401e-06*G0_3 - 0.000144029549411503*G0_4 + 9.04994032887608e-05*G0_5 - 0.000178405940124699*G0_6 + 5.50356814824437e-05*G0_7 + 2.75178407412219e-05*G0_8 - 2.24993895422135e-05*G0_9 - 2.24993895422143e-05*G0_10 + 2.75178407412218e-05*G0_11 + 5.50356814824436e-05*G0_12 - 0.000178405940124699*G0_13 + 9.04994032887591e-05*G0_14 - 0.000144029549411501*G0_15 + 0.00044312924087232*G0_16 - 0.000456929981669588*G0_17 + 0.0003573137253693*G0_18 - 0.000144029549411501*G0_19 + 0.000886258481744637*G0_20 - 0.000858657000150097*G0_21 + 0.000659424487549521*G0_22 - 0.000299350614020769*G0_23 + 0.000443129240872318*G0_24 - 0.000456929981669588*G0_25 + 0.000357313725369299*G0_26 - 0.000144029549411502*G0_27 - 0.000266814322080536*G0_28 - 8.78228959826501e-06*G0_29 - 0.000555375266023439*G0_30 + 0.000135498182373189*G0_31 - 8.78228959826362e-06*G0_32 - 0.000266814322080536*G0_33 + 0.000110405926378158*G0_34 + 0.000308634748738929*G0_35 - 0.000341254681532472*G0_36 - 5.52029631890773e-05*G0_37 - 9.28413471816309e-05*G0_38 - 4.01476095920526e-05*G0_39 + 5.52029631890792e-05*G0_40 - 2.76014815945401e-05*G0_41 - 2.00738047960259e-05*G0_42 - 2.76014815945398e-05*G0_43 + 2.88560943942902e-05*G0_44 - 2.00738047960254e-05*G0_45 + 0.000110405926378156*G0_46 - 5.52029631890794e-05*G0_47 - 4.01476095920549e-05*G0_48 + 0.00030863474873893*G0_49 - 9.28413471816301e-05*G0_50 - 0.000341254681532474*G0_51 + 0.000727675423856018*G0_52 - 0.000301107071940417*G0_53 - 0.000777859935846083*G0_54 - 0.000301107071940414*G0_55; A[21] = 6.04020786312477e-05*G0_0 + 1.52962392545731e-05*G0_1 - 4.43831824040195e-05*G0_2 + 1.52962392545731e-05*G0_3 + 0.000357313725369301*G0_4 - 0.000261963152588168*G0_5 + 0.000347778668091186*G0_6 - 0.000178405940124699*G0_7 - 2.24993895422143e-05*G0_8 + 1.12078743444479e-05*G0_9 + 1.12078743444485e-05*G0_10 - 2.24993895422144e-05*G0_11 - 0.000178405940124699*G0_12 + 0.000347778668091185*G0_13 - 0.000261963152588165*G0_14 + 0.000357313725369299*G0_15 - 0.000456929981669589*G0_16 + 0.000328541271828327*G0_17 - 0.000261963152588167*G0_18 + 9.04994032887602e-05*G0_19 - 0.000858657000150097*G0_20 + 0.00168419222238675*G0_21 - 0.00130178624102242*G0_22 + 0.000659424487549522*G0_23 - 0.000456929981669588*G0_24 + 0.000328541271828325*G0_25 - 0.000261963152588167*G0_26 + 9.04994032887604e-05*G0_27 + 0.000170627340766236*G0_28 - 0.000148044310370704*G0_29 + 0.000873210508627216*G0_30 - 0.000122952054375671*G0_31 - 0.000148044310370705*G0_32 + 0.000170627340766235*G0_33 - 0.000110405926378159*G0_34 - 4.51660607910584e-05*G0_35 + 0.000491808217502682*G0_36 - 0.000120442828776169*G0_37 - 7.02583167860967e-05*G0_38 + 0.000127970505574675*G0_39 - 0.000623960765743208*G0_40 + 0.000253431785549854*G0_41 - 0.000109569517844988*G0_42 + 0.000253431785549855*G0_43 - 2.25830303955301e-05*G0_44 - 0.00010956951784499*G0_45 - 0.000110405926378159*G0_46 - 0.000120442828776167*G0_47 + 0.000127970505574678*G0_48 - 4.51660607910605e-05*G0_49 - 7.02583167860991e-05*G0_50 + 0.000491808217502682*G0_51 - 0.000903321215821267*G0_52 + 6.27306399875844e-05*G0_53 + 0.00110405926378154*G0_54 + 6.27306399875827e-05*G0_55; A[22] = -4.43831824040177e-05*G0_0 + 1.52962392545732e-05*G0_1 + 6.04020786312498e-05*G0_2 + 1.52962392545733e-05*G0_3 - 0.00045692998166959*G0_4 + 0.000328541271828327*G0_5 - 0.000261963152588166*G0_6 + 9.04994032887596e-05*G0_7 - 2.24993895422148e-05*G0_8 + 1.12078743444491e-05*G0_9 + 1.12078743444492e-05*G0_10 - 2.24993895422148e-05*G0_11 + 9.04994032887593e-05*G0_12 - 0.000261963152588166*G0_13 + 0.000328541271828325*G0_14 - 0.000456929981669589*G0_15 + 0.0003573137253693*G0_16 - 0.000261963152588167*G0_17 + 0.000347778668091187*G0_18 - 0.0001784059401247*G0_19 + 0.000659424487549521*G0_20 - 0.00130178624102242*G0_21 + 0.00168419222238675*G0_22 - 0.000858657000150101*G0_23 + 0.0003573137253693*G0_24 - 0.000261963152588166*G0_25 + 0.000347778668091186*G0_26 - 0.0001784059401247*G0_27 - 0.000109569517844986*G0_28 + 0.000253431785549853*G0_29 - 0.000623960765743204*G0_30 - 2.25830303955315e-05*G0_31 + 0.000253431785549854*G0_32 - 0.000109569517844986*G0_33 + 0.000491808217502688*G0_34 - 4.5166060791064e-05*G0_35 - 0.000110405926378151*G0_36 - 7.02583167860983e-05*G0_37 - 0.000120442828776169*G0_38 + 0.00012797050557468*G0_39 + 0.000873210508627223*G0_40 - 0.000148044310370704*G0_41 + 0.000170627340766238*G0_42 - 0.000148044310370707*G0_43 - 0.000122952054375672*G0_44 + 0.000170627340766239*G0_45 + 0.000491808217502689*G0_46 - 7.0258316786099e-05*G0_47 + 0.000127970505574679*G0_48 - 4.51660607910646e-05*G0_49 - 0.000120442828776168*G0_50 - 0.000110405926378152*G0_51 + 0.00110405926378155*G0_52 + 6.27306399875875e-05*G0_53 - 0.000903321215821265*G0_54 + 6.27306399875884e-05*G0_55; A[23] = 1.81868671452012e-05*G0_0 + 4.07498237359382e-06*G0_1 - 6.04020786312495e-05*G0_2 + 4.07498237359384e-06*G0_3 + 0.000443129240872321*G0_4 - 0.00045692998166959*G0_5 + 0.000357313725369301*G0_6 - 0.000144029549411502*G0_7 + 2.7517840741222e-05*G0_8 - 2.24993895422145e-05*G0_9 - 2.24993895422152e-05*G0_10 + 2.7517840741222e-05*G0_11 - 0.000144029549411501*G0_12 + 0.000357313725369299*G0_13 - 0.000456929981669589*G0_14 + 0.00044312924087232*G0_15 - 0.000144029549411501*G0_16 + 9.04994032887604e-05*G0_17 - 0.0001784059401247*G0_18 + 5.50356814824437e-05*G0_19 - 0.000299350614020769*G0_20 + 0.000659424487549522*G0_21 - 0.000858657000150101*G0_22 + 0.00088625848174464*G0_23 - 0.000144029549411501*G0_24 + 9.04994032887594e-05*G0_25 - 0.000178405940124699*G0_26 + 5.50356814824433e-05*G0_27 - 2.00738047960295e-05*G0_28 - 2.76014815945373e-05*G0_29 + 5.52029631890762e-05*G0_30 + 2.88560943942901e-05*G0_31 - 2.76014815945398e-05*G0_32 - 2.00738047960286e-05*G0_33 - 0.000341254681532478*G0_34 + 0.000308634748738933*G0_35 + 0.000110405926378153*G0_36 - 9.28413471816286e-05*G0_37 - 5.52029631890784e-05*G0_38 - 4.01476095920567e-05*G0_39 - 0.000555375266023445*G0_40 - 8.78228959826475e-06*G0_41 - 0.00026681432208054*G0_42 - 8.78228959826197e-06*G0_43 + 0.00013549818237319*G0_44 - 0.000266814322080541*G0_45 - 0.000341254681532479*G0_46 - 9.28413471816306e-05*G0_47 - 4.01476095920572e-05*G0_48 + 0.000308634748738933*G0_49 - 5.52029631890768e-05*G0_50 + 0.000110405926378153*G0_51 - 0.000777859935846089*G0_52 - 0.000301107071940424*G0_53 + 0.000727675423856022*G0_54 - 0.000301107071940423*G0_55; A[24] = -6.0402078631248e-05*G0_0 + 1.81868671452017e-05*G0_1 + 4.07498237359433e-06*G0_2 + 4.07498237359401e-06*G0_3 + 2.75178407412211e-05*G0_4 - 2.24993895422142e-05*G0_5 - 2.2499389542214e-05*G0_6 + 2.75178407412213e-05*G0_7 - 0.000144029549411501*G0_8 + 9.04994032887608e-05*G0_9 - 0.000178405940124699*G0_10 + 5.50356814824433e-05*G0_11 - 0.000144029549411501*G0_12 + 9.04994032887598e-05*G0_13 - 0.0001784059401247*G0_14 + 5.50356814824437e-05*G0_15 + 0.00044312924087232*G0_16 - 0.000456929981669589*G0_17 + 0.0003573137253693*G0_18 - 0.000144029549411502*G0_19 + 0.000443129240872318*G0_20 - 0.000456929981669588*G0_21 + 0.0003573137253693*G0_22 - 0.000144029549411501*G0_23 + 0.000886258481744638*G0_24 - 0.0008586570001501*G0_25 + 0.000659424487549523*G0_26 - 0.000299350614020769*G0_27 - 0.000555375266023439*G0_28 - 8.7822895982637e-06*G0_29 - 0.000266814322080537*G0_30 - 8.78228959826402e-06*G0_31 + 0.000135498182373187*G0_32 - 0.000266814322080536*G0_33 + 5.52029631890805e-05*G0_34 - 2.760148159454e-05*G0_35 - 2.00738047960237e-05*G0_36 - 2.76014815945379e-05*G0_37 + 2.88560943942887e-05*G0_38 - 2.00738047960245e-05*G0_39 + 0.000110405926378157*G0_40 + 0.00030863474873893*G0_41 - 0.000341254681532474*G0_42 - 5.52029631890788e-05*G0_43 - 9.28413471816309e-05*G0_44 - 4.01476095920527e-05*G0_45 + 0.000110405926378156*G0_46 + 0.00030863474873893*G0_47 - 0.000341254681532475*G0_48 - 5.52029631890774e-05*G0_49 - 9.28413471816304e-05*G0_50 - 4.0147609592053e-05*G0_51 + 0.00072767542385602*G0_52 - 0.000777859935846082*G0_53 - 0.000301107071940416*G0_54 - 0.000301107071940416*G0_55; A[25] = 6.04020786312488e-05*G0_0 - 4.43831824040179e-05*G0_1 + 1.52962392545734e-05*G0_2 + 1.5296239254574e-05*G0_3 - 2.24993895422146e-05*G0_4 + 1.12078743444484e-05*G0_5 + 1.12078743444494e-05*G0_6 - 2.24993895422148e-05*G0_7 + 0.0003573137253693*G0_8 - 0.000261963152588168*G0_9 + 0.000347778668091187*G0_10 - 0.0001784059401247*G0_11 + 0.0003573137253693*G0_12 - 0.000261963152588166*G0_13 + 0.000347778668091188*G0_14 - 0.0001784059401247*G0_15 - 0.00045692998166959*G0_16 + 0.000328541271828326*G0_17 - 0.000261963152588166*G0_18 + 9.04994032887592e-05*G0_19 - 0.000456929981669588*G0_20 + 0.000328541271828325*G0_21 - 0.000261963152588166*G0_22 + 9.04994032887593e-05*G0_23 - 0.0008586570001501*G0_24 + 0.00168419222238676*G0_25 - 0.00130178624102242*G0_26 + 0.000659424487549524*G0_27 + 0.000873210508627222*G0_28 - 0.000148044310370707*G0_29 + 0.000170627340766241*G0_30 - 0.000148044310370706*G0_31 - 0.000122952054375671*G0_32 + 0.00017062734076624*G0_33 - 0.000623960765743205*G0_34 + 0.000253431785549855*G0_35 - 0.000109569517844987*G0_36 + 0.000253431785549851*G0_37 - 2.25830303955311e-05*G0_38 - 0.000109569517844986*G0_39 - 0.000110405926378151*G0_40 - 4.51660607910632e-05*G0_41 + 0.000491808217502688*G0_42 - 0.000120442828776171*G0_43 - 7.02583167860983e-05*G0_44 + 0.00012797050557468*G0_45 - 0.000110405926378151*G0_46 - 4.51660607910627e-05*G0_47 + 0.000491808217502689*G0_48 - 0.00012044282877617*G0_49 - 7.02583167860991e-05*G0_50 + 0.000127970505574682*G0_51 - 0.000903321215821261*G0_52 + 0.00110405926378155*G0_53 + 6.27306399875893e-05*G0_54 + 6.27306399875864e-05*G0_55; A[26] = -4.4383182404018e-05*G0_0 + 6.04020786312484e-05*G0_1 + 1.52962392545737e-05*G0_2 + 1.52962392545732e-05*G0_3 - 2.24993895422148e-05*G0_4 + 1.12078743444493e-05*G0_5 + 1.12078743444489e-05*G0_6 - 2.24993895422156e-05*G0_7 - 0.00045692998166959*G0_8 + 0.000328541271828328*G0_9 - 0.000261963152588167*G0_10 + 9.04994032887604e-05*G0_11 - 0.00045692998166959*G0_12 + 0.000328541271828327*G0_13 - 0.000261963152588168*G0_14 + 9.04994032887604e-05*G0_15 + 0.000357313725369299*G0_16 - 0.000261963152588167*G0_17 + 0.000347778668091187*G0_18 - 0.0001784059401247*G0_19 + 0.000357313725369299*G0_20 - 0.000261963152588167*G0_21 + 0.000347778668091186*G0_22 - 0.000178405940124699*G0_23 + 0.000659424487549523*G0_24 - 0.00130178624102242*G0_25 + 0.00168419222238676*G0_26 - 0.000858657000150103*G0_27 - 0.000623960765743205*G0_28 + 0.000253431785549855*G0_29 - 0.000109569517844987*G0_30 + 0.000253431785549854*G0_31 - 2.25830303955326e-05*G0_32 - 0.000109569517844986*G0_33 + 0.000873210508627222*G0_34 - 0.000148044310370708*G0_35 + 0.000170627340766242*G0_36 - 0.000148044310370706*G0_37 - 0.000122952054375672*G0_38 + 0.00017062734076624*G0_39 + 0.000491808217502688*G0_40 - 4.51660607910612e-05*G0_41 - 0.000110405926378154*G0_42 - 7.02583167860968e-05*G0_43 - 0.000120442828776169*G0_44 + 0.00012797050557468*G0_45 + 0.000491808217502688*G0_46 - 4.51660607910623e-05*G0_47 - 0.000110405926378155*G0_48 - 7.02583167860983e-05*G0_49 - 0.000120442828776167*G0_50 + 0.000127970505574679*G0_51 + 0.00110405926378154*G0_52 - 0.000903321215821261*G0_53 + 6.27306399875888e-05*G0_54 + 6.27306399875898e-05*G0_55; A[27] = 1.81868671452016e-05*G0_0 - 6.04020786312483e-05*G0_1 + 4.0749823735938e-06*G0_2 + 4.07498237359414e-06*G0_3 + 2.75178407412214e-05*G0_4 - 2.24993895422149e-05*G0_5 - 2.24993895422142e-05*G0_6 + 2.75178407412219e-05*G0_7 + 0.000443129240872321*G0_8 - 0.000456929981669591*G0_9 + 0.000357313725369302*G0_10 - 0.000144029549411503*G0_11 + 0.000443129240872321*G0_12 - 0.00045692998166959*G0_13 + 0.000357313725369301*G0_14 - 0.000144029549411502*G0_15 - 0.000144029549411501*G0_16 + 9.049940328876e-05*G0_17 - 0.000178405940124699*G0_18 + 5.50356814824432e-05*G0_19 - 0.000144029549411502*G0_20 + 9.04994032887604e-05*G0_21 - 0.0001784059401247*G0_22 + 5.50356814824433e-05*G0_23 - 0.000299350614020769*G0_24 + 0.000659424487549524*G0_25 - 0.000858657000150103*G0_26 + 0.000886258481744641*G0_27 + 5.52029631890782e-05*G0_28 - 2.76014815945403e-05*G0_29 - 2.00738047960263e-05*G0_30 - 2.7601481594539e-05*G0_31 + 2.88560943942906e-05*G0_32 - 2.00738047960271e-05*G0_33 - 0.000555375266023443*G0_34 - 8.78228959826243e-06*G0_35 - 0.00026681432208054*G0_36 - 8.78228959826268e-06*G0_37 + 0.00013549818237319*G0_38 - 0.00026681432208054*G0_39 - 0.000341254681532476*G0_40 + 0.00030863474873893*G0_41 + 0.000110405926378157*G0_42 - 9.28413471816316e-05*G0_43 - 5.52029631890789e-05*G0_44 - 4.01476095920557e-05*G0_45 - 0.000341254681532477*G0_46 + 0.000308634748738931*G0_47 + 0.000110405926378156*G0_48 - 9.28413471816295e-05*G0_49 - 5.5202963189079e-05*G0_50 - 4.01476095920547e-05*G0_51 - 0.000777859935846087*G0_52 + 0.000727675423856019*G0_53 - 0.000301107071940421*G0_54 - 0.000301107071940421*G0_55; A[28] = 0.000173437673437682*G0_0 + 0.000149650214754389*G0_1 + 9.59527869250135e-05*G0_2 + 9.59527869250138e-05*G0_3 - 4.01476095920541e-05*G0_4 + 0.000127970505574677*G0_5 + 0.000127970505574677*G0_6 - 4.01476095920561e-05*G0_7 + 0.000110405926378152*G0_8 - 0.000110405926378157*G0_9 + 0.000491808217502686*G0_10 - 0.000341254681532477*G0_11 + 0.000110405926378152*G0_12 - 0.000110405926378153*G0_13 + 0.000491808217502691*G0_14 - 0.000341254681532478*G0_15 - 0.000266814322080544*G0_16 + 0.000170627340766239*G0_17 - 0.000109569517844987*G0_18 - 2.00738047960288e-05*G0_19 - 0.000266814322080536*G0_20 + 0.000170627340766236*G0_21 - 0.000109569517844986*G0_22 - 2.00738047960295e-05*G0_23 - 0.000555375266023439*G0_24 + 0.000873210508627222*G0_25 - 0.000623960765743205*G0_26 + 5.52029631890783e-05*G0_27 + 0.00455006242043303*G0_28 - 0.00180664243164252*G0_29 + 0.00103714658112811*G0_30 - 0.00180664243164253*G0_31 + 0.000514391247898224*G0_32 + 0.00103714658112811*G0_33 + 0.000618942314544198*G0_34 - 0.000213284175957792*G0_35 + 0.000694219082529302*G0_36 - 0.000213284175957803*G0_37 + 0.000577121887885809*G0_38 + 0.000694219082529302*G0_39 + 0.000694219082529308*G0_40 - 0.00125461279975175*G0_41 + 0.00227503121021651*G0_42 + 6.27306399875882e-05*G0_43 - 0.000903321215821263*G0_44 + 0.000518573290564058*G0_45 + 0.000694219082529308*G0_46 - 0.00125461279975175*G0_47 + 0.00227503121021652*G0_48 + 6.27306399875898e-05*G0_49 - 0.000903321215821265*G0_50 + 0.00051857329056406*G0_51 - 0.000351291583930489*G0_52 + 0.00140516633572196*G0_53 + 0.000777859935846084*G0_54 + 0.000777859935846082*G0_55; A[29] = -1.77151327324942e-05*G0_0 - 0.000121496703527959*G0_1 - 0.00012149670352796*G0_2 + 3.98465025201172e-05*G0_3 - 5.52029631890776e-05*G0_4 - 0.000120442828776168*G0_5 - 7.02583167860966e-05*G0_6 - 9.28413471816307e-05*G0_7 - 5.52029631890794e-05*G0_8 - 0.000120442828776168*G0_9 - 7.02583167860986e-05*G0_10 - 9.28413471816302e-05*G0_11 + 0.000308634748738931*G0_12 - 4.51660607910597e-05*G0_13 - 4.51660607910668e-05*G0_14 + 0.000308634748738932*G0_15 + 0.00013549818237319*G0_16 - 0.000122952054375672*G0_17 - 2.25830303955313e-05*G0_18 + 2.88560943942901e-05*G0_19 - 8.78228959826506e-06*G0_20 - 0.000148044310370704*G0_21 + 0.000253431785549853*G0_22 - 2.76014815945373e-05*G0_23 - 8.78228959826371e-06*G0_24 - 0.000148044310370707*G0_25 + 0.000253431785549855*G0_26 - 2.76014815945403e-05*G0_27 - 0.00180664243164252*G0_28 + 0.00526937375895737*G0_29 - 0.00180664243164252*G0_30 - 0.000940959599813818*G0_31 - 0.000940959599813821*G0_32 + 0.000514391247898224*G0_33 - 0.000213284175957795*G0_34 + 0.00022583030395531*G0_35 - 0.00125461279975175*G0_36 + 0.000414022223918076*G0_37 - 0.000639852527873399*G0_38 + 6.27306399875928e-05*G0_39 - 0.000213284175957798*G0_40 + 0.000225830303955314*G0_41 - 0.00125461279975175*G0_42 + 0.000414022223918078*G0_43 - 0.000639852527873397*G0_44 + 6.27306399875888e-05*G0_45 + 0.000577121887885809*G0_46 - 0.000639852527873397*G0_47 - 0.000903321215821262*G0_48 - 0.000639852527873398*G0_49 + 0.00263468687947868*G0_50 - 0.000903321215821259*G0_51 - 0.000639852527873395*G0_52 + 0.000677490911865946*G0_53 + 0.000677490911865955*G0_54 - 0.00120442828776168*G0_55; A[30] = 0.000173437673437682*G0_0 + 9.59527869250138e-05*G0_1 + 0.000149650214754389*G0_2 + 9.59527869250141e-05*G0_3 + 0.000110405926378156*G0_4 - 0.000110405926378155*G0_5 + 0.000491808217502684*G0_6 - 0.000341254681532479*G0_7 - 4.0147609592056e-05*G0_8 + 0.000127970505574676*G0_9 + 0.000127970505574679*G0_10 - 4.01476095920568e-05*G0_11 - 0.000341254681532477*G0_12 + 0.000491808217502686*G0_13 - 0.000110405926378148*G0_14 + 0.000110405926378152*G0_15 - 0.000266814322080544*G0_16 + 0.00017062734076624*G0_17 - 0.000109569517844987*G0_18 - 2.00738047960286e-05*G0_19 - 0.000555375266023439*G0_20 + 0.000873210508627216*G0_21 - 0.000623960765743204*G0_22 + 5.52029631890762e-05*G0_23 - 0.000266814322080537*G0_24 + 0.000170627340766241*G0_25 - 0.000109569517844987*G0_26 - 2.00738047960263e-05*G0_27 + 0.00103714658112812*G0_28 - 0.00180664243164252*G0_29 + 0.00455006242043302*G0_30 + 0.000514391247898221*G0_31 - 0.00180664243164252*G0_32 + 0.00103714658112812*G0_33 + 0.0006942190825293*G0_34 - 0.00125461279975174*G0_35 + 0.00227503121021651*G0_36 + 6.27306399875837e-05*G0_37 - 0.000903321215821261*G0_38 + 0.000518573290564058*G0_39 + 0.000618942314544202*G0_40 - 0.00021328417595779*G0_41 + 0.000694219082529305*G0_42 - 0.000213284175957796*G0_43 + 0.000577121887885806*G0_44 + 0.000694219082529306*G0_45 + 0.000694219082529306*G0_46 + 6.27306399875915e-05*G0_47 + 0.000518573290564063*G0_48 - 0.00125461279975175*G0_49 - 0.000903321215821261*G0_50 + 0.00227503121021651*G0_51 - 0.000351291583930493*G0_52 + 0.000777859935846093*G0_53 + 0.00140516633572196*G0_54 + 0.000777859935846081*G0_55; A[31] = -1.77151327324944e-05*G0_0 - 0.00012149670352796*G0_1 + 3.98465025201166e-05*G0_2 - 0.00012149670352796*G0_3 - 9.28413471816317e-05*G0_4 - 7.02583167860952e-05*G0_5 - 0.00012044282877617*G0_6 - 5.5202963189076e-05*G0_7 + 0.000308634748738931*G0_8 - 4.51660607910611e-05*G0_9 - 4.51660607910645e-05*G0_10 + 0.000308634748738933*G0_11 - 5.5202963189077e-05*G0_12 - 0.000120442828776169*G0_13 - 7.02583167860994e-05*G0_14 - 9.28413471816293e-05*G0_15 - 8.78228959826274e-06*G0_16 - 0.000148044310370702*G0_17 + 0.000253431785549852*G0_18 - 2.76014815945365e-05*G0_19 + 0.000135498182373189*G0_20 - 0.000122952054375671*G0_21 - 2.25830303955315e-05*G0_22 + 2.885609439429e-05*G0_23 - 8.78228959826403e-06*G0_24 - 0.000148044310370706*G0_25 + 0.000253431785549854*G0_26 - 2.7601481594539e-05*G0_27 - 0.00180664243164253*G0_28 - 0.000940959599813818*G0_29 + 0.000514391247898221*G0_30 + 0.00526937375895737*G0_31 - 0.000940959599813815*G0_32 - 0.00180664243164252*G0_33 - 0.000213284175957797*G0_34 + 0.000414022223918079*G0_35 + 6.27306399875847e-05*G0_36 + 0.000225830303955313*G0_37 - 0.000639852527873392*G0_38 - 0.00125461279975175*G0_39 + 0.000577121887885808*G0_40 - 0.000639852527873396*G0_41 - 0.000903321215821263*G0_42 - 0.000639852527873397*G0_43 + 0.00263468687947869*G0_44 - 0.000903321215821259*G0_45 - 0.000213284175957796*G0_46 + 0.000225830303955317*G0_47 - 0.00125461279975176*G0_48 + 0.000414022223918076*G0_49 - 0.000639852527873395*G0_50 + 6.27306399875872e-05*G0_51 - 0.000639852527873402*G0_52 + 0.000677490911865953*G0_53 - 0.00120442828776168*G0_54 + 0.000677490911865957*G0_55; A[32] = -1.77151327324945e-05*G0_0 + 3.98465025201158e-05*G0_1 - 0.00012149670352796*G0_2 - 0.000121496703527961*G0_3 + 0.000308634748738931*G0_4 - 4.51660607910629e-05*G0_5 - 4.51660607910635e-05*G0_6 + 0.000308634748738935*G0_7 - 9.28413471816294e-05*G0_8 - 7.02583167860966e-05*G0_9 - 0.00012044282877617*G0_10 - 5.5202963189075e-05*G0_11 - 9.28413471816288e-05*G0_12 - 7.02583167860994e-05*G0_13 - 0.000120442828776167*G0_14 - 5.52029631890778e-05*G0_15 - 8.7822895982614e-06*G0_16 - 0.000148044310370706*G0_17 + 0.000253431785549853*G0_18 - 2.76014815945379e-05*G0_19 - 8.7822895982636e-06*G0_20 - 0.000148044310370705*G0_21 + 0.000253431785549854*G0_22 - 2.76014815945398e-05*G0_23 + 0.000135498182373187*G0_24 - 0.000122952054375671*G0_25 - 2.25830303955326e-05*G0_26 + 2.88560943942906e-05*G0_27 + 0.000514391247898224*G0_28 - 0.000940959599813821*G0_29 - 0.00180664243164252*G0_30 - 0.000940959599813815*G0_31 + 0.00526937375895737*G0_32 - 0.00180664243164253*G0_33 + 0.000577121887885808*G0_34 - 0.0006398525278734*G0_35 - 0.000903321215821258*G0_36 - 0.000639852527873391*G0_37 + 0.00263468687947868*G0_38 - 0.000903321215821265*G0_39 - 0.000213284175957796*G0_40 + 0.000414022223918073*G0_41 + 6.27306399875918e-05*G0_42 + 0.000225830303955314*G0_43 - 0.000639852527873392*G0_44 - 0.00125461279975175*G0_45 - 0.000213284175957799*G0_46 + 0.000414022223918076*G0_47 + 6.27306399875884e-05*G0_48 + 0.000225830303955316*G0_49 - 0.000639852527873396*G0_50 - 0.00125461279975175*G0_51 - 0.000639852527873392*G0_52 - 0.00120442828776168*G0_53 + 0.000677490911865944*G0_54 + 0.000677490911865956*G0_55; A[33] = 0.000173437673437683*G0_0 + 9.59527869250137e-05*G0_1 + 9.59527869250134e-05*G0_2 + 0.00014965021475439*G0_3 - 0.000341254681532476*G0_4 + 0.000491808217502687*G0_5 - 0.000110405926378156*G0_6 + 0.000110405926378151*G0_7 - 0.000341254681532478*G0_8 + 0.000491808217502685*G0_9 - 0.000110405926378152*G0_10 + 0.000110405926378153*G0_11 - 4.01476095920576e-05*G0_12 + 0.00012797050557468*G0_13 + 0.000127970505574682*G0_14 - 4.01476095920575e-05*G0_15 - 0.000555375266023447*G0_16 + 0.00087321050862722*G0_17 - 0.000623960765743204*G0_18 + 5.5202963189076e-05*G0_19 - 0.000266814322080536*G0_20 + 0.000170627340766235*G0_21 - 0.000109569517844986*G0_22 - 2.00738047960286e-05*G0_23 - 0.000266814322080536*G0_24 + 0.00017062734076624*G0_25 - 0.000109569517844986*G0_26 - 2.00738047960271e-05*G0_27 + 0.00103714658112811*G0_28 + 0.000514391247898224*G0_29 + 0.00103714658112812*G0_30 - 0.00180664243164252*G0_31 - 0.00180664243164253*G0_32 + 0.00455006242043303*G0_33 + 0.000694219082529299*G0_34 + 6.27306399875961e-05*G0_35 + 0.000518573290564059*G0_36 - 0.00125461279975176*G0_37 - 0.000903321215821267*G0_38 + 0.00227503121021651*G0_39 + 0.000694219082529305*G0_40 + 6.27306399875955e-05*G0_41 + 0.000518573290564059*G0_42 - 0.00125461279975175*G0_43 - 0.000903321215821263*G0_44 + 0.00227503121021652*G0_45 + 0.000618942314544202*G0_46 - 0.000213284175957793*G0_47 + 0.000694219082529309*G0_48 - 0.000213284175957798*G0_49 + 0.000577121887885807*G0_50 + 0.000694219082529305*G0_51 - 0.000351291583930493*G0_52 + 0.000777859935846087*G0_53 + 0.000777859935846088*G0_54 + 0.00140516633572196*G0_55; A[34] = 0.000149650214754388*G0_0 + 0.000173437673437682*G0_1 + 9.59527869250138e-05*G0_2 + 9.59527869250128e-05*G0_3 - 4.01476095920543e-05*G0_4 + 0.000127970505574678*G0_5 + 0.000127970505574675*G0_6 - 4.01476095920578e-05*G0_7 - 0.00026681432208054*G0_8 + 0.000170627340766238*G0_9 - 0.000109569517844988*G0_10 - 2.00738047960267e-05*G0_11 - 0.00026681432208054*G0_12 + 0.000170627340766237*G0_13 - 0.000109569517844985*G0_14 - 2.00738047960288e-05*G0_15 + 0.000110405926378153*G0_16 - 0.000110405926378156*G0_17 + 0.000491808217502688*G0_18 - 0.000341254681532478*G0_19 + 0.000110405926378158*G0_20 - 0.000110405926378159*G0_21 + 0.000491808217502688*G0_22 - 0.000341254681532478*G0_23 + 5.52029631890805e-05*G0_24 - 0.000623960765743205*G0_25 + 0.000873210508627222*G0_26 - 0.000555375266023443*G0_27 + 0.000618942314544198*G0_28 - 0.000213284175957795*G0_29 + 0.0006942190825293*G0_30 - 0.000213284175957797*G0_31 + 0.000577121887885808*G0_32 + 0.000694219082529299*G0_33 + 0.00455006242043302*G0_34 - 0.00180664243164252*G0_35 + 0.00103714658112812*G0_36 - 0.00180664243164252*G0_37 + 0.00051439124789822*G0_38 + 0.00103714658112811*G0_39 + 0.00227503121021651*G0_40 - 0.00125461279975175*G0_41 + 0.000694219082529302*G0_42 - 0.000903321215821258*G0_43 + 6.27306399875866e-05*G0_44 + 0.000518573290564058*G0_45 + 0.00227503121021651*G0_46 - 0.00125461279975175*G0_47 + 0.000694219082529305*G0_48 - 0.00090332121582126*G0_49 + 6.27306399875887e-05*G0_50 + 0.000518573290564054*G0_51 + 0.00140516633572196*G0_52 - 0.000351291583930495*G0_53 + 0.000777859935846076*G0_54 + 0.000777859935846079*G0_55; A[35] = -0.000121496703527958*G0_0 - 1.77151327324941e-05*G0_1 - 0.000121496703527959*G0_2 + 3.98465025201176e-05*G0_3 - 5.52029631890776e-05*G0_4 - 0.000120442828776169*G0_5 - 7.02583167860945e-05*G0_6 - 9.28413471816295e-05*G0_7 + 0.000135498182373189*G0_8 - 0.000122952054375669*G0_9 - 2.25830303955302e-05*G0_10 + 2.885609439429e-05*G0_11 - 8.78228959826283e-06*G0_12 - 0.000148044310370706*G0_13 + 0.000253431785549853*G0_14 - 2.76014815945378e-05*G0_15 - 5.52029631890789e-05*G0_16 - 0.000120442828776165*G0_17 - 7.02583167860995e-05*G0_18 - 9.28413471816294e-05*G0_19 + 0.000308634748738929*G0_20 - 4.51660607910585e-05*G0_21 - 4.51660607910641e-05*G0_22 + 0.000308634748738933*G0_23 - 2.760148159454e-05*G0_24 + 0.000253431785549855*G0_25 - 0.000148044310370708*G0_26 - 8.78228959826241e-06*G0_27 - 0.000213284175957792*G0_28 + 0.00022583030395531*G0_29 - 0.00125461279975174*G0_30 + 0.000414022223918079*G0_31 - 0.000639852527873401*G0_32 + 6.27306399875961e-05*G0_33 - 0.00180664243164252*G0_34 + 0.00526937375895736*G0_35 - 0.00180664243164252*G0_36 - 0.000940959599813814*G0_37 - 0.000940959599813818*G0_38 + 0.000514391247898226*G0_39 - 0.00125461279975175*G0_40 + 0.000225830303955312*G0_41 - 0.000213284175957791*G0_42 - 0.000639852527873397*G0_43 + 0.000414022223918078*G0_44 + 6.27306399875938e-05*G0_45 - 0.00090332121582126*G0_46 - 0.000639852527873394*G0_47 + 0.000577121887885811*G0_48 + 0.00263468687947868*G0_49 - 0.000639852527873396*G0_50 - 0.000903321215821254*G0_51 + 0.000677490911865945*G0_52 - 0.000639852527873387*G0_53 + 0.000677490911865953*G0_54 - 0.00120442828776167*G0_55; A[36] = 9.59527869250135e-05*G0_0 + 0.000173437673437682*G0_1 + 0.000149650214754389*G0_2 + 9.59527869250135e-05*G0_3 + 0.000110405926378158*G0_4 - 0.000110405926378155*G0_5 + 0.000491808217502686*G0_6 - 0.000341254681532479*G0_7 - 0.00026681432208054*G0_8 + 0.000170627340766238*G0_9 - 0.000109569517844988*G0_10 - 2.00738047960276e-05*G0_11 - 0.000555375266023444*G0_12 + 0.00087321050862722*G0_13 - 0.000623960765743202*G0_14 + 5.5202963189076e-05*G0_15 - 4.01476095920588e-05*G0_16 + 0.000127970505574677*G0_17 + 0.00012797050557468*G0_18 - 4.01476095920571e-05*G0_19 - 0.000341254681532472*G0_20 + 0.000491808217502682*G0_21 - 0.000110405926378151*G0_22 + 0.000110405926378153*G0_23 - 2.00738047960237e-05*G0_24 - 0.000109569517844987*G0_25 + 0.000170627340766242*G0_26 - 0.00026681432208054*G0_27 + 0.000694219082529302*G0_28 - 0.00125461279975175*G0_29 + 0.00227503121021651*G0_30 + 6.27306399875847e-05*G0_31 - 0.000903321215821258*G0_32 + 0.000518573290564059*G0_33 + 0.00103714658112812*G0_34 - 0.00180664243164252*G0_35 + 0.00455006242043302*G0_36 + 0.000514391247898215*G0_37 - 0.00180664243164252*G0_38 + 0.00103714658112812*G0_39 + 0.000694219082529307*G0_40 - 0.000213284175957787*G0_41 + 0.000618942314544197*G0_42 + 0.000577121887885808*G0_43 - 0.0002132841759578*G0_44 + 0.000694219082529305*G0_45 + 0.000518573290564063*G0_46 + 6.27306399875913e-05*G0_47 + 0.000694219082529307*G0_48 - 0.000903321215821264*G0_49 - 0.00125461279975175*G0_50 + 0.00227503121021651*G0_51 + 0.00077785993584609*G0_52 - 0.000351291583930492*G0_53 + 0.00140516633572196*G0_54 + 0.000777859935846084*G0_55; A[37] = -0.00012149670352796*G0_0 - 1.77151327324949e-05*G0_1 + 3.98465025201158e-05*G0_2 - 0.00012149670352796*G0_3 - 9.28413471816295e-05*G0_4 - 7.02583167860984e-05*G0_5 - 0.000120442828776167*G0_6 - 5.52029631890756e-05*G0_7 - 8.78228959826132e-06*G0_8 - 0.000148044310370707*G0_9 + 0.000253431785549853*G0_10 - 2.76014815945383e-05*G0_11 + 0.000135498182373189*G0_12 - 0.000122952054375671*G0_13 - 2.25830303955334e-05*G0_14 + 2.88560943942909e-05*G0_15 + 0.000308634748738933*G0_16 - 4.51660607910647e-05*G0_17 - 4.51660607910636e-05*G0_18 + 0.000308634748738932*G0_19 - 5.52029631890773e-05*G0_20 - 0.000120442828776169*G0_21 - 7.02583167860982e-05*G0_22 - 9.28413471816286e-05*G0_23 - 2.76014815945379e-05*G0_24 + 0.000253431785549851*G0_25 - 0.000148044310370706*G0_26 - 8.78228959826272e-06*G0_27 - 0.000213284175957803*G0_28 + 0.000414022223918076*G0_29 + 6.27306399875837e-05*G0_30 + 0.000225830303955313*G0_31 - 0.000639852527873391*G0_32 - 0.00125461279975176*G0_33 - 0.00180664243164252*G0_34 - 0.000940959599813814*G0_35 + 0.000514391247898215*G0_36 + 0.00526937375895736*G0_37 - 0.00094095959981381*G0_38 - 0.00180664243164252*G0_39 - 0.000903321215821265*G0_40 - 0.000639852527873391*G0_41 + 0.000577121887885799*G0_42 + 0.00263468687947868*G0_43 - 0.000639852527873391*G0_44 - 0.000903321215821268*G0_45 - 0.00125461279975176*G0_46 + 0.000225830303955316*G0_47 - 0.000213284175957801*G0_48 - 0.000639852527873393*G0_49 + 0.000414022223918076*G0_50 + 6.2730639987585e-05*G0_51 + 0.000677490911865949*G0_52 - 0.000639852527873403*G0_53 - 0.00120442828776168*G0_54 + 0.000677490911865943*G0_55; A[38] = 3.98465025201159e-05*G0_0 - 1.77151327324946e-05*G0_1 - 0.00012149670352796*G0_2 - 0.000121496703527961*G0_3 + 0.00030863474873893*G0_4 - 4.51660607910627e-05*G0_5 - 4.51660607910644e-05*G0_6 + 0.000308634748738933*G0_7 - 8.78228959826216e-06*G0_8 - 0.000148044310370706*G0_9 + 0.000253431785549853*G0_10 - 2.76014815945369e-05*G0_11 - 8.78228959826201e-06*G0_12 - 0.000148044310370707*G0_13 + 0.000253431785549855*G0_14 - 2.76014815945385e-05*G0_15 - 9.28413471816288e-05*G0_16 - 7.02583167860971e-05*G0_17 - 0.000120442828776169*G0_18 - 5.52029631890766e-05*G0_19 - 9.28413471816309e-05*G0_20 - 7.02583167860967e-05*G0_21 - 0.000120442828776169*G0_22 - 5.52029631890784e-05*G0_23 + 2.88560943942886e-05*G0_24 - 2.25830303955311e-05*G0_25 - 0.000122952054375672*G0_26 + 0.00013549818237319*G0_27 + 0.000577121887885809*G0_28 - 0.000639852527873399*G0_29 - 0.000903321215821261*G0_30 - 0.000639852527873392*G0_31 + 0.00263468687947868*G0_32 - 0.000903321215821267*G0_33 + 0.00051439124789822*G0_34 - 0.000940959599813818*G0_35 - 0.00180664243164252*G0_36 - 0.00094095959981381*G0_37 + 0.00526937375895737*G0_38 - 0.00180664243164253*G0_39 + 6.27306399875894e-05*G0_40 + 0.000414022223918073*G0_41 - 0.000213284175957796*G0_42 - 0.000639852527873395*G0_43 + 0.000225830303955318*G0_44 - 0.00125461279975175*G0_45 + 6.27306399875871e-05*G0_46 + 0.000414022223918076*G0_47 - 0.000213284175957799*G0_48 - 0.000639852527873395*G0_49 + 0.000225830303955316*G0_50 - 0.00125461279975175*G0_51 - 0.00120442828776168*G0_52 - 0.000639852527873393*G0_53 + 0.000677490911865947*G0_54 + 0.000677490911865951*G0_55; A[39] = 9.59527869250142e-05*G0_0 + 0.000173437673437682*G0_1 + 9.59527869250136e-05*G0_2 + 0.000149650214754389*G0_3 - 0.000341254681532475*G0_4 + 0.000491808217502686*G0_5 - 0.000110405926378154*G0_6 + 0.000110405926378151*G0_7 - 0.000555375266023443*G0_8 + 0.000873210508627217*G0_9 - 0.000623960765743204*G0_10 + 5.52029631890754e-05*G0_11 - 0.000266814322080541*G0_12 + 0.000170627340766239*G0_13 - 0.000109569517844984*G0_14 - 2.00738047960292e-05*G0_15 - 0.00034125468153248*G0_16 + 0.000491808217502685*G0_17 - 0.000110405926378152*G0_18 + 0.000110405926378152*G0_19 - 4.01476095920527e-05*G0_20 + 0.000127970505574675*G0_21 + 0.00012797050557468*G0_22 - 4.01476095920567e-05*G0_23 - 2.00738047960244e-05*G0_24 - 0.000109569517844986*G0_25 + 0.00017062734076624*G0_26 - 0.000266814322080539*G0_27 + 0.000694219082529302*G0_28 + 6.27306399875927e-05*G0_29 + 0.000518573290564057*G0_30 - 0.00125461279975175*G0_31 - 0.000903321215821265*G0_32 + 0.00227503121021651*G0_33 + 0.00103714658112811*G0_34 + 0.000514391247898226*G0_35 + 0.00103714658112812*G0_36 - 0.00180664243164252*G0_37 - 0.00180664243164253*G0_38 + 0.00455006242043303*G0_39 + 0.000518573290564059*G0_40 + 6.27306399875968e-05*G0_41 + 0.000694219082529303*G0_42 - 0.000903321215821261*G0_43 - 0.00125461279975175*G0_44 + 0.00227503121021652*G0_45 + 0.000694219082529306*G0_46 - 0.000213284175957793*G0_47 + 0.000618942314544202*G0_48 + 0.000577121887885808*G0_49 - 0.000213284175957798*G0_50 + 0.000694219082529304*G0_51 + 0.000777859935846089*G0_52 - 0.000351291583930491*G0_53 + 0.000777859935846087*G0_54 + 0.00140516633572196*G0_55; A[40] = 0.00014965021475439*G0_0 + 9.59527869250138e-05*G0_1 + 0.000173437673437683*G0_2 + 9.59527869250139e-05*G0_3 - 0.00026681432208054*G0_4 + 0.00017062734076624*G0_5 - 0.00010956951784499*G0_6 - 2.00738047960298e-05*G0_7 - 4.01476095920568e-05*G0_8 + 0.000127970505574679*G0_9 + 0.000127970505574679*G0_10 - 4.0147609592056e-05*G0_11 - 2.00738047960296e-05*G0_12 - 0.000109569517844986*G0_13 + 0.000170627340766241*G0_14 - 0.000266814322080541*G0_15 + 0.000110405926378151*G0_16 - 0.000110405926378155*G0_17 + 0.000491808217502688*G0_18 - 0.000341254681532478*G0_19 + 5.52029631890792e-05*G0_20 - 0.000623960765743208*G0_21 + 0.000873210508627222*G0_22 - 0.000555375266023445*G0_23 + 0.000110405926378157*G0_24 - 0.000110405926378151*G0_25 + 0.000491808217502689*G0_26 - 0.000341254681532476*G0_27 + 0.000694219082529308*G0_28 - 0.000213284175957798*G0_29 + 0.000618942314544202*G0_30 + 0.000577121887885809*G0_31 - 0.000213284175957796*G0_32 + 0.000694219082529305*G0_33 + 0.00227503121021651*G0_34 - 0.00125461279975175*G0_35 + 0.000694219082529307*G0_36 - 0.000903321215821266*G0_37 + 6.27306399875894e-05*G0_38 + 0.000518573290564059*G0_39 + 0.00455006242043304*G0_40 - 0.00180664243164252*G0_41 + 0.00103714658112812*G0_42 - 0.00180664243164252*G0_43 + 0.000514391247898219*G0_44 + 0.00103714658112812*G0_45 + 0.00227503121021652*G0_46 - 0.000903321215821261*G0_47 + 0.000518573290564064*G0_48 - 0.00125461279975176*G0_49 + 6.2730639987589e-05*G0_50 + 0.000694219082529307*G0_51 + 0.00140516633572196*G0_52 + 0.000777859935846093*G0_53 - 0.000351291583930493*G0_54 + 0.000777859935846081*G0_55; A[41] = -0.000121496703527959*G0_0 - 0.000121496703527959*G0_1 - 1.77151327324935e-05*G0_2 + 3.98465025201171e-05*G0_3 + 0.000135498182373187*G0_4 - 0.000122952054375671*G0_5 - 2.25830303955296e-05*G0_6 + 2.88560943942895e-05*G0_7 - 5.52029631890795e-05*G0_8 - 0.000120442828776168*G0_9 - 7.02583167860965e-05*G0_10 - 9.28413471816316e-05*G0_11 - 2.76014815945397e-05*G0_12 + 0.000253431785549855*G0_13 - 0.000148044310370706*G0_14 - 8.78228959826366e-06*G0_15 - 5.52029631890766e-05*G0_16 - 0.000120442828776169*G0_17 - 7.0258316786095e-05*G0_18 - 9.28413471816315e-05*G0_19 - 2.76014815945401e-05*G0_20 + 0.000253431785549854*G0_21 - 0.000148044310370704*G0_22 - 8.78228959826464e-06*G0_23 + 0.00030863474873893*G0_24 - 4.51660607910632e-05*G0_25 - 4.51660607910611e-05*G0_26 + 0.00030863474873893*G0_27 - 0.00125461279975175*G0_28 + 0.000225830303955314*G0_29 - 0.00021328417595779*G0_30 - 0.000639852527873396*G0_31 + 0.000414022223918073*G0_32 + 6.27306399875954e-05*G0_33 - 0.00125461279975175*G0_34 + 0.000225830303955312*G0_35 - 0.000213284175957787*G0_36 - 0.000639852527873391*G0_37 + 0.000414022223918073*G0_38 + 6.27306399875967e-05*G0_39 - 0.00180664243164252*G0_40 + 0.00526937375895736*G0_41 - 0.00180664243164251*G0_42 - 0.000940959599813814*G0_43 - 0.00094095959981382*G0_44 + 0.000514391247898226*G0_45 - 0.000903321215821257*G0_46 + 0.00263468687947868*G0_47 - 0.000903321215821257*G0_48 - 0.000639852527873396*G0_49 - 0.000639852527873395*G0_50 + 0.000577121887885816*G0_51 + 0.000677490911865965*G0_52 + 0.000677490911865953*G0_53 - 0.000639852527873387*G0_54 - 0.00120442828776167*G0_55; A[42] = 9.59527869250138e-05*G0_0 + 0.000149650214754389*G0_1 + 0.000173437673437683*G0_2 + 9.5952786925014e-05*G0_3 - 0.000266814322080539*G0_4 + 0.000170627340766238*G0_5 - 0.000109569517844988*G0_6 - 2.00738047960286e-05*G0_7 + 0.000110405926378156*G0_8 - 0.000110405926378157*G0_9 + 0.000491808217502688*G0_10 - 0.000341254681532478*G0_11 + 5.52029631890771e-05*G0_12 - 0.000623960765743205*G0_13 + 0.000873210508627225*G0_14 - 0.000555375266023445*G0_15 - 4.0147609592061e-05*G0_16 + 0.000127970505574679*G0_17 + 0.000127970505574679*G0_18 - 4.01476095920564e-05*G0_19 - 2.00738047960259e-05*G0_20 - 0.000109569517844988*G0_21 + 0.000170627340766238*G0_22 - 0.00026681432208054*G0_23 - 0.000341254681532474*G0_24 + 0.000491808217502688*G0_25 - 0.000110405926378154*G0_26 + 0.000110405926378157*G0_27 + 0.00227503121021651*G0_28 - 0.00125461279975175*G0_29 + 0.000694219082529305*G0_30 - 0.000903321215821263*G0_31 + 6.27306399875918e-05*G0_32 + 0.000518573290564059*G0_33 + 0.000694219082529302*G0_34 - 0.000213284175957791*G0_35 + 0.000618942314544197*G0_36 + 0.000577121887885799*G0_37 - 0.000213284175957796*G0_38 + 0.000694219082529303*G0_39 + 0.00103714658112812*G0_40 - 0.00180664243164251*G0_41 + 0.00455006242043303*G0_42 + 0.000514391247898218*G0_43 - 0.00180664243164253*G0_44 + 0.00103714658112812*G0_45 + 0.000518573290564062*G0_46 - 0.000903321215821259*G0_47 + 0.00227503121021652*G0_48 + 6.27306399875899e-05*G0_49 - 0.00125461279975176*G0_50 + 0.000694219082529307*G0_51 + 0.000777859935846085*G0_52 + 0.00140516633572197*G0_53 - 0.000351291583930491*G0_54 + 0.00077785993584608*G0_55; A[43] = -0.00012149670352796*G0_0 + 3.98465025201159e-05*G0_1 - 1.77151327324943e-05*G0_2 - 0.00012149670352796*G0_3 - 8.78228959826284e-06*G0_4 - 0.000148044310370707*G0_5 + 0.000253431785549855*G0_6 - 2.76014815945376e-05*G0_7 - 9.28413471816297e-05*G0_8 - 7.02583167860977e-05*G0_9 - 0.000120442828776169*G0_10 - 5.52029631890764e-05*G0_11 + 2.88560943942904e-05*G0_12 - 2.25830303955309e-05*G0_13 - 0.000122952054375672*G0_14 + 0.000135498182373189*G0_15 + 0.000308634748738931*G0_16 - 4.51660607910624e-05*G0_17 - 4.51660607910648e-05*G0_18 + 0.000308634748738933*G0_19 - 2.76014815945398e-05*G0_20 + 0.000253431785549855*G0_21 - 0.000148044310370707*G0_22 - 8.78228959826197e-06*G0_23 - 5.52029631890788e-05*G0_24 - 0.000120442828776171*G0_25 - 7.02583167860969e-05*G0_26 - 9.28413471816315e-05*G0_27 + 6.27306399875881e-05*G0_28 + 0.000414022223918078*G0_29 - 0.000213284175957796*G0_30 - 0.000639852527873397*G0_31 + 0.000225830303955314*G0_32 - 0.00125461279975175*G0_33 - 0.000903321215821258*G0_34 - 0.000639852527873397*G0_35 + 0.000577121887885808*G0_36 + 0.00263468687947868*G0_37 - 0.000639852527873395*G0_38 - 0.000903321215821261*G0_39 - 0.00180664243164252*G0_40 - 0.000940959599813814*G0_41 + 0.000514391247898218*G0_42 + 0.00526937375895736*G0_43 - 0.000940959599813813*G0_44 - 0.00180664243164252*G0_45 - 0.00125461279975175*G0_46 - 0.000639852527873395*G0_47 + 6.27306399875889e-05*G0_48 + 0.000225830303955316*G0_49 + 0.000414022223918075*G0_50 - 0.000213284175957796*G0_51 + 0.000677490911865956*G0_52 - 0.00120442828776168*G0_53 - 0.000639852527873388*G0_54 + 0.000677490911865956*G0_55; A[44] = 3.98465025201155e-05*G0_0 - 0.000121496703527959*G0_1 - 1.77151327324948e-05*G0_2 - 0.00012149670352796*G0_3 - 8.78228959826249e-06*G0_4 - 0.000148044310370706*G0_5 + 0.000253431785549853*G0_6 - 2.76014815945378e-05*G0_7 + 0.000308634748738929*G0_8 - 4.51660607910577e-05*G0_9 - 4.51660607910668e-05*G0_10 + 0.000308634748738934*G0_11 - 2.760148159454e-05*G0_12 + 0.000253431785549856*G0_13 - 0.00014804431037071*G0_14 - 8.7822895982602e-06*G0_15 - 9.28413471816292e-05*G0_16 - 7.02583167860934e-05*G0_17 - 0.000120442828776171*G0_18 - 5.52029631890743e-05*G0_19 + 2.88560943942902e-05*G0_20 - 2.25830303955301e-05*G0_21 - 0.000122952054375672*G0_22 + 0.00013549818237319*G0_23 - 9.28413471816309e-05*G0_24 - 7.02583167860983e-05*G0_25 - 0.000120442828776169*G0_26 - 5.52029631890789e-05*G0_27 - 0.000903321215821263*G0_28 - 0.000639852527873397*G0_29 + 0.000577121887885806*G0_30 + 0.00263468687947869*G0_31 - 0.000639852527873392*G0_32 - 0.000903321215821263*G0_33 + 6.27306399875866e-05*G0_34 + 0.000414022223918078*G0_35 - 0.0002132841759578*G0_36 - 0.000639852527873391*G0_37 + 0.000225830303955318*G0_38 - 0.00125461279975175*G0_39 + 0.000514391247898219*G0_40 - 0.00094095959981382*G0_41 - 0.00180664243164253*G0_42 - 0.000940959599813813*G0_43 + 0.00526937375895737*G0_44 - 0.00180664243164252*G0_45 + 6.27306399875876e-05*G0_46 - 0.000639852527873395*G0_47 - 0.00125461279975176*G0_48 + 0.000414022223918077*G0_49 + 0.000225830303955317*G0_50 - 0.0002132841759578*G0_51 - 0.00120442828776168*G0_52 + 0.000677490911865936*G0_53 - 0.000639852527873396*G0_54 + 0.000677490911865949*G0_55; A[45] = 9.59527869250147e-05*G0_0 + 9.59527869250137e-05*G0_1 + 0.000173437673437683*G0_2 + 0.00014965021475439*G0_3 - 0.000555375266023443*G0_4 + 0.000873210508627223*G0_5 - 0.000623960765743207*G0_6 + 5.52029631890753e-05*G0_7 - 0.000341254681532478*G0_8 + 0.000491808217502686*G0_9 - 0.000110405926378152*G0_10 + 0.000110405926378152*G0_11 - 2.00738047960296e-05*G0_12 - 0.000109569517844986*G0_13 + 0.000170627340766241*G0_14 - 0.000266814322080542*G0_15 - 0.000341254681532481*G0_16 + 0.000491808217502685*G0_17 - 0.000110405926378151*G0_18 + 0.000110405926378152*G0_19 - 2.00738047960254e-05*G0_20 - 0.00010956951784499*G0_21 + 0.00017062734076624*G0_22 - 0.000266814322080541*G0_23 - 4.01476095920528e-05*G0_24 + 0.00012797050557468*G0_25 + 0.00012797050557468*G0_26 - 4.01476095920557e-05*G0_27 + 0.000518573290564058*G0_28 + 6.27306399875888e-05*G0_29 + 0.000694219082529306*G0_30 - 0.000903321215821259*G0_31 - 0.00125461279975175*G0_32 + 0.00227503121021652*G0_33 + 0.000518573290564058*G0_34 + 6.27306399875938e-05*G0_35 + 0.000694219082529305*G0_36 - 0.000903321215821268*G0_37 - 0.00125461279975175*G0_38 + 0.00227503121021652*G0_39 + 0.00103714658112812*G0_40 + 0.000514391247898226*G0_41 + 0.00103714658112812*G0_42 - 0.00180664243164252*G0_43 - 0.00180664243164252*G0_44 + 0.00455006242043303*G0_45 + 0.000694219082529307*G0_46 + 0.00057712188788581*G0_47 + 0.000694219082529309*G0_48 - 0.000213284175957799*G0_49 - 0.000213284175957798*G0_50 + 0.0006189423145442*G0_51 + 0.000777859935846086*G0_52 + 0.000777859935846088*G0_53 - 0.000351291583930489*G0_54 + 0.00140516633572197*G0_55; A[46] = 0.000149650214754389*G0_0 + 9.59527869250138e-05*G0_1 + 9.59527869250146e-05*G0_2 + 0.000173437673437683*G0_3 - 2.00738047960281e-05*G0_4 - 0.000109569517844986*G0_5 + 0.000170627340766236*G0_6 - 0.000266814322080542*G0_7 - 2.00738047960292e-05*G0_8 - 0.000109569517844988*G0_9 + 0.000170627340766239*G0_10 - 0.00026681432208054*G0_11 - 4.01476095920576e-05*G0_12 + 0.000127970505574679*G0_13 + 0.00012797050557468*G0_14 - 4.0147609592058e-05*G0_15 + 5.52029631890731e-05*G0_16 - 0.000623960765743206*G0_17 + 0.000873210508627222*G0_18 - 0.000555375266023445*G0_19 + 0.000110405926378156*G0_20 - 0.000110405926378159*G0_21 + 0.000491808217502689*G0_22 - 0.000341254681532479*G0_23 + 0.000110405926378156*G0_24 - 0.00011040592637815*G0_25 + 0.000491808217502688*G0_26 - 0.000341254681532477*G0_27 + 0.000694219082529308*G0_28 + 0.000577121887885809*G0_29 + 0.000694219082529306*G0_30 - 0.000213284175957796*G0_31 - 0.000213284175957799*G0_32 + 0.000618942314544202*G0_33 + 0.00227503121021651*G0_34 - 0.00090332121582126*G0_35 + 0.000518573290564063*G0_36 - 0.00125461279975176*G0_37 + 6.27306399875871e-05*G0_38 + 0.000694219082529306*G0_39 + 0.00227503121021652*G0_40 - 0.000903321215821257*G0_41 + 0.000518573290564062*G0_42 - 0.00125461279975175*G0_43 + 6.27306399875876e-05*G0_44 + 0.000694219082529307*G0_45 + 0.00455006242043303*G0_46 - 0.00180664243164253*G0_47 + 0.00103714658112812*G0_48 - 0.00180664243164252*G0_49 + 0.00051439124789822*G0_50 + 0.00103714658112812*G0_51 + 0.00140516633572197*G0_52 + 0.000777859935846094*G0_53 + 0.000777859935846084*G0_54 - 0.000351291583930494*G0_55; A[47] = -0.000121496703527959*G0_0 - 0.00012149670352796*G0_1 + 3.98465025201168e-05*G0_2 - 1.77151327324946e-05*G0_3 + 2.8856094394288e-05*G0_4 - 2.25830303955294e-05*G0_5 - 0.000122952054375671*G0_6 + 0.00013549818237319*G0_7 - 2.76014815945395e-05*G0_8 + 0.000253431785549856*G0_9 - 0.000148044310370708*G0_10 - 8.78228959826212e-06*G0_11 - 5.52029631890784e-05*G0_12 - 0.000120442828776167*G0_13 - 7.02583167860982e-05*G0_14 - 9.28413471816304e-05*G0_15 - 2.76014815945388e-05*G0_16 + 0.000253431785549855*G0_17 - 0.000148044310370707*G0_18 - 8.782289598262e-06*G0_19 - 5.52029631890794e-05*G0_20 - 0.000120442828776167*G0_21 - 7.0258316786099e-05*G0_22 - 9.28413471816306e-05*G0_23 + 0.00030863474873893*G0_24 - 4.51660607910627e-05*G0_25 - 4.51660607910621e-05*G0_26 + 0.000308634748738931*G0_27 - 0.00125461279975175*G0_28 - 0.000639852527873397*G0_29 + 6.27306399875915e-05*G0_30 + 0.000225830303955317*G0_31 + 0.000414022223918076*G0_32 - 0.000213284175957793*G0_33 - 0.00125461279975175*G0_34 - 0.000639852527873394*G0_35 + 6.27306399875913e-05*G0_36 + 0.000225830303955316*G0_37 + 0.000414022223918076*G0_38 - 0.000213284175957793*G0_39 - 0.000903321215821261*G0_40 + 0.00263468687947868*G0_41 - 0.000903321215821259*G0_42 - 0.000639852527873395*G0_43 - 0.000639852527873395*G0_44 + 0.00057712188788581*G0_45 - 0.00180664243164253*G0_46 + 0.00526937375895736*G0_47 - 0.00180664243164253*G0_48 - 0.000940959599813815*G0_49 - 0.000940959599813816*G0_50 + 0.000514391247898223*G0_51 + 0.000677490911865949*G0_52 + 0.000677490911865953*G0_53 - 0.00120442828776168*G0_54 - 0.000639852527873383*G0_55; A[48] = 9.59527869250144e-05*G0_0 + 0.000149650214754389*G0_1 + 9.59527869250144e-05*G0_2 + 0.000173437673437683*G0_3 - 2.00738047960269e-05*G0_4 - 0.000109569517844988*G0_5 + 0.000170627340766239*G0_6 - 0.000266814322080541*G0_7 + 5.52029631890764e-05*G0_8 - 0.000623960765743208*G0_9 + 0.000873210508627222*G0_10 - 0.000555375266023444*G0_11 + 0.000110405926378154*G0_12 - 0.000110405926378155*G0_13 + 0.000491808217502692*G0_14 - 0.000341254681532479*G0_15 - 2.00738047960333e-05*G0_16 - 0.000109569517844986*G0_17 + 0.000170627340766239*G0_18 - 0.000266814322080541*G0_19 - 4.01476095920549e-05*G0_20 + 0.000127970505574678*G0_21 + 0.000127970505574679*G0_22 - 4.01476095920572e-05*G0_23 - 0.000341254681532475*G0_24 + 0.000491808217502689*G0_25 - 0.000110405926378155*G0_26 + 0.000110405926378156*G0_27 + 0.00227503121021652*G0_28 - 0.000903321215821262*G0_29 + 0.000518573290564063*G0_30 - 0.00125461279975176*G0_31 + 6.27306399875884e-05*G0_32 + 0.000694219082529309*G0_33 + 0.000694219082529305*G0_34 + 0.000577121887885811*G0_35 + 0.000694219082529307*G0_36 - 0.000213284175957801*G0_37 - 0.000213284175957799*G0_38 + 0.000618942314544202*G0_39 + 0.000518573290564064*G0_40 - 0.000903321215821257*G0_41 + 0.00227503121021652*G0_42 + 6.27306399875889e-05*G0_43 - 0.00125461279975176*G0_44 + 0.000694219082529309*G0_45 + 0.00103714658112812*G0_46 - 0.00180664243164253*G0_47 + 0.00455006242043303*G0_48 + 0.000514391247898219*G0_49 - 0.00180664243164253*G0_50 + 0.00103714658112812*G0_51 + 0.000777859935846087*G0_52 + 0.00140516633572197*G0_53 + 0.00077785993584609*G0_54 - 0.000351291583930491*G0_55; A[49] = -0.00012149670352796*G0_0 + 3.98465025201157e-05*G0_1 - 0.00012149670352796*G0_2 - 1.77151327324941e-05*G0_3 - 2.76014815945373e-05*G0_4 + 0.000253431785549852*G0_5 - 0.000148044310370704*G0_6 - 8.782289598262e-06*G0_7 + 2.88560943942922e-05*G0_8 - 2.25830303955307e-05*G0_9 - 0.000122952054375671*G0_10 + 0.000135498182373189*G0_11 - 9.28413471816284e-05*G0_12 - 7.02583167860995e-05*G0_13 - 0.000120442828776168*G0_14 - 5.52029631890756e-05*G0_15 - 2.76014815945374e-05*G0_16 + 0.000253431785549854*G0_17 - 0.000148044310370707*G0_18 - 8.78228959826243e-06*G0_19 + 0.00030863474873893*G0_20 - 4.51660607910606e-05*G0_21 - 4.51660607910647e-05*G0_22 + 0.000308634748738933*G0_23 - 5.52029631890775e-05*G0_24 - 0.00012044282877617*G0_25 - 7.02583167860982e-05*G0_26 - 9.28413471816296e-05*G0_27 + 6.27306399875899e-05*G0_28 - 0.000639852527873398*G0_29 - 0.00125461279975175*G0_30 + 0.000414022223918076*G0_31 + 0.000225830303955316*G0_32 - 0.000213284175957798*G0_33 - 0.00090332121582126*G0_34 + 0.00263468687947868*G0_35 - 0.000903321215821264*G0_36 - 0.000639852527873393*G0_37 - 0.000639852527873395*G0_38 + 0.000577121887885808*G0_39 - 0.00125461279975176*G0_40 - 0.000639852527873396*G0_41 + 6.273063998759e-05*G0_42 + 0.000225830303955316*G0_43 + 0.000414022223918077*G0_44 - 0.000213284175957798*G0_45 - 0.00180664243164252*G0_46 - 0.000940959599813815*G0_47 + 0.000514391247898219*G0_48 + 0.00526937375895736*G0_49 - 0.000940959599813816*G0_50 - 0.00180664243164252*G0_51 + 0.000677490911865948*G0_52 - 0.00120442828776169*G0_53 + 0.000677490911865947*G0_54 - 0.000639852527873395*G0_55; A[50] = 3.98465025201155e-05*G0_0 - 0.00012149670352796*G0_1 - 0.000121496703527961*G0_2 - 1.77151327324942e-05*G0_3 - 2.76014815945386e-05*G0_4 + 0.000253431785549855*G0_5 - 0.000148044310370707*G0_6 - 8.78228959826275e-06*G0_7 - 2.76014815945402e-05*G0_8 + 0.000253431785549854*G0_9 - 0.000148044310370707*G0_10 - 8.78228959826265e-06*G0_11 + 0.00030863474873893*G0_12 - 4.51660607910601e-05*G0_13 - 4.51660607910672e-05*G0_14 + 0.000308634748738933*G0_15 + 2.88560943942921e-05*G0_16 - 2.25830303955324e-05*G0_17 - 0.000122952054375671*G0_18 + 0.000135498182373189*G0_19 - 9.28413471816301e-05*G0_20 - 7.02583167860991e-05*G0_21 - 0.000120442828776168*G0_22 - 5.52029631890768e-05*G0_23 - 9.28413471816304e-05*G0_24 - 7.02583167860992e-05*G0_25 - 0.000120442828776167*G0_26 - 5.5202963189079e-05*G0_27 - 0.000903321215821265*G0_28 + 0.00263468687947868*G0_29 - 0.000903321215821261*G0_30 - 0.000639852527873394*G0_31 - 0.000639852527873396*G0_32 + 0.000577121887885807*G0_33 + 6.27306399875887e-05*G0_34 - 0.000639852527873397*G0_35 - 0.00125461279975175*G0_36 + 0.000414022223918076*G0_37 + 0.000225830303955316*G0_38 - 0.000213284175957798*G0_39 + 6.2730639987589e-05*G0_40 - 0.000639852527873395*G0_41 - 0.00125461279975176*G0_42 + 0.000414022223918075*G0_43 + 0.000225830303955317*G0_44 - 0.000213284175957798*G0_45 + 0.00051439124789822*G0_46 - 0.000940959599813815*G0_47 - 0.00180664243164253*G0_48 - 0.000940959599813816*G0_49 + 0.00526937375895736*G0_50 - 0.00180664243164253*G0_51 - 0.00120442828776168*G0_52 + 0.000677490911865949*G0_53 + 0.000677490911865948*G0_54 - 0.000639852527873397*G0_55; A[51] = 9.59527869250141e-05*G0_0 + 9.59527869250135e-05*G0_1 + 0.000149650214754389*G0_2 + 0.000173437673437683*G0_3 + 5.52029631890785e-05*G0_4 - 0.000623960765743207*G0_5 + 0.000873210508627219*G0_6 - 0.000555375266023445*G0_7 - 2.00738047960284e-05*G0_8 - 0.000109569517844988*G0_9 + 0.000170627340766239*G0_10 - 0.00026681432208054*G0_11 - 0.000341254681532478*G0_12 + 0.000491808217502687*G0_13 - 0.000110405926378149*G0_14 + 0.000110405926378151*G0_15 - 2.00738047960327e-05*G0_16 - 0.000109569517844986*G0_17 + 0.000170627340766239*G0_18 - 0.00026681432208054*G0_19 - 0.000341254681532474*G0_20 + 0.000491808217502682*G0_21 - 0.000110405926378152*G0_22 + 0.000110405926378153*G0_23 - 4.0147609592053e-05*G0_24 + 0.000127970505574682*G0_25 + 0.000127970505574679*G0_26 - 4.01476095920547e-05*G0_27 + 0.00051857329056406*G0_28 - 0.000903321215821259*G0_29 + 0.00227503121021651*G0_30 + 6.27306399875872e-05*G0_31 - 0.00125461279975175*G0_32 + 0.000694219082529305*G0_33 + 0.000518573290564054*G0_34 - 0.000903321215821254*G0_35 + 0.00227503121021651*G0_36 + 6.2730639987585e-05*G0_37 - 0.00125461279975175*G0_38 + 0.000694219082529304*G0_39 + 0.000694219082529306*G0_40 + 0.000577121887885816*G0_41 + 0.000694219082529306*G0_42 - 0.000213284175957796*G0_43 - 0.0002132841759578*G0_44 + 0.0006189423145442*G0_45 + 0.00103714658112812*G0_46 + 0.000514391247898223*G0_47 + 0.00103714658112812*G0_48 - 0.00180664243164252*G0_49 - 0.00180664243164253*G0_50 + 0.00455006242043302*G0_51 + 0.000777859935846086*G0_52 + 0.000777859935846093*G0_53 + 0.00140516633572196*G0_54 - 0.000351291583930495*G0_55; A[52] = -0.000280029576904591*G0_0 + 0.000204250963799583*G0_1 + 0.000204250963799588*G0_2 + 0.000204250963799585*G0_3 - 0.000301107071940421*G0_4 + 6.27306399875851e-05*G0_5 + 6.27306399875877e-05*G0_6 - 0.000301107071940422*G0_7 - 0.000301107071940419*G0_8 + 6.2730639987587e-05*G0_9 + 6.2730639987588e-05*G0_10 - 0.00030110707194042*G0_11 - 0.000301107071940422*G0_12 + 6.27306399875878e-05*G0_13 + 6.27306399875872e-05*G0_14 - 0.000301107071940423*G0_15 + 0.000727675423856012*G0_16 - 0.000903321215821268*G0_17 + 0.00110405926378155*G0_18 - 0.000777859935846087*G0_19 + 0.000727675423856017*G0_20 - 0.000903321215821267*G0_21 + 0.00110405926378155*G0_22 - 0.000777859935846089*G0_23 + 0.00072767542385602*G0_24 - 0.000903321215821261*G0_25 + 0.00110405926378155*G0_26 - 0.000777859935846087*G0_27 - 0.000351291583930489*G0_28 - 0.000639852527873395*G0_29 - 0.000351291583930494*G0_30 - 0.000639852527873402*G0_31 - 0.000639852527873392*G0_32 - 0.000351291583930492*G0_33 + 0.00140516633572196*G0_34 + 0.000677490911865945*G0_35 + 0.00077785993584609*G0_36 + 0.000677490911865949*G0_37 - 0.00120442828776168*G0_38 + 0.000777859935846089*G0_39 + 0.00140516633572196*G0_40 + 0.000677490911865965*G0_41 + 0.000777859935846085*G0_42 + 0.000677490911865956*G0_43 - 0.00120442828776168*G0_44 + 0.000777859935846086*G0_45 + 0.00140516633572197*G0_46 + 0.000677490911865949*G0_47 + 0.000777859935846088*G0_48 + 0.000677490911865948*G0_49 - 0.00120442828776168*G0_50 + 0.000777859935846086*G0_51 + 0.0165608889567232*G0_52 - 0.00225830303955316*G0_53 - 0.00225830303955317*G0_54 - 0.00225830303955316*G0_55; A[53] = 0.000204250963799584*G0_0 - 0.000280029576904591*G0_1 + 0.000204250963799586*G0_2 + 0.000204250963799587*G0_3 - 0.000301107071940421*G0_4 + 6.27306399875866e-05*G0_5 + 6.27306399875852e-05*G0_6 - 0.000301107071940423*G0_7 + 0.000727675423856011*G0_8 - 0.000903321215821267*G0_9 + 0.00110405926378154*G0_10 - 0.000777859935846089*G0_11 + 0.000727675423856014*G0_12 - 0.000903321215821259*G0_13 + 0.00110405926378155*G0_14 - 0.00077785993584609*G0_15 - 0.000301107071940427*G0_16 + 6.27306399875892e-05*G0_17 + 6.27306399875882e-05*G0_18 - 0.000301107071940422*G0_19 - 0.000301107071940417*G0_20 + 6.27306399875843e-05*G0_21 + 6.27306399875875e-05*G0_22 - 0.000301107071940424*G0_23 - 0.000777859935846082*G0_24 + 0.00110405926378155*G0_25 - 0.000903321215821261*G0_26 + 0.000727675423856019*G0_27 + 0.00140516633572196*G0_28 + 0.000677490911865946*G0_29 + 0.000777859935846094*G0_30 + 0.000677490911865952*G0_31 - 0.00120442828776168*G0_32 + 0.000777859935846087*G0_33 - 0.000351291583930495*G0_34 - 0.000639852527873388*G0_35 - 0.000351291583930492*G0_36 - 0.000639852527873403*G0_37 - 0.000639852527873393*G0_38 - 0.000351291583930491*G0_39 + 0.000777859935846093*G0_40 + 0.000677490911865953*G0_41 + 0.00140516633572197*G0_42 - 0.00120442828776168*G0_43 + 0.000677490911865936*G0_44 + 0.000777859935846088*G0_45 + 0.000777859935846094*G0_46 + 0.000677490911865953*G0_47 + 0.00140516633572197*G0_48 - 0.00120442828776169*G0_49 + 0.000677490911865949*G0_50 + 0.000777859935846093*G0_51 - 0.00225830303955316*G0_52 + 0.0165608889567231*G0_53 - 0.00225830303955317*G0_54 - 0.00225830303955317*G0_55; A[54] = 0.000204250963799586*G0_0 + 0.000204250963799585*G0_1 - 0.000280029576904595*G0_2 + 0.000204250963799586*G0_3 + 0.000727675423856025*G0_4 - 0.000903321215821268*G0_5 + 0.00110405926378154*G0_6 - 0.000777859935846091*G0_7 - 0.000301107071940422*G0_8 + 6.27306399875871e-05*G0_9 + 6.27306399875818e-05*G0_10 - 0.000301107071940417*G0_11 - 0.00077785993584609*G0_12 + 0.00110405926378155*G0_13 - 0.000903321215821262*G0_14 + 0.00072767542385602*G0_15 - 0.000301107071940426*G0_16 + 6.27306399875907e-05*G0_17 + 6.27306399875846e-05*G0_18 - 0.00030110707194042*G0_19 - 0.000777859935846083*G0_20 + 0.00110405926378154*G0_21 - 0.000903321215821265*G0_22 + 0.000727675423856022*G0_23 - 0.000301107071940416*G0_24 + 6.27306399875893e-05*G0_25 + 6.27306399875888e-05*G0_26 - 0.000301107071940421*G0_27 + 0.000777859935846084*G0_28 + 0.000677490911865955*G0_29 + 0.00140516633572196*G0_30 - 0.00120442828776168*G0_31 + 0.000677490911865944*G0_32 + 0.000777859935846088*G0_33 + 0.000777859935846076*G0_34 + 0.000677490911865953*G0_35 + 0.00140516633572196*G0_36 - 0.00120442828776168*G0_37 + 0.000677490911865947*G0_38 + 0.000777859935846087*G0_39 - 0.000351291583930493*G0_40 - 0.000639852527873387*G0_41 - 0.000351291583930491*G0_42 - 0.000639852527873388*G0_43 - 0.000639852527873396*G0_44 - 0.000351291583930489*G0_45 + 0.000777859935846084*G0_46 - 0.00120442828776168*G0_47 + 0.00077785993584609*G0_48 + 0.000677490911865947*G0_49 + 0.000677490911865948*G0_50 + 0.00140516633572196*G0_51 - 0.00225830303955317*G0_52 - 0.00225830303955317*G0_53 + 0.0165608889567232*G0_54 - 0.00225830303955316*G0_55; A[55] = 0.000204250963799585*G0_0 + 0.000204250963799585*G0_1 + 0.000204250963799584*G0_2 - 0.000280029576904594*G0_3 - 0.000777859935846086*G0_4 + 0.00110405926378155*G0_5 - 0.000903321215821268*G0_6 + 0.000727675423856019*G0_7 - 0.000777859935846089*G0_8 + 0.00110405926378154*G0_9 - 0.000903321215821265*G0_10 + 0.00072767542385602*G0_11 - 0.000301107071940423*G0_12 + 6.2730639987589e-05*G0_13 + 6.27306399875903e-05*G0_14 - 0.000301107071940422*G0_15 - 0.000777859935846091*G0_16 + 0.00110405926378154*G0_17 - 0.000903321215821263*G0_18 + 0.00072767542385602*G0_19 - 0.000301107071940414*G0_20 + 6.27306399875827e-05*G0_21 + 6.27306399875884e-05*G0_22 - 0.000301107071940423*G0_23 - 0.000301107071940416*G0_24 + 6.27306399875864e-05*G0_25 + 6.27306399875898e-05*G0_26 - 0.000301107071940421*G0_27 + 0.000777859935846082*G0_28 - 0.00120442828776168*G0_29 + 0.000777859935846082*G0_30 + 0.000677490911865957*G0_31 + 0.000677490911865956*G0_32 + 0.00140516633572196*G0_33 + 0.000777859935846079*G0_34 - 0.00120442828776167*G0_35 + 0.000777859935846084*G0_36 + 0.000677490911865943*G0_37 + 0.000677490911865951*G0_38 + 0.00140516633572196*G0_39 + 0.000777859935846081*G0_40 - 0.00120442828776167*G0_41 + 0.00077785993584608*G0_42 + 0.000677490911865956*G0_43 + 0.000677490911865949*G0_44 + 0.00140516633572197*G0_45 - 0.000351291583930494*G0_46 - 0.000639852527873383*G0_47 - 0.000351291583930491*G0_48 - 0.000639852527873395*G0_49 - 0.000639852527873397*G0_50 - 0.000351291583930495*G0_51 - 0.00225830303955316*G0_52 - 0.00225830303955317*G0_53 - 0.00225830303955316*G0_54 + 0.0165608889567231*G0_55; } /// Constructor poisson3d_5_form_0::poisson3d_5_form_0() : ufc::form() { // Do nothing } /// Destructor poisson3d_5_form_0::~poisson3d_5_form_0() { // Do nothing } /// Return a string identifying the form const char* poisson3d_5_form_0::signature() const { return "60a0113f115d8a0e926c2c7a29afa288ebba53872e334de46913eb6f51b1c30e0803686fc25448aea27eca48d3ea09d04734317e204a72b44e64394680524b92"; } /// Return the rank of the global tensor (r) std::size_t poisson3d_5_form_0::rank() const { return 2; } /// Return the number of coefficients (n) std::size_t poisson3d_5_form_0::num_coefficients() const { return 0; } /// Return the number of cell domains std::size_t poisson3d_5_form_0::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson3d_5_form_0::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson3d_5_form_0::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson3d_5_form_0::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson3d_5_form_0::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson3d_5_form_0::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson3d_5_form_0::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson3d_5_form_0::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson3d_5_form_0::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson3d_5_finite_element_0(); break; } case 1: { return new poisson3d_5_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson3d_5_form_0::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson3d_5_dofmap_0(); break; } case 1: { return new poisson3d_5_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson3d_5_form_0::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson3d_5_form_0::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson3d_5_form_0::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson3d_5_form_0::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson3d_5_form_0::create_default_cell_integral() const { return new poisson3d_5_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson3d_5_form_0::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson3d_5_form_0::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson3d_5_form_0::create_default_point_integral() const { return 0; } /// Constructor poisson3d_5_form_1::poisson3d_5_form_1() : ufc::form() { // Do nothing } /// Destructor poisson3d_5_form_1::~poisson3d_5_form_1() { // Do nothing } /// Return a string identifying the form const char* poisson3d_5_form_1::signature() const { return "1184f6d07bbbf78b9bbd040ccb06a3a6d45e9bab003655647800774492f20003cd9e9545abe19067469cbd792bf0efb590404692a80ec28b4eb1df2d1cca1ee7"; } /// Return the rank of the global tensor (r) std::size_t poisson3d_5_form_1::rank() const { return 1; } /// Return the number of coefficients (n) std::size_t poisson3d_5_form_1::num_coefficients() const { return 1; } /// Return the number of cell domains std::size_t poisson3d_5_form_1::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson3d_5_form_1::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson3d_5_form_1::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson3d_5_form_1::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson3d_5_form_1::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson3d_5_form_1::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson3d_5_form_1::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson3d_5_form_1::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson3d_5_form_1::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson3d_5_finite_element_0(); break; } case 1: { return new poisson3d_5_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson3d_5_form_1::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson3d_5_dofmap_0(); break; } case 1: { return new poisson3d_5_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson3d_5_form_1::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson3d_5_form_1::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson3d_5_form_1::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson3d_5_form_1::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson3d_5_form_1::create_default_cell_integral() const { return new poisson3d_5_cell_integral_1_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson3d_5_form_1::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson3d_5_form_1::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson3d_5_form_1::create_default_point_integral() const { return 0; } dolfin-1.3.0/bench/fem/convergence/cpp/Poisson3D_4.ufl0000644000175000017500000000170412263014601022325 0ustar johannrjohannr# Copyright (C) 2005-2006 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2005 # Last changed: 2006-03-28 # # Poisson's equation in 3D for q = 4 element = FiniteElement("Lagrange", tetrahedron, 4) v = TestFunction(element) U = TrialFunction(element) f = Coefficient(element) a = v.dx(i)*U.dx(i)*dx L = v*f*dx dolfin-1.3.0/bench/fem/convergence/cpp/Poisson2D_4.cpp0000644000175000017500000104667712263015061022344 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #include "Poisson2D_4.h" /// Constructor poisson2d_4_finite_element_0::poisson2d_4_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor poisson2d_4_finite_element_0::~poisson2d_4_finite_element_0() { // Do nothing } /// Return a string identifying the finite element const char* poisson2d_4_finite_element_0::signature() const { return "FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 4, None)"; } /// Return the cell shape ufc::shape poisson2d_4_finite_element_0::cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape std::size_t poisson2d_4_finite_element_0::topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape std::size_t poisson2d_4_finite_element_0::geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space std::size_t poisson2d_4_finite_element_0::space_dimension() const { return 15; } /// Return the rank of the value space std::size_t poisson2d_4_finite_element_0::value_rank() const { return 0; } /// Return the dimension of the value space for axis i std::size_t poisson2d_4_finite_element_0::value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell void poisson2d_4_finite_element_0::evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.0, -0.0412393049421161, -0.0238095238095238, 0.0289800294976278, 0.0224478343233825, 0.012960263189329, -0.0395942580610999, -0.0334632556631574, -0.025920526378658, -0.014965222882255, 0.0321247254366312, 0.0283313448138523, 0.023944356611608, 0.0185472188784818, 0.0107082418122104}; // Compute value(s) for (unsigned int r = 0; r < 15; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.0, 0.0412393049421161, -0.0238095238095238, 0.0289800294976278, -0.0224478343233825, 0.012960263189329, 0.0395942580610999, -0.0334632556631574, 0.025920526378658, -0.014965222882255, 0.0321247254366312, -0.0283313448138523, 0.023944356611608, -0.0185472188784818, 0.0107082418122104}; // Compute value(s) for (unsigned int r = 0; r < 15; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.0, 0.0, 0.0476190476190476, 0.0, 0.0, 0.038880789567987, 0.0, 0.0, 0.0, 0.0598608915290199, 0.0, 0.0, 0.0, 0.0, 0.0535412090610519}; // Compute value(s) for (unsigned int r = 0; r < 15; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.125707872210942, 0.131965775814772, -0.0253968253968253, 0.139104141588614, -0.0718330698348239, 0.0311046316543896, 0.0633508128977599, 0.0267706045305259, -0.0622092633087791, 0.0478887132232159, 0.0, 0.0566626896277046, -0.0838052481406279, 0.0834624849531682, -0.0535412090610519}; // Compute value(s) for (unsigned int r = 0; r < 15; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {-0.0314269680527355, 0.010997147984564, 0.00634920634920636, 0.0, 0.188561808316413, -0.163299316185545, 0.0, 0.0936971158568408, 0.0, -0.0419026240703139, 0.0, 0.0, 0.0838052481406279, -0.139104141588614, 0.107082418122104}; // Compute value(s) for (unsigned int r = 0; r < 15; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.125707872210942, 0.0439885919382573, 0.126984126984127, 0.0, 0.035916534917412, 0.155523158271948, 0.0, 0.0, 0.103682105514632, -0.011972178305804, 0.0, 0.0, 0.0, 0.0927360943924091, -0.107082418122104}; // Compute value(s) for (unsigned int r = 0; r < 15; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.125707872210942, -0.131965775814772, -0.0253968253968254, 0.139104141588614, 0.0718330698348239, 0.0311046316543895, -0.0633508128977599, 0.0267706045305259, 0.0622092633087792, 0.0478887132232159, 0.0, -0.0566626896277046, -0.0838052481406278, -0.0834624849531681, -0.0535412090610519}; // Compute value(s) for (unsigned int r = 0; r < 15; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {-0.0314269680527356, -0.0109971479845643, 0.00634920634920625, 0.0, -0.188561808316413, -0.163299316185545, 0.0, 0.0936971158568409, 0.0, -0.0419026240703138, 0.0, 0.0, 0.0838052481406278, 0.139104141588614, 0.107082418122104}; // Compute value(s) for (unsigned int r = 0; r < 15; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.125707872210942, -0.0439885919382572, 0.126984126984127, 0.0, -0.0359165349174119, 0.155523158271948, 0.0, 0.0, -0.103682105514632, -0.011972178305804, 0.0, 0.0, 0.0, -0.0927360943924091, -0.107082418122104}; // Compute value(s) for (unsigned int r = 0; r < 15; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.125707872210942, -0.0879771838765144, -0.101587301587302, 0.0927360943924091, 0.107749604752236, 0.0725774738602423, 0.0791885161221998, -0.013385302265263, -0.0518410527573159, -0.0419026240703139, -0.128498901746525, -0.0566626896277046, -0.011972178305804, 0.00927360943924089, 0.0107082418122104}; // Compute value(s) for (unsigned int r = 0; r < 15; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {-0.0314269680527352, 0.0, -0.0126984126984127, -0.243432247780074, 0.0, 0.0544331053951817, 0.0, 0.0936971158568408, 0.0, -0.0419026240703139, 0.192748352619787, 0.0, -0.0239443566116079, 0.0, 0.0107082418122104}; // Compute value(s) for (unsigned int r = 0; r < 15; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.125707872210942, 0.0879771838765144, -0.101587301587302, 0.0927360943924091, -0.107749604752236, 0.0725774738602423, -0.0791885161221998, -0.013385302265263, 0.051841052757316, -0.041902624070314, -0.128498901746525, 0.0566626896277046, -0.011972178305804, -0.00927360943924091, 0.0107082418122104}; // Compute value(s) for (unsigned int r = 0; r < 15; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 12: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.251415744421884, -0.351908735506058, -0.203174603174603, -0.139104141588614, -0.107749604752236, -0.0622092633087791, 0.19005243869328, -0.0267706045305259, 0.124418526617558, 0.155638317975452, 0.0, 0.169988068883114, 0.0838052481406278, -0.0278208283177227, -0.053541209061052}; // Compute value(s) for (unsigned int r = 0; r < 15; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 13: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.251415744421884, 0.351908735506058, -0.203174603174603, -0.139104141588614, 0.107749604752236, -0.0622092633087791, -0.19005243869328, -0.0267706045305259, -0.124418526617558, 0.155638317975452, 0.0, -0.169988068883114, 0.0838052481406278, 0.0278208283177227, -0.0535412090610519}; // Compute value(s) for (unsigned int r = 0; r < 15; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 14: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.251415744421883, 0.0, 0.406349206349206, 0.0, 0.0, -0.186627789926337, 0.0, -0.187394231713682, 0.0, -0.203527031198668, 0.0, 0.0, -0.167610496281256, 0.0, 0.107082418122104}; // Compute value(s) for (unsigned int r = 0; r < 15; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell void poisson2d_4_finite_element_0::evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 15; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell void poisson2d_4_finite_element_0::evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 4) { return ; } // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[16][4]; for (unsigned int row = 0; row < 16; row++) { for (unsigned int col = 0; col < 4; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 1) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[2][2] = {{K[0], K[1]}, {K[2], K[3]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[16][16]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.0, -0.0412393049421161, -0.0238095238095238, 0.0289800294976278, 0.0224478343233825, 0.012960263189329, -0.0395942580610999, -0.0334632556631574, -0.025920526378658, -0.014965222882255, 0.0321247254366312, 0.0283313448138523, 0.023944356611608, 0.0185472188784818, 0.0107082418122104}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212917, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513776, 0.0, 7.83836717690618, 0.0, 0.0, 8.40000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 10.9544511501033, 0.0, 0.0, -3.83325938999965, 0.0, 17.7482393492989, 0.0, 0.553283335172493, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.73286382647968, 0.0, 3.3466401061363, 4.36435780471985, 1.56370854789005e-14, -5.07468037933238, 0.0, 17.0084012854152, 0.0, 1.52127765851133, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.44948974278318, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.09838667696593, 0.0, 7.66811580507233, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 0.0, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175279, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.00000000000001, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675849, 0.0, 8.16496580927727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872629, -1.49666295470958, 6.83130051063974, -1.05830052442583, 0.305505046330392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749978, 2.19089023002067, 2.52982212813471, 8.08290376865477, 6.26099033699943, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238572, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.0, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505167, -1.89736659610103, 7.42307488958091, -1.91662969499982, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586246, -0.0958314847499896, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323983, 2.89827534923789, 1.67332005306815, 2.18217890235993, 5.74704893215392, -2.53734018966619, 10.0623058987491, 8.50420064270761, -2.1957751641342, 0.760638829255665, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 1.22474487139159, 3.53553390593274, -7.37711113563318, 4.57142857142858, 1.64957219768465, 0.0, 11.4997781699989, 7.42307488958091, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.54919333848297, 6.64078308635359, 3.83405790253616, 0.0, -6.19677335393187, 5.3665631459995, 0.0, 0.0, 13.4164078649987, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.57770876399968, 0.0, 8.85437744847146, 0.0, 0.0, -3.09838667696594, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[16]; for (unsigned int r = 0; r < 16; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 15; s++) { for (unsigned int t = 0; t < 15; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.0, 0.0412393049421161, -0.0238095238095238, 0.0289800294976278, -0.0224478343233825, 0.012960263189329, 0.0395942580610999, -0.0334632556631574, 0.025920526378658, -0.014965222882255, 0.0321247254366312, -0.0283313448138523, 0.023944356611608, -0.0185472188784818, 0.0107082418122104}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212917, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513776, 0.0, 7.83836717690618, 0.0, 0.0, 8.40000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 10.9544511501033, 0.0, 0.0, -3.83325938999965, 0.0, 17.7482393492989, 0.0, 0.553283335172493, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.73286382647968, 0.0, 3.3466401061363, 4.36435780471985, 1.56370854789005e-14, -5.07468037933238, 0.0, 17.0084012854152, 0.0, 1.52127765851133, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.44948974278318, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.09838667696593, 0.0, 7.66811580507233, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 0.0, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175279, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.00000000000001, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675849, 0.0, 8.16496580927727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872629, -1.49666295470958, 6.83130051063974, -1.05830052442583, 0.305505046330392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749978, 2.19089023002067, 2.52982212813471, 8.08290376865477, 6.26099033699943, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238572, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.0, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505167, -1.89736659610103, 7.42307488958091, -1.91662969499982, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586246, -0.0958314847499896, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323983, 2.89827534923789, 1.67332005306815, 2.18217890235993, 5.74704893215392, -2.53734018966619, 10.0623058987491, 8.50420064270761, -2.1957751641342, 0.760638829255665, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 1.22474487139159, 3.53553390593274, -7.37711113563318, 4.57142857142858, 1.64957219768465, 0.0, 11.4997781699989, 7.42307488958091, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.54919333848297, 6.64078308635359, 3.83405790253616, 0.0, -6.19677335393187, 5.3665631459995, 0.0, 0.0, 13.4164078649987, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.57770876399968, 0.0, 8.85437744847146, 0.0, 0.0, -3.09838667696594, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[16]; for (unsigned int r = 0; r < 16; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 15; s++) { for (unsigned int t = 0; t < 15; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.0, 0.0, 0.0476190476190476, 0.0, 0.0, 0.038880789567987, 0.0, 0.0, 0.0, 0.0598608915290199, 0.0, 0.0, 0.0, 0.0, 0.0535412090610519}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212917, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513776, 0.0, 7.83836717690618, 0.0, 0.0, 8.40000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 10.9544511501033, 0.0, 0.0, -3.83325938999965, 0.0, 17.7482393492989, 0.0, 0.553283335172493, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.73286382647968, 0.0, 3.3466401061363, 4.36435780471985, 1.56370854789005e-14, -5.07468037933238, 0.0, 17.0084012854152, 0.0, 1.52127765851133, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.44948974278318, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.09838667696593, 0.0, 7.66811580507233, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 0.0, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175279, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.00000000000001, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675849, 0.0, 8.16496580927727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872629, -1.49666295470958, 6.83130051063974, -1.05830052442583, 0.305505046330392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749978, 2.19089023002067, 2.52982212813471, 8.08290376865477, 6.26099033699943, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238572, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.0, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505167, -1.89736659610103, 7.42307488958091, -1.91662969499982, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586246, -0.0958314847499896, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323983, 2.89827534923789, 1.67332005306815, 2.18217890235993, 5.74704893215392, -2.53734018966619, 10.0623058987491, 8.50420064270761, -2.1957751641342, 0.760638829255665, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 1.22474487139159, 3.53553390593274, -7.37711113563318, 4.57142857142858, 1.64957219768465, 0.0, 11.4997781699989, 7.42307488958091, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.54919333848297, 6.64078308635359, 3.83405790253616, 0.0, -6.19677335393187, 5.3665631459995, 0.0, 0.0, 13.4164078649987, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.57770876399968, 0.0, 8.85437744847146, 0.0, 0.0, -3.09838667696594, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[16]; for (unsigned int r = 0; r < 16; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 15; s++) { for (unsigned int t = 0; t < 15; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.125707872210942, 0.131965775814772, -0.0253968253968253, 0.139104141588614, -0.0718330698348239, 0.0311046316543896, 0.0633508128977599, 0.0267706045305259, -0.0622092633087791, 0.0478887132232159, 0.0, 0.0566626896277046, -0.0838052481406279, 0.0834624849531682, -0.0535412090610519}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212917, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513776, 0.0, 7.83836717690618, 0.0, 0.0, 8.40000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 10.9544511501033, 0.0, 0.0, -3.83325938999965, 0.0, 17.7482393492989, 0.0, 0.553283335172493, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.73286382647968, 0.0, 3.3466401061363, 4.36435780471985, 1.56370854789005e-14, -5.07468037933238, 0.0, 17.0084012854152, 0.0, 1.52127765851133, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.44948974278318, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.09838667696593, 0.0, 7.66811580507233, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 0.0, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175279, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.00000000000001, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675849, 0.0, 8.16496580927727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872629, -1.49666295470958, 6.83130051063974, -1.05830052442583, 0.305505046330392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749978, 2.19089023002067, 2.52982212813471, 8.08290376865477, 6.26099033699943, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238572, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.0, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505167, -1.89736659610103, 7.42307488958091, -1.91662969499982, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586246, -0.0958314847499896, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323983, 2.89827534923789, 1.67332005306815, 2.18217890235993, 5.74704893215392, -2.53734018966619, 10.0623058987491, 8.50420064270761, -2.1957751641342, 0.760638829255665, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 1.22474487139159, 3.53553390593274, -7.37711113563318, 4.57142857142858, 1.64957219768465, 0.0, 11.4997781699989, 7.42307488958091, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.54919333848297, 6.64078308635359, 3.83405790253616, 0.0, -6.19677335393187, 5.3665631459995, 0.0, 0.0, 13.4164078649987, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.57770876399968, 0.0, 8.85437744847146, 0.0, 0.0, -3.09838667696594, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[16]; for (unsigned int r = 0; r < 16; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 15; s++) { for (unsigned int t = 0; t < 15; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {-0.0314269680527355, 0.010997147984564, 0.00634920634920636, 0.0, 0.188561808316413, -0.163299316185545, 0.0, 0.0936971158568408, 0.0, -0.0419026240703139, 0.0, 0.0, 0.0838052481406279, -0.139104141588614, 0.107082418122104}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212917, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513776, 0.0, 7.83836717690618, 0.0, 0.0, 8.40000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 10.9544511501033, 0.0, 0.0, -3.83325938999965, 0.0, 17.7482393492989, 0.0, 0.553283335172493, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.73286382647968, 0.0, 3.3466401061363, 4.36435780471985, 1.56370854789005e-14, -5.07468037933238, 0.0, 17.0084012854152, 0.0, 1.52127765851133, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.44948974278318, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.09838667696593, 0.0, 7.66811580507233, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 0.0, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175279, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.00000000000001, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675849, 0.0, 8.16496580927727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872629, -1.49666295470958, 6.83130051063974, -1.05830052442583, 0.305505046330392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749978, 2.19089023002067, 2.52982212813471, 8.08290376865477, 6.26099033699943, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238572, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.0, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505167, -1.89736659610103, 7.42307488958091, -1.91662969499982, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586246, -0.0958314847499896, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323983, 2.89827534923789, 1.67332005306815, 2.18217890235993, 5.74704893215392, -2.53734018966619, 10.0623058987491, 8.50420064270761, -2.1957751641342, 0.760638829255665, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 1.22474487139159, 3.53553390593274, -7.37711113563318, 4.57142857142858, 1.64957219768465, 0.0, 11.4997781699989, 7.42307488958091, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.54919333848297, 6.64078308635359, 3.83405790253616, 0.0, -6.19677335393187, 5.3665631459995, 0.0, 0.0, 13.4164078649987, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.57770876399968, 0.0, 8.85437744847146, 0.0, 0.0, -3.09838667696594, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[16]; for (unsigned int r = 0; r < 16; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 15; s++) { for (unsigned int t = 0; t < 15; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.125707872210942, 0.0439885919382573, 0.126984126984127, 0.0, 0.035916534917412, 0.155523158271948, 0.0, 0.0, 0.103682105514632, -0.011972178305804, 0.0, 0.0, 0.0, 0.0927360943924091, -0.107082418122104}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212917, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513776, 0.0, 7.83836717690618, 0.0, 0.0, 8.40000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 10.9544511501033, 0.0, 0.0, -3.83325938999965, 0.0, 17.7482393492989, 0.0, 0.553283335172493, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.73286382647968, 0.0, 3.3466401061363, 4.36435780471985, 1.56370854789005e-14, -5.07468037933238, 0.0, 17.0084012854152, 0.0, 1.52127765851133, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.44948974278318, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.09838667696593, 0.0, 7.66811580507233, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 0.0, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175279, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.00000000000001, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675849, 0.0, 8.16496580927727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872629, -1.49666295470958, 6.83130051063974, -1.05830052442583, 0.305505046330392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749978, 2.19089023002067, 2.52982212813471, 8.08290376865477, 6.26099033699943, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238572, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.0, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505167, -1.89736659610103, 7.42307488958091, -1.91662969499982, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586246, -0.0958314847499896, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323983, 2.89827534923789, 1.67332005306815, 2.18217890235993, 5.74704893215392, -2.53734018966619, 10.0623058987491, 8.50420064270761, -2.1957751641342, 0.760638829255665, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 1.22474487139159, 3.53553390593274, -7.37711113563318, 4.57142857142858, 1.64957219768465, 0.0, 11.4997781699989, 7.42307488958091, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.54919333848297, 6.64078308635359, 3.83405790253616, 0.0, -6.19677335393187, 5.3665631459995, 0.0, 0.0, 13.4164078649987, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.57770876399968, 0.0, 8.85437744847146, 0.0, 0.0, -3.09838667696594, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[16]; for (unsigned int r = 0; r < 16; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 15; s++) { for (unsigned int t = 0; t < 15; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.125707872210942, -0.131965775814772, -0.0253968253968254, 0.139104141588614, 0.0718330698348239, 0.0311046316543895, -0.0633508128977599, 0.0267706045305259, 0.0622092633087792, 0.0478887132232159, 0.0, -0.0566626896277046, -0.0838052481406278, -0.0834624849531681, -0.0535412090610519}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212917, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513776, 0.0, 7.83836717690618, 0.0, 0.0, 8.40000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 10.9544511501033, 0.0, 0.0, -3.83325938999965, 0.0, 17.7482393492989, 0.0, 0.553283335172493, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.73286382647968, 0.0, 3.3466401061363, 4.36435780471985, 1.56370854789005e-14, -5.07468037933238, 0.0, 17.0084012854152, 0.0, 1.52127765851133, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.44948974278318, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.09838667696593, 0.0, 7.66811580507233, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 0.0, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175279, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.00000000000001, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675849, 0.0, 8.16496580927727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872629, -1.49666295470958, 6.83130051063974, -1.05830052442583, 0.305505046330392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749978, 2.19089023002067, 2.52982212813471, 8.08290376865477, 6.26099033699943, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238572, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.0, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505167, -1.89736659610103, 7.42307488958091, -1.91662969499982, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586246, -0.0958314847499896, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323983, 2.89827534923789, 1.67332005306815, 2.18217890235993, 5.74704893215392, -2.53734018966619, 10.0623058987491, 8.50420064270761, -2.1957751641342, 0.760638829255665, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 1.22474487139159, 3.53553390593274, -7.37711113563318, 4.57142857142858, 1.64957219768465, 0.0, 11.4997781699989, 7.42307488958091, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.54919333848297, 6.64078308635359, 3.83405790253616, 0.0, -6.19677335393187, 5.3665631459995, 0.0, 0.0, 13.4164078649987, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.57770876399968, 0.0, 8.85437744847146, 0.0, 0.0, -3.09838667696594, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[16]; for (unsigned int r = 0; r < 16; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 15; s++) { for (unsigned int t = 0; t < 15; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {-0.0314269680527356, -0.0109971479845643, 0.00634920634920625, 0.0, -0.188561808316413, -0.163299316185545, 0.0, 0.0936971158568409, 0.0, -0.0419026240703138, 0.0, 0.0, 0.0838052481406278, 0.139104141588614, 0.107082418122104}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212917, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513776, 0.0, 7.83836717690618, 0.0, 0.0, 8.40000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 10.9544511501033, 0.0, 0.0, -3.83325938999965, 0.0, 17.7482393492989, 0.0, 0.553283335172493, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.73286382647968, 0.0, 3.3466401061363, 4.36435780471985, 1.56370854789005e-14, -5.07468037933238, 0.0, 17.0084012854152, 0.0, 1.52127765851133, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.44948974278318, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.09838667696593, 0.0, 7.66811580507233, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 0.0, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175279, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.00000000000001, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675849, 0.0, 8.16496580927727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872629, -1.49666295470958, 6.83130051063974, -1.05830052442583, 0.305505046330392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749978, 2.19089023002067, 2.52982212813471, 8.08290376865477, 6.26099033699943, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238572, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.0, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505167, -1.89736659610103, 7.42307488958091, -1.91662969499982, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586246, -0.0958314847499896, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323983, 2.89827534923789, 1.67332005306815, 2.18217890235993, 5.74704893215392, -2.53734018966619, 10.0623058987491, 8.50420064270761, -2.1957751641342, 0.760638829255665, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 1.22474487139159, 3.53553390593274, -7.37711113563318, 4.57142857142858, 1.64957219768465, 0.0, 11.4997781699989, 7.42307488958091, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.54919333848297, 6.64078308635359, 3.83405790253616, 0.0, -6.19677335393187, 5.3665631459995, 0.0, 0.0, 13.4164078649987, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.57770876399968, 0.0, 8.85437744847146, 0.0, 0.0, -3.09838667696594, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[16]; for (unsigned int r = 0; r < 16; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 15; s++) { for (unsigned int t = 0; t < 15; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.125707872210942, -0.0439885919382572, 0.126984126984127, 0.0, -0.0359165349174119, 0.155523158271948, 0.0, 0.0, -0.103682105514632, -0.011972178305804, 0.0, 0.0, 0.0, -0.0927360943924091, -0.107082418122104}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212917, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513776, 0.0, 7.83836717690618, 0.0, 0.0, 8.40000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 10.9544511501033, 0.0, 0.0, -3.83325938999965, 0.0, 17.7482393492989, 0.0, 0.553283335172493, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.73286382647968, 0.0, 3.3466401061363, 4.36435780471985, 1.56370854789005e-14, -5.07468037933238, 0.0, 17.0084012854152, 0.0, 1.52127765851133, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.44948974278318, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.09838667696593, 0.0, 7.66811580507233, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 0.0, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175279, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.00000000000001, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675849, 0.0, 8.16496580927727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872629, -1.49666295470958, 6.83130051063974, -1.05830052442583, 0.305505046330392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749978, 2.19089023002067, 2.52982212813471, 8.08290376865477, 6.26099033699943, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238572, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.0, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505167, -1.89736659610103, 7.42307488958091, -1.91662969499982, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586246, -0.0958314847499896, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323983, 2.89827534923789, 1.67332005306815, 2.18217890235993, 5.74704893215392, -2.53734018966619, 10.0623058987491, 8.50420064270761, -2.1957751641342, 0.760638829255665, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 1.22474487139159, 3.53553390593274, -7.37711113563318, 4.57142857142858, 1.64957219768465, 0.0, 11.4997781699989, 7.42307488958091, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.54919333848297, 6.64078308635359, 3.83405790253616, 0.0, -6.19677335393187, 5.3665631459995, 0.0, 0.0, 13.4164078649987, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.57770876399968, 0.0, 8.85437744847146, 0.0, 0.0, -3.09838667696594, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[16]; for (unsigned int r = 0; r < 16; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 15; s++) { for (unsigned int t = 0; t < 15; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.125707872210942, -0.0879771838765144, -0.101587301587302, 0.0927360943924091, 0.107749604752236, 0.0725774738602423, 0.0791885161221998, -0.013385302265263, -0.0518410527573159, -0.0419026240703139, -0.128498901746525, -0.0566626896277046, -0.011972178305804, 0.00927360943924089, 0.0107082418122104}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212917, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513776, 0.0, 7.83836717690618, 0.0, 0.0, 8.40000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 10.9544511501033, 0.0, 0.0, -3.83325938999965, 0.0, 17.7482393492989, 0.0, 0.553283335172493, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.73286382647968, 0.0, 3.3466401061363, 4.36435780471985, 1.56370854789005e-14, -5.07468037933238, 0.0, 17.0084012854152, 0.0, 1.52127765851133, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.44948974278318, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.09838667696593, 0.0, 7.66811580507233, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 0.0, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175279, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.00000000000001, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675849, 0.0, 8.16496580927727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872629, -1.49666295470958, 6.83130051063974, -1.05830052442583, 0.305505046330392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749978, 2.19089023002067, 2.52982212813471, 8.08290376865477, 6.26099033699943, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238572, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.0, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505167, -1.89736659610103, 7.42307488958091, -1.91662969499982, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586246, -0.0958314847499896, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323983, 2.89827534923789, 1.67332005306815, 2.18217890235993, 5.74704893215392, -2.53734018966619, 10.0623058987491, 8.50420064270761, -2.1957751641342, 0.760638829255665, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 1.22474487139159, 3.53553390593274, -7.37711113563318, 4.57142857142858, 1.64957219768465, 0.0, 11.4997781699989, 7.42307488958091, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.54919333848297, 6.64078308635359, 3.83405790253616, 0.0, -6.19677335393187, 5.3665631459995, 0.0, 0.0, 13.4164078649987, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.57770876399968, 0.0, 8.85437744847146, 0.0, 0.0, -3.09838667696594, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[16]; for (unsigned int r = 0; r < 16; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 15; s++) { for (unsigned int t = 0; t < 15; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {-0.0314269680527352, 0.0, -0.0126984126984127, -0.243432247780074, 0.0, 0.0544331053951817, 0.0, 0.0936971158568408, 0.0, -0.0419026240703139, 0.192748352619787, 0.0, -0.0239443566116079, 0.0, 0.0107082418122104}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212917, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513776, 0.0, 7.83836717690618, 0.0, 0.0, 8.40000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 10.9544511501033, 0.0, 0.0, -3.83325938999965, 0.0, 17.7482393492989, 0.0, 0.553283335172493, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.73286382647968, 0.0, 3.3466401061363, 4.36435780471985, 1.56370854789005e-14, -5.07468037933238, 0.0, 17.0084012854152, 0.0, 1.52127765851133, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.44948974278318, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.09838667696593, 0.0, 7.66811580507233, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 0.0, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175279, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.00000000000001, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675849, 0.0, 8.16496580927727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872629, -1.49666295470958, 6.83130051063974, -1.05830052442583, 0.305505046330392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749978, 2.19089023002067, 2.52982212813471, 8.08290376865477, 6.26099033699943, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238572, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.0, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505167, -1.89736659610103, 7.42307488958091, -1.91662969499982, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586246, -0.0958314847499896, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323983, 2.89827534923789, 1.67332005306815, 2.18217890235993, 5.74704893215392, -2.53734018966619, 10.0623058987491, 8.50420064270761, -2.1957751641342, 0.760638829255665, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 1.22474487139159, 3.53553390593274, -7.37711113563318, 4.57142857142858, 1.64957219768465, 0.0, 11.4997781699989, 7.42307488958091, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.54919333848297, 6.64078308635359, 3.83405790253616, 0.0, -6.19677335393187, 5.3665631459995, 0.0, 0.0, 13.4164078649987, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.57770876399968, 0.0, 8.85437744847146, 0.0, 0.0, -3.09838667696594, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[16]; for (unsigned int r = 0; r < 16; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 15; s++) { for (unsigned int t = 0; t < 15; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.125707872210942, 0.0879771838765144, -0.101587301587302, 0.0927360943924091, -0.107749604752236, 0.0725774738602423, -0.0791885161221998, -0.013385302265263, 0.051841052757316, -0.041902624070314, -0.128498901746525, 0.0566626896277046, -0.011972178305804, -0.00927360943924091, 0.0107082418122104}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212917, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513776, 0.0, 7.83836717690618, 0.0, 0.0, 8.40000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 10.9544511501033, 0.0, 0.0, -3.83325938999965, 0.0, 17.7482393492989, 0.0, 0.553283335172493, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.73286382647968, 0.0, 3.3466401061363, 4.36435780471985, 1.56370854789005e-14, -5.07468037933238, 0.0, 17.0084012854152, 0.0, 1.52127765851133, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.44948974278318, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.09838667696593, 0.0, 7.66811580507233, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 0.0, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175279, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.00000000000001, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675849, 0.0, 8.16496580927727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872629, -1.49666295470958, 6.83130051063974, -1.05830052442583, 0.305505046330392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749978, 2.19089023002067, 2.52982212813471, 8.08290376865477, 6.26099033699943, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238572, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.0, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505167, -1.89736659610103, 7.42307488958091, -1.91662969499982, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586246, -0.0958314847499896, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323983, 2.89827534923789, 1.67332005306815, 2.18217890235993, 5.74704893215392, -2.53734018966619, 10.0623058987491, 8.50420064270761, -2.1957751641342, 0.760638829255665, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 1.22474487139159, 3.53553390593274, -7.37711113563318, 4.57142857142858, 1.64957219768465, 0.0, 11.4997781699989, 7.42307488958091, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.54919333848297, 6.64078308635359, 3.83405790253616, 0.0, -6.19677335393187, 5.3665631459995, 0.0, 0.0, 13.4164078649987, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.57770876399968, 0.0, 8.85437744847146, 0.0, 0.0, -3.09838667696594, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[16]; for (unsigned int r = 0; r < 16; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 15; s++) { for (unsigned int t = 0; t < 15; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 12: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.251415744421884, -0.351908735506058, -0.203174603174603, -0.139104141588614, -0.107749604752236, -0.0622092633087791, 0.19005243869328, -0.0267706045305259, 0.124418526617558, 0.155638317975452, 0.0, 0.169988068883114, 0.0838052481406278, -0.0278208283177227, -0.053541209061052}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212917, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513776, 0.0, 7.83836717690618, 0.0, 0.0, 8.40000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 10.9544511501033, 0.0, 0.0, -3.83325938999965, 0.0, 17.7482393492989, 0.0, 0.553283335172493, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.73286382647968, 0.0, 3.3466401061363, 4.36435780471985, 1.56370854789005e-14, -5.07468037933238, 0.0, 17.0084012854152, 0.0, 1.52127765851133, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.44948974278318, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.09838667696593, 0.0, 7.66811580507233, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 0.0, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175279, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.00000000000001, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675849, 0.0, 8.16496580927727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872629, -1.49666295470958, 6.83130051063974, -1.05830052442583, 0.305505046330392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749978, 2.19089023002067, 2.52982212813471, 8.08290376865477, 6.26099033699943, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238572, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.0, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505167, -1.89736659610103, 7.42307488958091, -1.91662969499982, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586246, -0.0958314847499896, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323983, 2.89827534923789, 1.67332005306815, 2.18217890235993, 5.74704893215392, -2.53734018966619, 10.0623058987491, 8.50420064270761, -2.1957751641342, 0.760638829255665, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 1.22474487139159, 3.53553390593274, -7.37711113563318, 4.57142857142858, 1.64957219768465, 0.0, 11.4997781699989, 7.42307488958091, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.54919333848297, 6.64078308635359, 3.83405790253616, 0.0, -6.19677335393187, 5.3665631459995, 0.0, 0.0, 13.4164078649987, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.57770876399968, 0.0, 8.85437744847146, 0.0, 0.0, -3.09838667696594, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[16]; for (unsigned int r = 0; r < 16; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 15; s++) { for (unsigned int t = 0; t < 15; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 13: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.251415744421884, 0.351908735506058, -0.203174603174603, -0.139104141588614, 0.107749604752236, -0.0622092633087791, -0.19005243869328, -0.0267706045305259, -0.124418526617558, 0.155638317975452, 0.0, -0.169988068883114, 0.0838052481406278, 0.0278208283177227, -0.0535412090610519}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212917, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513776, 0.0, 7.83836717690618, 0.0, 0.0, 8.40000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 10.9544511501033, 0.0, 0.0, -3.83325938999965, 0.0, 17.7482393492989, 0.0, 0.553283335172493, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.73286382647968, 0.0, 3.3466401061363, 4.36435780471985, 1.56370854789005e-14, -5.07468037933238, 0.0, 17.0084012854152, 0.0, 1.52127765851133, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.44948974278318, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.09838667696593, 0.0, 7.66811580507233, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 0.0, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175279, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.00000000000001, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675849, 0.0, 8.16496580927727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872629, -1.49666295470958, 6.83130051063974, -1.05830052442583, 0.305505046330392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749978, 2.19089023002067, 2.52982212813471, 8.08290376865477, 6.26099033699943, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238572, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.0, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505167, -1.89736659610103, 7.42307488958091, -1.91662969499982, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586246, -0.0958314847499896, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323983, 2.89827534923789, 1.67332005306815, 2.18217890235993, 5.74704893215392, -2.53734018966619, 10.0623058987491, 8.50420064270761, -2.1957751641342, 0.760638829255665, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 1.22474487139159, 3.53553390593274, -7.37711113563318, 4.57142857142858, 1.64957219768465, 0.0, 11.4997781699989, 7.42307488958091, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.54919333848297, 6.64078308635359, 3.83405790253616, 0.0, -6.19677335393187, 5.3665631459995, 0.0, 0.0, 13.4164078649987, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.57770876399968, 0.0, 8.85437744847146, 0.0, 0.0, -3.09838667696594, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[16]; for (unsigned int r = 0; r < 16; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 15; s++) { for (unsigned int t = 0; t < 15; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 14: { // Array of basisvalues double basisvalues[15] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[10] *= std::sqrt(22.5); // Table(s) of coefficients static const double coefficients0[15] = \ {0.251415744421883, 0.0, 0.406349206349206, 0.0, 0.0, -0.186627789926337, 0.0, -0.187394231713682, 0.0, -0.203527031198668, 0.0, 0.0, -0.167610496281256, 0.0, 0.107082418122104}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212917, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513776, 0.0, 7.83836717690618, 0.0, 0.0, 8.40000000000001, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 10.9544511501033, 0.0, 0.0, -3.83325938999965, 0.0, 17.7482393492989, 0.0, 0.553283335172493, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.73286382647968, 0.0, 3.3466401061363, 4.36435780471985, 1.56370854789005e-14, -5.07468037933238, 0.0, 17.0084012854152, 0.0, 1.52127765851133, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.44948974278318, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.09838667696593, 0.0, 7.66811580507233, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 0.0, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[15][15] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175279, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.00000000000001, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675849, 0.0, 8.16496580927727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872629, -1.49666295470958, 6.83130051063974, -1.05830052442583, 0.305505046330392, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749978, 2.19089023002067, 2.52982212813471, 8.08290376865477, 6.26099033699943, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238572, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.0, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505167, -1.89736659610103, 7.42307488958091, -1.91662969499982, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586246, -0.0958314847499896, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323983, 2.89827534923789, 1.67332005306815, 2.18217890235993, 5.74704893215392, -2.53734018966619, 10.0623058987491, 8.50420064270761, -2.1957751641342, 0.760638829255665, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 1.22474487139159, 3.53553390593274, -7.37711113563318, 4.57142857142858, 1.64957219768465, 0.0, 11.4997781699989, 7.42307488958091, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.54919333848297, 6.64078308635359, 3.83405790253616, 0.0, -6.19677335393187, 5.3665631459995, 0.0, 0.0, 13.4164078649987, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3.57770876399968, 0.0, 8.85437744847146, 0.0, 0.0, -3.09838667696594, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[16]; for (unsigned int r = 0; r < 16; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[15][15] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 15; t++) { for (unsigned int u = 0; u < 15; u++) { for (unsigned int tu = 0; tu < 15; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 15; s++) { for (unsigned int t = 0; t < 15; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell void poisson2d_4_finite_element_0::evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 15; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 4) { return ; } // Helper variable to hold values of a single dof. double dof_values[16]; for (unsigned int r = 0; r < 16; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 15; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f double poisson2d_4_finite_element_0::evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = 0.75*vertex_coordinates[2] + 0.25*vertex_coordinates[4]; y[1] = 0.75*vertex_coordinates[3] + 0.25*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 5: { y[0] = 0.25*vertex_coordinates[2] + 0.75*vertex_coordinates[4]; y[1] = 0.25*vertex_coordinates[3] + 0.75*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 6: { y[0] = 0.75*vertex_coordinates[0] + 0.25*vertex_coordinates[4]; y[1] = 0.75*vertex_coordinates[1] + 0.25*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 7: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 8: { y[0] = 0.25*vertex_coordinates[0] + 0.75*vertex_coordinates[4]; y[1] = 0.25*vertex_coordinates[1] + 0.75*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 9: { y[0] = 0.75*vertex_coordinates[0] + 0.25*vertex_coordinates[2]; y[1] = 0.75*vertex_coordinates[1] + 0.25*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 10: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 11: { y[0] = 0.25*vertex_coordinates[0] + 0.75*vertex_coordinates[2]; y[1] = 0.25*vertex_coordinates[1] + 0.75*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 12: { y[0] = 0.5*vertex_coordinates[0] + 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 13: { y[0] = 0.25*vertex_coordinates[0] + 0.5*vertex_coordinates[2] + 0.25*vertex_coordinates[4]; y[1] = 0.25*vertex_coordinates[1] + 0.5*vertex_coordinates[3] + 0.25*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 14: { y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f void poisson2d_4_finite_element_0::evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = 0.75*vertex_coordinates[2] + 0.25*vertex_coordinates[4]; y[1] = 0.75*vertex_coordinates[3] + 0.25*vertex_coordinates[5]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[4] = vals[0]; y[0] = 0.25*vertex_coordinates[2] + 0.75*vertex_coordinates[4]; y[1] = 0.25*vertex_coordinates[3] + 0.75*vertex_coordinates[5]; f.evaluate(vals, y, c); values[5] = vals[0]; y[0] = 0.75*vertex_coordinates[0] + 0.25*vertex_coordinates[4]; y[1] = 0.75*vertex_coordinates[1] + 0.25*vertex_coordinates[5]; f.evaluate(vals, y, c); values[6] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[7] = vals[0]; y[0] = 0.25*vertex_coordinates[0] + 0.75*vertex_coordinates[4]; y[1] = 0.25*vertex_coordinates[1] + 0.75*vertex_coordinates[5]; f.evaluate(vals, y, c); values[8] = vals[0]; y[0] = 0.75*vertex_coordinates[0] + 0.25*vertex_coordinates[2]; y[1] = 0.75*vertex_coordinates[1] + 0.25*vertex_coordinates[3]; f.evaluate(vals, y, c); values[9] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); values[10] = vals[0]; y[0] = 0.25*vertex_coordinates[0] + 0.75*vertex_coordinates[2]; y[1] = 0.25*vertex_coordinates[1] + 0.75*vertex_coordinates[3]; f.evaluate(vals, y, c); values[11] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[5]; f.evaluate(vals, y, c); values[12] = vals[0]; y[0] = 0.25*vertex_coordinates[0] + 0.5*vertex_coordinates[2] + 0.25*vertex_coordinates[4]; y[1] = 0.25*vertex_coordinates[1] + 0.5*vertex_coordinates[3] + 0.25*vertex_coordinates[5]; f.evaluate(vals, y, c); values[13] = vals[0]; y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[14] = vals[0]; } /// Interpolate vertex values from dof values void poisson2d_4_finite_element_0::interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; } /// Map coordinate xhat from reference cell to coordinate x in cell void poisson2d_4_finite_element_0::map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell void poisson2d_4_finite_element_0::map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) std::size_t poisson2d_4_finite_element_0::num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) ufc::finite_element* poisson2d_4_finite_element_0::create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance ufc::finite_element* poisson2d_4_finite_element_0::create() const { return new poisson2d_4_finite_element_0(); } /// Constructor poisson2d_4_dofmap_0::poisson2d_4_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor poisson2d_4_dofmap_0::~poisson2d_4_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap const char* poisson2d_4_dofmap_0::signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 4, None)"; } /// Return true iff mesh entities of topological dimension d are needed bool poisson2d_4_dofmap_0::needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return true; break; } case 2: { return true; break; } } return false; } /// Return the topological dimension of the associated cell shape std::size_t poisson2d_4_dofmap_0::topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape std::size_t poisson2d_4_dofmap_0::geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space std::size_t poisson2d_4_dofmap_0::global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0] + 3*num_global_entities[1] + 3*num_global_entities[2]; } /// Return the dimension of the local finite element function space for a cell std::size_t poisson2d_4_dofmap_0::local_dimension() const { return 15; } /// Return the number of dofs on each cell facet std::size_t poisson2d_4_dofmap_0::num_facet_dofs() const { return 5; } /// Return the number of dofs associated with each cell entity of dimension d std::size_t poisson2d_4_dofmap_0::num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 3; break; } case 2: { return 3; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell void poisson2d_4_dofmap_0::tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; dofs[3] = offset + 3*c.entity_indices[1][0]; dofs[4] = offset + 3*c.entity_indices[1][0] + 1; dofs[5] = offset + 3*c.entity_indices[1][0] + 2; dofs[6] = offset + 3*c.entity_indices[1][1]; dofs[7] = offset + 3*c.entity_indices[1][1] + 1; dofs[8] = offset + 3*c.entity_indices[1][1] + 2; dofs[9] = offset + 3*c.entity_indices[1][2]; dofs[10] = offset + 3*c.entity_indices[1][2] + 1; dofs[11] = offset + 3*c.entity_indices[1][2] + 2; offset += 3*num_global_entities[1]; dofs[12] = offset + 3*c.entity_indices[2][0]; dofs[13] = offset + 3*c.entity_indices[2][0] + 1; dofs[14] = offset + 3*c.entity_indices[2][0] + 2; offset += 3*num_global_entities[2]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs void poisson2d_4_dofmap_0::tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; dofs[3] = 4; dofs[4] = 5; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 6; dofs[3] = 7; dofs[4] = 8; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 9; dofs[3] = 10; dofs[4] = 11; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) void poisson2d_4_dofmap_0::tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } } break; } case 1: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 3; dofs[1] = 4; dofs[2] = 5; break; } case 1: { dofs[0] = 6; dofs[1] = 7; dofs[2] = 8; break; } case 2: { dofs[0] = 9; dofs[1] = 10; dofs[2] = 11; break; } } break; } case 2: { if (i > 0) { throw std::runtime_error("i is larger than number of entities (0)"); } dofs[0] = 12; dofs[1] = 13; dofs[2] = 14; break; } } } /// Tabulate the coordinates of all dofs on a cell void poisson2d_4_dofmap_0::tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[1][0] = vertex_coordinates[2]; dof_coordinates[1][1] = vertex_coordinates[3]; dof_coordinates[2][0] = vertex_coordinates[4]; dof_coordinates[2][1] = vertex_coordinates[5]; dof_coordinates[3][0] = 0.75*vertex_coordinates[2] + 0.25*vertex_coordinates[4]; dof_coordinates[3][1] = 0.75*vertex_coordinates[3] + 0.25*vertex_coordinates[5]; dof_coordinates[4][0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; dof_coordinates[4][1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; dof_coordinates[5][0] = 0.25*vertex_coordinates[2] + 0.75*vertex_coordinates[4]; dof_coordinates[5][1] = 0.25*vertex_coordinates[3] + 0.75*vertex_coordinates[5]; dof_coordinates[6][0] = 0.75*vertex_coordinates[0] + 0.25*vertex_coordinates[4]; dof_coordinates[6][1] = 0.75*vertex_coordinates[1] + 0.25*vertex_coordinates[5]; dof_coordinates[7][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; dof_coordinates[7][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; dof_coordinates[8][0] = 0.25*vertex_coordinates[0] + 0.75*vertex_coordinates[4]; dof_coordinates[8][1] = 0.25*vertex_coordinates[1] + 0.75*vertex_coordinates[5]; dof_coordinates[9][0] = 0.75*vertex_coordinates[0] + 0.25*vertex_coordinates[2]; dof_coordinates[9][1] = 0.75*vertex_coordinates[1] + 0.25*vertex_coordinates[3]; dof_coordinates[10][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; dof_coordinates[10][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; dof_coordinates[11][0] = 0.25*vertex_coordinates[0] + 0.75*vertex_coordinates[2]; dof_coordinates[11][1] = 0.25*vertex_coordinates[1] + 0.75*vertex_coordinates[3]; dof_coordinates[12][0] = 0.5*vertex_coordinates[0] + 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[4]; dof_coordinates[12][1] = 0.5*vertex_coordinates[1] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[5]; dof_coordinates[13][0] = 0.25*vertex_coordinates[0] + 0.5*vertex_coordinates[2] + 0.25*vertex_coordinates[4]; dof_coordinates[13][1] = 0.25*vertex_coordinates[1] + 0.5*vertex_coordinates[3] + 0.25*vertex_coordinates[5]; dof_coordinates[14][0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; dof_coordinates[14][1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; } /// Return the number of sub dofmaps (for a mixed element) std::size_t poisson2d_4_dofmap_0::num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) ufc::dofmap* poisson2d_4_dofmap_0::create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance ufc::dofmap* poisson2d_4_dofmap_0::create() const { return new poisson2d_4_dofmap_0(); } /// Constructor poisson2d_4_cell_integral_0_otherwise::poisson2d_4_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson2d_4_cell_integral_0_otherwise::~poisson2d_4_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson2d_4_cell_integral_0_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 8 // Number of operations (multiply-add pairs) for tensor contraction: 599 // Total number of operations (multiply-add pairs): 610 // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0_0 = det*(K[0]*K[0] + K[1]*K[1]); const double G0_0_1 = det*(K[0]*K[2] + K[1]*K[3]); const double G0_1_0 = det*(K[2]*K[0] + K[3]*K[1]); const double G0_1_1 = det*(K[2]*K[2] + K[3]*K[3]); // Compute element tensor A[0] = 0.373015873015877*G0_0_0 + 0.373015873015877*G0_0_1 + 0.373015873015877*G0_1_0 + 0.373015873015877*G0_1_1; A[1] = 0.0566137566137574*G0_0_0 + 0.0566137566137574*G0_1_0; A[2] = 0.0566137566137574*G0_0_1 + 0.0566137566137575*G0_1_1; A[3] = 0.0423280423280444*G0_0_0 + 0.0423280423280434*G0_0_1 + 0.0423280423280446*G0_1_0 + 0.0423280423280436*G0_1_1; A[4] = 0.0423280423280459*G0_0_0 + 0.0423280423280453*G0_0_1 + 0.0423280423280455*G0_1_0 + 0.0423280423280451*G0_1_1; A[5] = 0.0423280423280438*G0_0_0 + 0.0423280423280449*G0_0_1 + 0.042328042328044*G0_1_0 + 0.0423280423280448*G0_1_1; A[6] = 0.126984126984126*G0_0_0 - 0.651851851851859*G0_0_1 + 0.126984126984126*G0_1_0 - 0.651851851851859*G0_1_1; A[7] = 0.0423280423280438*G0_0_0 + 0.467724867724873*G0_0_1 + 0.0423280423280439*G0_1_0 + 0.467724867724874*G0_1_1; A[8] = -0.0423280423280437*G0_0_0 - 0.245502645502649*G0_0_1 - 0.042328042328044*G0_1_0 - 0.245502645502649*G0_1_1; A[9] = -0.65185185185186*G0_0_0 + 0.126984126984127*G0_0_1 - 0.65185185185186*G0_1_0 + 0.126984126984127*G0_1_1; A[10] = 0.467724867724874*G0_0_0 + 0.0423280423280441*G0_0_1 + 0.467724867724873*G0_1_0 + 0.0423280423280439*G0_1_1; A[11] = -0.245502645502648*G0_0_0 - 0.0423280423280432*G0_0_1 - 0.245502645502648*G0_1_0 - 0.0423280423280434*G0_1_1; A[12] = -0.0846560846560822*G0_0_0 - 0.0846560846560829*G0_0_1 - 0.0846560846560823*G0_1_0 - 0.0846560846560832*G0_1_1; A[13] = -0.0846560846560885*G0_0_0 - 0.0846560846560903*G0_0_1 - 0.0846560846560885*G0_1_0 - 0.08465608465609*G0_1_1; A[14] = -0.0846560846560897*G0_0_0 - 0.0846560846560879*G0_0_1 - 0.0846560846560895*G0_1_0 - 0.0846560846560877*G0_1_1; A[15] = 0.0566137566137574*G0_0_0 + 0.0566137566137574*G0_0_1; A[16] = 0.373015873015877*G0_0_0; A[17] = -0.0566137566137574*G0_0_1; A[18] = 0.126984126984127*G0_0_0 + 0.778835978835987*G0_0_1; A[19] = 0.0423280423280435*G0_0_0 - 0.425396825396831*G0_0_1; A[20] = -0.0423280423280436*G0_0_0 + 0.203174603174605*G0_0_1; A[21] = 0.0423280423280445*G0_0_0; A[22] = 0.0423280423280448*G0_0_0; A[23] = 0.0423280423280436*G0_0_0; A[24] = -0.245502645502648*G0_0_0 - 0.203174603174604*G0_0_1; A[25] = 0.467724867724873*G0_0_0 + 0.42539682539683*G0_0_1; A[26] = -0.651851851851859*G0_0_0 - 0.778835978835987*G0_0_1; A[27] = -0.084656084656088*G0_0_0; A[28] = -0.0846560846560835*G0_0_0; A[29] = -0.0846560846560884*G0_0_0; A[30] = 0.0566137566137574*G0_1_0 + 0.0566137566137575*G0_1_1; A[31] = -0.0566137566137574*G0_1_0; A[32] = 0.373015873015877*G0_1_1; A[33] = 0.203174603174604*G0_1_0 - 0.0423280423280443*G0_1_1; A[34] = -0.425396825396829*G0_1_0 + 0.0423280423280436*G0_1_1; A[35] = 0.778835978835987*G0_1_0 + 0.126984126984128*G0_1_1; A[36] = -0.203174603174604*G0_1_0 - 0.245502645502648*G0_1_1; A[37] = 0.425396825396829*G0_1_0 + 0.467724867724873*G0_1_1; A[38] = -0.778835978835987*G0_1_0 - 0.651851851851859*G0_1_1; A[39] = 0.0423280423280447*G0_1_1; A[40] = 0.042328042328046*G0_1_1; A[41] = 0.0423280423280441*G0_1_1; A[42] = -0.0846560846560878*G0_1_1; A[43] = -0.0846560846560897*G0_1_1; A[44] = -0.0846560846560845*G0_1_1; A[45] = 0.0423280423280444*G0_0_0 + 0.0423280423280446*G0_0_1 + 0.0423280423280434*G0_1_0 + 0.0423280423280435*G0_1_1; A[46] = 0.126984126984127*G0_0_0 + 0.778835978835987*G0_1_0; A[47] = 0.203174603174604*G0_0_1 - 0.0423280423280443*G0_1_1; A[48] = 1.82857142857145*G0_0_0 + 1.04973544973546*G0_0_1 + 1.04973544973546*G0_1_0 + 2.09947089947092*G0_1_1; A[49] = -0.660317460317463*G0_0_0 + 0.821164021164033*G0_0_1 - 0.296296296296296*G0_1_0 - 0.761904761904773*G0_1_1; A[50] = 0.338624338624343*G0_0_0 - 0.44021164021164*G0_0_1 + 0.101587301587301*G0_1_0 + 0.338624338624346*G0_1_1; A[51] = -0.203174603174608*G0_0_0 - 0.101587301587306*G0_0_1 - 0.101587301587301*G0_1_0; A[52] = -0.152380952380962*G0_0_0 - 0.0423280423280473*G0_0_1 - 0.0423280423280444*G0_1_0; A[53] = -0.338624338624343*G0_0_0 - 0.101587301587295*G0_0_1 - 0.101587301587301*G0_1_0; A[54] = -0.135449735449744*G0_0_0 - 0.237037037037046*G0_0_1 - 0.237037037037042*G0_1_0 - 0.338624338624343*G0_1_1; A[55] = 0.101587301587313*G0_0_0 + 0.46560846560848*G0_0_1 + 0.465608465608474*G0_1_0 + 0.761904761904771*G0_1_1; A[56] = -0.13544973544974*G0_0_0 - 1.04973544973546*G0_0_1 - 1.04973544973546*G0_1_0 - 2.09947089947092*G0_1_1; A[57] = 0.812698412698437*G0_0_0 + 0.338624338624355*G0_0_1 + 0.338624338624345*G0_1_0; A[58] = -2.43809523809527*G0_0_0 - 1.28677248677251*G0_0_1 - 1.2867724867725*G0_1_0; A[59] = 0.812698412698423*G0_0_0 + 0.338624338624331*G0_0_1 + 0.33862433862434*G0_1_0; A[60] = 0.0423280423280459*G0_0_0 + 0.0423280423280455*G0_0_1 + 0.0423280423280453*G0_1_0 + 0.0423280423280451*G0_1_1; A[61] = 0.0423280423280435*G0_0_0 - 0.425396825396831*G0_1_0; A[62] = -0.425396825396829*G0_0_1 + 0.0423280423280436*G0_1_1; A[63] = -0.660317460317462*G0_0_0 - 0.296296296296296*G0_0_1 + 0.821164021164033*G0_1_0 - 0.761904761904773*G0_1_1; A[64] = 2.45079365079368*G0_0_0 + 0.971428571428586*G0_0_1 + 0.971428571428586*G0_1_0 + 2.45079365079369*G0_1_1; A[65] = -0.761904761904771*G0_0_0 + 0.821164021164033*G0_0_1 - 0.296296296296298*G0_1_0 - 0.660317460317466*G0_1_1; A[66] = -0.152380952380965*G0_0_0 - 0.110052910052921*G0_0_1 - 0.110052910052919*G0_1_0 - 0.0677248677248744*G0_1_1; A[67] = 0.393650793650818*G0_0_0 + 0.196825396825416*G0_0_1 + 0.196825396825406*G0_1_0 + 0.0507936507936562*G0_1_1; A[68] = 0.761904761904771*G0_0_0 + 0.296296296296289*G0_0_1 + 0.296296296296298*G0_1_0 - 0.0677248677248703*G0_1_1; A[69] = -0.067724867724876*G0_0_0 - 0.110052910052919*G0_0_1 - 0.110052910052921*G0_1_0 - 0.152380952380965*G0_1_1; A[70] = 0.0507936507936557*G0_0_0 + 0.196825396825401*G0_0_1 + 0.196825396825414*G0_1_0 + 0.393650793650815*G0_1_1; A[71] = -0.067724867724869*G0_0_0 + 0.296296296296296*G0_0_1 + 0.296296296296292*G0_1_0 + 0.761904761904774*G0_1_1; A[72] = 0.406349206349235*G0_0_0 + 0.457142857142891*G0_0_1 + 0.457142857142888*G0_1_0 + 0.406349206349236*G0_1_1; A[73] = 0.406349206349193*G0_0_0 - 1.16825396825399*G0_0_1 - 1.168253968254*G0_1_0 - 2.8444444444445*G0_1_1; A[74] = -2.8444444444445*G0_0_0 - 1.168253968254*G0_0_1 - 1.16825396825399*G0_1_0 + 0.406349206349194*G0_1_1; A[75] = 0.0423280423280438*G0_0_0 + 0.042328042328044*G0_0_1 + 0.0423280423280449*G0_1_0 + 0.0423280423280448*G0_1_1; A[76] = -0.0423280423280436*G0_0_0 + 0.203174603174605*G0_1_0; A[77] = 0.778835978835987*G0_0_1 + 0.126984126984128*G0_1_1; A[78] = 0.338624338624343*G0_0_0 + 0.101587301587301*G0_0_1 - 0.44021164021164*G0_1_0 + 0.338624338624346*G0_1_1; A[79] = -0.761904761904771*G0_0_0 - 0.296296296296298*G0_0_1 + 0.821164021164033*G0_1_0 - 0.660317460317466*G0_1_1; A[80] = 2.09947089947092*G0_0_0 + 1.04973544973546*G0_0_1 + 1.04973544973546*G0_1_0 + 1.82857142857145*G0_1_1; A[81] = -0.338624338624341*G0_0_0 - 0.237037037037042*G0_0_1 - 0.237037037037046*G0_1_0 - 0.135449735449745*G0_1_1; A[82] = 0.761904761904769*G0_0_0 + 0.465608465608472*G0_0_1 + 0.465608465608478*G0_1_0 + 0.101587301587313*G0_1_1; A[83] = -2.09947089947092*G0_0_0 - 1.04973544973546*G0_0_1 - 1.04973544973546*G0_1_0 - 0.13544973544974*G0_1_1; A[84] = -0.101587301587302*G0_0_1 - 0.101587301587307*G0_1_0 - 0.20317460317461*G0_1_1; A[85] = -0.0423280423280418*G0_0_1 - 0.0423280423280461*G0_1_0 - 0.152380952380962*G0_1_1; A[86] = -0.101587301587302*G0_0_1 - 0.101587301587297*G0_1_0 - 0.338624338624347*G0_1_1; A[87] = 0.338624338624346*G0_0_1 + 0.338624338624357*G0_1_0 + 0.81269841269844*G0_1_1; A[88] = 0.338624338624339*G0_0_1 + 0.338624338624329*G0_1_0 + 0.812698412698428*G0_1_1; A[89] = -1.2867724867725*G0_0_1 - 1.28677248677251*G0_1_0 - 2.43809523809528*G0_1_1; A[90] = 0.126984126984126*G0_0_0 + 0.126984126984126*G0_0_1 - 0.65185185185186*G0_1_0 - 0.651851851851859*G0_1_1; A[91] = 0.0423280423280445*G0_0_0; A[92] = -0.203174603174604*G0_0_1 - 0.245502645502648*G0_1_1; A[93] = -0.203174603174608*G0_0_0 - 0.101587301587301*G0_0_1 - 0.101587301587306*G0_1_0; A[94] = -0.152380952380965*G0_0_0 - 0.110052910052919*G0_0_1 - 0.110052910052921*G0_1_0 - 0.0677248677248743*G0_1_1; A[95] = -0.338624338624341*G0_0_0 - 0.237037037037046*G0_0_1 - 0.237037037037042*G0_1_0 - 0.135449735449745*G0_1_1; A[96] = 1.82857142857145*G0_0_0 + 0.778835978835992*G0_0_1 + 0.778835978835992*G0_1_0 + 1.82857142857145*G0_1_1; A[97] = -0.660317460317465*G0_0_0 - 1.4814814814815*G0_0_1 - 0.364021164021168*G0_1_0 - 1.94708994708997*G0_1_1; A[98] = 0.338624338624342*G0_0_0 + 0.778835978835985*G0_0_1 + 0.237037037037042*G0_1_0 + 1.01587301587303*G0_1_1; A[99] = -0.13544973544974*G0_0_0 + 0.914285714285715*G0_0_1 + 0.914285714285721*G0_1_0 - 0.13544973544974*G0_1_1; A[100] = 0.101587301587312*G0_0_0 - 0.364021164021168*G0_0_1 - 0.364021164021161*G0_1_0 - 0.0677248677248713*G0_1_1; A[101] = -0.135449735449743*G0_0_0 + 0.101587301587302*G0_0_1 + 0.101587301587299*G0_1_0; A[102] = -2.43809523809528*G0_0_0 - 1.15132275132276*G0_0_1 - 1.15132275132278*G0_1_0 + 0.135449735449737*G0_1_1; A[103] = 0.812698412698438*G0_0_0 + 0.474074074074087*G0_0_1 + 0.474074074074093*G0_1_0 + 0.135449735449747*G0_1_1; A[104] = 0.81269841269843*G0_0_0 + 0.474074074074093*G0_0_1 + 0.474074074074089*G0_1_0 + 0.135449735449746*G0_1_1; A[105] = 0.0423280423280438*G0_0_0 + 0.0423280423280439*G0_0_1 + 0.467724867724873*G0_1_0 + 0.467724867724874*G0_1_1; A[106] = 0.0423280423280448*G0_0_0; A[107] = 0.425396825396829*G0_0_1 + 0.467724867724873*G0_1_1; A[108] = -0.152380952380962*G0_0_0 - 0.0423280423280444*G0_0_1 - 0.0423280423280473*G0_1_0; A[109] = 0.393650793650818*G0_0_0 + 0.196825396825406*G0_0_1 + 0.196825396825416*G0_1_0 + 0.0507936507936562*G0_1_1; A[110] = 0.761904761904769*G0_0_0 + 0.465608465608478*G0_0_1 + 0.465608465608472*G0_1_0 + 0.101587301587313*G0_1_1; A[111] = -0.660317460317465*G0_0_0 - 0.364021164021168*G0_0_1 - 1.4814814814815*G0_1_0 - 1.94708994708997*G0_1_1; A[112] = 2.45079365079369*G0_0_0 + 1.4793650793651*G0_0_1 + 1.4793650793651*G0_1_0 + 2.9587301587302*G0_1_1; A[113] = -0.761904761904769*G0_0_0 - 1.58306878306881*G0_0_1 - 0.465608465608472*G0_1_0 - 1.94708994708997*G0_1_1; A[114] = -0.0677248677248693*G0_0_0 - 0.364021164021167*G0_0_1 - 0.36402116402116*G0_1_0 + 0.101587301587313*G0_1_1; A[115] = 0.0507936507936544*G0_0_0 - 0.146031746031745*G0_0_1 - 0.146031746031758*G0_1_0 + 0.0507936507936567*G0_1_1; A[116] = -0.0677248677248737*G0_0_0 + 0.0423280423280432*G0_0_1 + 0.0423280423280455*G0_1_0; A[117] = 0.406349206349202*G0_0_0 + 1.57460317460319*G0_0_1 + 1.5746031746032*G0_1_0 - 0.101587301587311*G0_1_1; A[118] = 0.406349206349225*G0_0_0 - 0.0507936507936589*G0_0_1 - 0.0507936507936557*G0_1_0 - 0.101587301587314*G0_1_1; A[119] = -2.84444444444451*G0_0_0 - 1.6761904761905*G0_0_1 - 1.67619047619052*G0_1_0 - 0.101587301587313*G0_1_1; A[120] = -0.0423280423280437*G0_0_0 - 0.042328042328044*G0_0_1 - 0.245502645502649*G0_1_0 - 0.245502645502649*G0_1_1; A[121] = 0.0423280423280436*G0_0_0; A[122] = -0.778835978835987*G0_0_1 - 0.651851851851859*G0_1_1; A[123] = -0.338624338624343*G0_0_0 - 0.101587301587301*G0_0_1 - 0.101587301587295*G0_1_0; A[124] = 0.761904761904771*G0_0_0 + 0.296296296296298*G0_0_1 + 0.296296296296289*G0_1_0 - 0.0677248677248703*G0_1_1; A[125] = -2.09947089947092*G0_0_0 - 1.04973544973546*G0_0_1 - 1.04973544973546*G0_1_0 - 0.13544973544974*G0_1_1; A[126] = 0.338624338624342*G0_0_0 + 0.237037037037042*G0_0_1 + 0.778835978835985*G0_1_0 + 1.01587301587303*G0_1_1; A[127] = -0.761904761904769*G0_0_0 - 0.465608465608472*G0_0_1 - 1.58306878306881*G0_1_0 - 1.94708994708997*G0_1_1; A[128] = 2.09947089947092*G0_0_0 + 1.04973544973546*G0_0_1 + 1.04973544973546*G0_1_0 + 1.82857142857145*G0_1_1; A[129] = 0.101587301587302*G0_0_1 + 0.101587301587298*G0_1_0 - 0.135449735449745*G0_1_1; A[130] = 0.0423280423280418*G0_0_1 + 0.042328042328046*G0_1_0 - 0.0677248677248755*G0_1_1; A[131] = 0.101587301587302*G0_0_1 + 0.101587301587306*G0_1_0; A[132] = -0.338624338624346*G0_0_1 - 0.338624338624342*G0_1_0 + 0.135449735449746*G0_1_1; A[133] = -0.338624338624339*G0_0_1 - 0.338624338624348*G0_1_0 + 0.135449735449746*G0_1_1; A[134] = 1.2867724867725*G0_0_1 + 1.28677248677252*G0_1_0 + 0.135449735449738*G0_1_1; A[135] = -0.65185185185186*G0_0_0 - 0.651851851851859*G0_0_1 + 0.126984126984127*G0_1_0 + 0.126984126984127*G0_1_1; A[136] = -0.245502645502648*G0_0_0 - 0.203174603174604*G0_1_0; A[137] = 0.0423280423280447*G0_1_1; A[138] = -0.135449735449744*G0_0_0 - 0.237037037037042*G0_0_1 - 0.237037037037046*G0_1_0 - 0.338624338624343*G0_1_1; A[139] = -0.067724867724876*G0_0_0 - 0.110052910052921*G0_0_1 - 0.110052910052919*G0_1_0 - 0.152380952380965*G0_1_1; A[140] = -0.101587301587307*G0_0_1 - 0.101587301587302*G0_1_0 - 0.20317460317461*G0_1_1; A[141] = -0.13544973544974*G0_0_0 + 0.914285714285721*G0_0_1 + 0.914285714285715*G0_1_0 - 0.13544973544974*G0_1_1; A[142] = -0.0677248677248693*G0_0_0 - 0.36402116402116*G0_0_1 - 0.364021164021167*G0_1_0 + 0.101587301587313*G0_1_1; A[143] = 0.101587301587298*G0_0_1 + 0.101587301587302*G0_1_0 - 0.135449735449745*G0_1_1; A[144] = 1.82857142857145*G0_0_0 + 0.778835978835991*G0_0_1 + 0.778835978835991*G0_1_0 + 1.82857142857145*G0_1_1; A[145] = -1.94708994708997*G0_0_0 - 0.364021164021168*G0_0_1 - 1.4814814814815*G0_1_0 - 0.660317460317464*G0_1_1; A[146] = 1.01587301587303*G0_0_0 + 0.237037037037041*G0_0_1 + 0.778835978835984*G0_1_0 + 0.338624338624343*G0_1_1; A[147] = 0.135449735449736*G0_0_0 - 1.15132275132278*G0_0_1 - 1.15132275132276*G0_1_0 - 2.43809523809528*G0_1_1; A[148] = 0.135449735449748*G0_0_0 + 0.47407407407409*G0_0_1 + 0.474074074074094*G0_1_0 + 0.812698412698428*G0_1_1; A[149] = 0.135449735449745*G0_0_0 + 0.474074074074091*G0_0_1 + 0.474074074074087*G0_1_0 + 0.812698412698441*G0_1_1; A[150] = 0.467724867724874*G0_0_0 + 0.467724867724873*G0_0_1 + 0.0423280423280441*G0_1_0 + 0.0423280423280439*G0_1_1; A[151] = 0.467724867724873*G0_0_0 + 0.42539682539683*G0_1_0; A[152] = 0.042328042328046*G0_1_1; A[153] = 0.101587301587313*G0_0_0 + 0.465608465608474*G0_0_1 + 0.46560846560848*G0_1_0 + 0.761904761904771*G0_1_1; A[154] = 0.0507936507936556*G0_0_0 + 0.196825396825414*G0_0_1 + 0.196825396825401*G0_1_0 + 0.393650793650815*G0_1_1; A[155] = -0.0423280423280461*G0_0_1 - 0.0423280423280418*G0_1_0 - 0.152380952380962*G0_1_1; A[156] = 0.101587301587312*G0_0_0 - 0.364021164021161*G0_0_1 - 0.364021164021168*G0_1_0 - 0.0677248677248713*G0_1_1; A[157] = 0.0507936507936544*G0_0_0 - 0.146031746031758*G0_0_1 - 0.146031746031745*G0_1_0 + 0.0507936507936567*G0_1_1; A[158] = 0.042328042328046*G0_0_1 + 0.0423280423280417*G0_1_0 - 0.0677248677248755*G0_1_1; A[159] = -1.94708994708997*G0_0_0 - 1.4814814814815*G0_0_1 - 0.364021164021168*G0_1_0 - 0.660317460317464*G0_1_1; A[160] = 2.9587301587302*G0_0_0 + 1.4793650793651*G0_0_1 + 1.4793650793651*G0_1_0 + 2.45079365079369*G0_1_1; A[161] = -1.94708994708997*G0_0_0 - 0.465608465608473*G0_0_1 - 1.58306878306881*G0_1_0 - 0.76190476190477*G0_1_1; A[162] = -0.101587301587311*G0_0_0 + 1.5746031746032*G0_0_1 + 1.57460317460319*G0_1_0 + 0.406349206349198*G0_1_1; A[163] = -0.101587301587315*G0_0_0 - 1.67619047619052*G0_0_1 - 1.6761904761905*G0_1_0 - 2.84444444444451*G0_1_1; A[164] = -0.10158730158731*G0_0_0 - 0.0507936507936535*G0_0_1 - 0.050793650793656*G0_1_0 + 0.406349206349228*G0_1_1; A[165] = -0.245502645502648*G0_0_0 - 0.245502645502648*G0_0_1 - 0.0423280423280432*G0_1_0 - 0.0423280423280434*G0_1_1; A[166] = -0.65185185185186*G0_0_0 - 0.778835978835987*G0_1_0; A[167] = 0.042328042328044*G0_1_1; A[168] = -0.13544973544974*G0_0_0 - 1.04973544973546*G0_0_1 - 1.04973544973546*G0_1_0 - 2.09947089947092*G0_1_1; A[169] = -0.067724867724869*G0_0_0 + 0.296296296296292*G0_0_1 + 0.296296296296296*G0_1_0 + 0.761904761904774*G0_1_1; A[170] = -0.101587301587297*G0_0_1 - 0.101587301587302*G0_1_0 - 0.338624338624347*G0_1_1; A[171] = -0.135449735449743*G0_0_0 + 0.101587301587298*G0_0_1 + 0.101587301587302*G0_1_0; A[172] = -0.0677248677248737*G0_0_0 + 0.0423280423280455*G0_0_1 + 0.0423280423280432*G0_1_0; A[173] = 0.101587301587306*G0_0_1 + 0.101587301587302*G0_1_0; A[174] = 1.01587301587303*G0_0_0 + 0.778835978835984*G0_0_1 + 0.237037037037041*G0_1_0 + 0.338624338624343*G0_1_1; A[175] = -1.94708994708997*G0_0_0 - 1.58306878306881*G0_0_1 - 0.465608465608473*G0_1_0 - 0.76190476190477*G0_1_1; A[176] = 1.82857142857145*G0_0_0 + 1.04973544973546*G0_0_1 + 1.04973544973546*G0_1_0 + 2.09947089947092*G0_1_1; A[177] = 0.135449735449746*G0_0_0 - 0.338624338624338*G0_0_1 - 0.338624338624345*G0_1_0; A[178] = 0.135449735449737*G0_0_0 + 1.28677248677251*G0_0_1 + 1.2867724867725*G0_1_0; A[179] = 0.135449735449743*G0_0_0 - 0.338624338624349*G0_0_1 - 0.338624338624339*G0_1_0; A[180] = -0.0846560846560822*G0_0_0 - 0.0846560846560823*G0_0_1 - 0.0846560846560829*G0_1_0 - 0.0846560846560832*G0_1_1; A[181] = -0.084656084656088*G0_0_0; A[182] = -0.0846560846560878*G0_1_1; A[183] = 0.812698412698437*G0_0_0 + 0.338624338624345*G0_0_1 + 0.338624338624356*G0_1_0; A[184] = 0.406349206349235*G0_0_0 + 0.457142857142888*G0_0_1 + 0.457142857142891*G0_1_0 + 0.406349206349236*G0_1_1; A[185] = 0.338624338624356*G0_0_1 + 0.338624338624346*G0_1_0 + 0.81269841269844*G0_1_1; A[186] = -2.43809523809528*G0_0_0 - 1.15132275132278*G0_0_1 - 1.15132275132276*G0_1_0 + 0.135449735449737*G0_1_1; A[187] = 0.406349206349202*G0_0_0 + 1.5746031746032*G0_0_1 + 1.57460317460319*G0_1_0 - 0.101587301587311*G0_1_1; A[188] = -0.338624338624342*G0_0_1 - 0.338624338624346*G0_1_0 + 0.135449735449746*G0_1_1; A[189] = 0.135449735449736*G0_0_0 - 1.15132275132276*G0_0_1 - 1.15132275132278*G0_1_0 - 2.43809523809528*G0_1_1; A[190] = -0.10158730158731*G0_0_0 + 1.57460317460319*G0_0_1 + 1.5746031746032*G0_1_0 + 0.406349206349198*G0_1_1; A[191] = 0.135449735449746*G0_0_0 - 0.338624338624345*G0_0_1 - 0.338624338624338*G0_1_0; A[192] = 5.68888888888897*G0_0_0 + 2.84444444444447*G0_0_1 + 2.84444444444447*G0_1_0 + 5.68888888888897*G0_1_1; A[193] = -4.06349206349213*G0_0_0 - 2.03174603174608*G0_0_1 - 2.03174603174606*G0_1_0 - 0.812698412698431*G0_1_1; A[194] = -0.812698412698436*G0_0_0 - 2.03174603174606*G0_0_1 - 2.03174603174608*G0_1_0 - 4.06349206349214*G0_1_1; A[195] = -0.0846560846560885*G0_0_0 - 0.0846560846560885*G0_0_1 - 0.0846560846560903*G0_1_0 - 0.08465608465609*G0_1_1; A[196] = -0.0846560846560835*G0_0_0; A[197] = -0.0846560846560897*G0_1_1; A[198] = -2.43809523809527*G0_0_0 - 1.2867724867725*G0_0_1 - 1.28677248677251*G0_1_0; A[199] = 0.406349206349193*G0_0_0 - 1.168253968254*G0_0_1 - 1.16825396825399*G0_1_0 - 2.8444444444445*G0_1_1; A[200] = 0.33862433862433*G0_0_1 + 0.338624338624339*G0_1_0 + 0.812698412698428*G0_1_1; A[201] = 0.812698412698438*G0_0_0 + 0.474074074074093*G0_0_1 + 0.474074074074087*G0_1_0 + 0.135449735449747*G0_1_1; A[202] = 0.406349206349225*G0_0_0 - 0.0507936507936558*G0_0_1 - 0.0507936507936588*G0_1_0 - 0.101587301587314*G0_1_1; A[203] = -0.338624338624348*G0_0_1 - 0.338624338624339*G0_1_0 + 0.135449735449746*G0_1_1; A[204] = 0.135449735449748*G0_0_0 + 0.474074074074094*G0_0_1 + 0.47407407407409*G0_1_0 + 0.812698412698428*G0_1_1; A[205] = -0.101587301587315*G0_0_0 - 1.6761904761905*G0_0_1 - 1.67619047619052*G0_1_0 - 2.84444444444451*G0_1_1; A[206] = 0.135449735449737*G0_0_0 + 1.2867724867725*G0_0_1 + 1.28677248677251*G0_1_0; A[207] = -4.06349206349213*G0_0_0 - 2.03174603174606*G0_0_1 - 2.03174603174608*G0_1_0 - 0.812698412698431*G0_1_1; A[208] = 5.68888888888897*G0_0_0 + 2.84444444444451*G0_0_1 + 2.84444444444451*G0_1_0 + 5.68888888888901*G0_1_1; A[209] = -0.812698412698417*G0_0_0 + 1.21904761904764*G0_0_1 + 1.21904761904765*G0_1_0 - 0.812698412698424*G0_1_1; A[210] = -0.0846560846560898*G0_0_0 - 0.0846560846560895*G0_0_1 - 0.084656084656088*G0_1_0 - 0.0846560846560877*G0_1_1; A[211] = -0.0846560846560883*G0_0_0; A[212] = -0.0846560846560845*G0_1_1; A[213] = 0.812698412698423*G0_0_0 + 0.33862433862434*G0_0_1 + 0.338624338624331*G0_1_0; A[214] = -2.8444444444445*G0_0_0 - 1.16825396825399*G0_0_1 - 1.168253968254*G0_1_0 + 0.406349206349194*G0_1_1; A[215] = -1.28677248677251*G0_0_1 - 1.2867724867725*G0_1_0 - 2.43809523809528*G0_1_1; A[216] = 0.81269841269843*G0_0_0 + 0.474074074074089*G0_0_1 + 0.474074074074093*G0_1_0 + 0.135449735449746*G0_1_1; A[217] = -2.84444444444451*G0_0_0 - 1.67619047619052*G0_0_1 - 1.6761904761905*G0_1_0 - 0.101587301587313*G0_1_1; A[218] = 1.28677248677252*G0_0_1 + 1.2867724867725*G0_1_0 + 0.135449735449738*G0_1_1; A[219] = 0.135449735449745*G0_0_0 + 0.474074074074087*G0_0_1 + 0.474074074074091*G0_1_0 + 0.812698412698441*G0_1_1; A[220] = -0.10158730158731*G0_0_0 - 0.050793650793656*G0_0_1 - 0.0507936507936534*G0_1_0 + 0.406349206349228*G0_1_1; A[221] = 0.135449735449743*G0_0_0 - 0.338624338624339*G0_0_1 - 0.338624338624349*G0_1_0; A[222] = -0.812698412698436*G0_0_0 - 2.03174603174608*G0_0_1 - 2.03174603174606*G0_1_0 - 4.06349206349214*G0_1_1; A[223] = -0.812698412698417*G0_0_0 + 1.21904761904765*G0_0_1 + 1.21904761904764*G0_1_0 - 0.812698412698424*G0_1_1; A[224] = 5.68888888888901*G0_0_0 + 2.84444444444451*G0_0_1 + 2.84444444444451*G0_1_0 + 5.68888888888898*G0_1_1; } /// Constructor poisson2d_4_cell_integral_1_otherwise::poisson2d_4_cell_integral_1_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson2d_4_cell_integral_1_otherwise::~poisson2d_4_cell_integral_1_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson2d_4_cell_integral_1_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 15 // Number of operations (multiply-add pairs) for tensor contraction: 205 // Total number of operations (multiply-add pairs): 223 // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0 = det*w[0][0]*(1.0); const double G0_1 = det*w[0][1]*(1.0); const double G0_2 = det*w[0][2]*(1.0); const double G0_3 = det*w[0][3]*(1.0); const double G0_4 = det*w[0][4]*(1.0); const double G0_5 = det*w[0][5]*(1.0); const double G0_6 = det*w[0][6]*(1.0); const double G0_7 = det*w[0][7]*(1.0); const double G0_8 = det*w[0][8]*(1.0); const double G0_9 = det*w[0][9]*(1.0); const double G0_10 = det*w[0][10]*(1.0); const double G0_11 = det*w[0][11]*(1.0); const double G0_12 = det*w[0][12]*(1.0); const double G0_13 = det*w[0][13]*(1.0); const double G0_14 = det*w[0][14]*(1.0); // Compute element tensor A[0] = 0.00255731922398588*G0_0 - 0.000238095238095237*G0_1 - 0.000238095238095236*G0_2 - 0.000987654320987651*G0_3 - 0.000105820105820103*G0_4 - 0.000987654320987653*G0_5 + 0.00141093474426806*G0_6 - 0.000705467372134029*G0_7 + 0.00141093474426807*G0_9 - 0.000705467372134032*G0_10 + 0.00141093474426807*G0_12 - 0.00141093474426807*G0_13 - 0.00141093474426807*G0_14; A[1] = -0.000238095238095237*G0_0 + 0.00255731922398588*G0_1 - 0.000238095238095236*G0_2 + 0.00141093474426807*G0_3 - 0.000705467372134036*G0_4 - 0.00098765432098765*G0_6 - 0.000105820105820106*G0_7 - 0.000987654320987649*G0_8 - 0.000705467372134035*G0_10 + 0.00141093474426807*G0_11 - 0.00141093474426807*G0_12 + 0.00141093474426808*G0_13 - 0.00141093474426807*G0_14; A[2] = -0.000238095238095236*G0_0 - 0.000238095238095236*G0_1 + 0.00255731922398588*G0_2 - 0.000705467372134034*G0_4 + 0.00141093474426807*G0_5 - 0.000705467372134036*G0_7 + 0.00141093474426807*G0_8 - 0.00098765432098765*G0_9 - 0.000105820105820104*G0_10 - 0.00098765432098765*G0_11 - 0.00141093474426807*G0_12 - 0.00141093474426808*G0_13 + 0.00141093474426805*G0_14; A[3] = -0.000987654320987651*G0_0 + 0.00141093474426807*G0_1 + 0.0225749559082891*G0_3 - 0.0112874779541446*G0_4 + 0.00677248677248674*G0_5 + 0.00225749559082891*G0_6 + 0.000564373897707235*G0_7 + 0.00451499118165783*G0_8 + 0.00451499118165783*G0_9 - 0.00846560846560843*G0_10 + 0.0112874779541446*G0_11 - 0.00225749559082892*G0_12 + 0.0112874779541446*G0_13 + 0.00225749559082891*G0_14; A[4] = -0.000105820105820103*G0_0 - 0.000705467372134036*G0_1 - 0.000705467372134034*G0_2 - 0.0112874779541446*G0_3 + 0.0279365079365078*G0_4 - 0.0112874779541446*G0_5 + 0.000564373897707244*G0_6 + 0.000423280423280403*G0_7 - 0.00846560846560841*G0_8 + 0.000564373897707238*G0_9 + 0.00042328042328042*G0_10 - 0.00846560846560842*G0_11 - 0.00677248677248672*G0_12 + 0.00338624338624336*G0_13 + 0.00338624338624339*G0_14; A[5] = -0.000987654320987653*G0_0 + 0.00141093474426807*G0_2 + 0.00677248677248674*G0_3 - 0.0112874779541446*G0_4 + 0.0225749559082891*G0_5 + 0.00451499118165781*G0_6 - 0.00846560846560842*G0_7 + 0.0112874779541446*G0_8 + 0.0022574955908289*G0_9 + 0.000564373897707236*G0_10 + 0.00451499118165782*G0_11 - 0.00225749559082894*G0_12 + 0.00225749559082891*G0_13 + 0.0112874779541446*G0_14; A[6] = 0.00141093474426806*G0_0 - 0.000987654320987649*G0_1 + 0.00225749559082891*G0_3 + 0.000564373897707244*G0_4 + 0.00451499118165781*G0_5 + 0.0225749559082891*G0_6 - 0.0112874779541446*G0_7 + 0.00677248677248673*G0_8 + 0.0112874779541446*G0_9 - 0.00846560846560842*G0_10 + 0.00451499118165782*G0_11 + 0.0112874779541446*G0_12 - 0.00225749559082892*G0_13 + 0.00225749559082889*G0_14; A[7] = -0.000705467372134029*G0_0 - 0.000105820105820106*G0_1 - 0.000705467372134036*G0_2 + 0.000564373897707235*G0_3 + 0.000423280423280404*G0_4 - 0.00846560846560842*G0_5 - 0.0112874779541446*G0_6 + 0.0279365079365078*G0_7 - 0.0112874779541446*G0_8 - 0.00846560846560842*G0_9 + 0.000423280423280421*G0_10 + 0.000564373897707235*G0_11 + 0.00338624338624338*G0_12 - 0.00677248677248674*G0_13 + 0.00338624338624335*G0_14; A[8] = -0.000987654320987649*G0_1 + 0.00141093474426807*G0_2 + 0.00451499118165783*G0_3 - 0.00846560846560841*G0_4 + 0.0112874779541446*G0_5 + 0.00677248677248673*G0_6 - 0.0112874779541446*G0_7 + 0.0225749559082891*G0_8 + 0.00451499118165782*G0_9 + 0.000564373897707234*G0_10 + 0.00225749559082891*G0_11 + 0.0022574955908289*G0_12 - 0.00225749559082892*G0_13 + 0.0112874779541446*G0_14; A[9] = 0.00141093474426807*G0_0 - 0.00098765432098765*G0_2 + 0.00451499118165783*G0_3 + 0.000564373897707238*G0_4 + 0.0022574955908289*G0_5 + 0.0112874779541446*G0_6 - 0.00846560846560842*G0_7 + 0.00451499118165782*G0_8 + 0.0225749559082891*G0_9 - 0.0112874779541446*G0_10 + 0.00677248677248673*G0_11 + 0.0112874779541446*G0_12 + 0.00225749559082891*G0_13 - 0.00225749559082891*G0_14; A[10] = -0.000705467372134032*G0_0 - 0.000705467372134035*G0_1 - 0.000105820105820103*G0_2 - 0.00846560846560843*G0_3 + 0.00042328042328042*G0_4 + 0.000564373897707236*G0_5 - 0.00846560846560842*G0_6 + 0.000423280423280421*G0_7 + 0.000564373897707234*G0_8 - 0.0112874779541446*G0_9 + 0.0279365079365078*G0_10 - 0.0112874779541446*G0_11 + 0.00338624338624338*G0_12 + 0.00338624338624338*G0_13 - 0.00677248677248672*G0_14; A[11] = 0.00141093474426807*G0_1 - 0.00098765432098765*G0_2 + 0.0112874779541446*G0_3 - 0.00846560846560842*G0_4 + 0.00451499118165781*G0_5 + 0.00451499118165782*G0_6 + 0.000564373897707235*G0_7 + 0.00225749559082891*G0_8 + 0.00677248677248673*G0_9 - 0.0112874779541446*G0_10 + 0.0225749559082891*G0_11 + 0.00225749559082891*G0_12 + 0.0112874779541445*G0_13 - 0.00225749559082891*G0_14; A[12] = 0.00141093474426807*G0_0 - 0.00141093474426807*G0_1 - 0.00141093474426807*G0_2 - 0.00225749559082892*G0_3 - 0.00677248677248672*G0_4 - 0.00225749559082894*G0_5 + 0.0112874779541446*G0_6 + 0.00338624338624338*G0_7 + 0.0022574955908289*G0_8 + 0.0112874779541446*G0_9 + 0.00338624338624339*G0_10 + 0.00225749559082891*G0_11 + 0.0948148148148144*G0_12 - 0.0135449735449735*G0_13 - 0.0135449735449735*G0_14; A[13] = -0.00141093474426807*G0_0 + 0.00141093474426808*G0_1 - 0.00141093474426808*G0_2 + 0.0112874779541446*G0_3 + 0.00338624338624335*G0_4 + 0.00225749559082891*G0_5 - 0.00225749559082892*G0_6 - 0.00677248677248674*G0_7 - 0.00225749559082891*G0_8 + 0.00225749559082891*G0_9 + 0.00338624338624338*G0_10 + 0.0112874779541445*G0_11 - 0.0135449735449735*G0_12 + 0.0948148148148145*G0_13 - 0.0135449735449735*G0_14; A[14] = -0.00141093474426807*G0_0 - 0.00141093474426807*G0_1 + 0.00141093474426805*G0_2 + 0.00225749559082891*G0_3 + 0.00338624338624339*G0_4 + 0.0112874779541446*G0_5 + 0.00225749559082889*G0_6 + 0.00338624338624335*G0_7 + 0.0112874779541446*G0_8 - 0.00225749559082891*G0_9 - 0.00677248677248672*G0_10 - 0.00225749559082891*G0_11 - 0.0135449735449735*G0_12 - 0.0135449735449735*G0_13 + 0.0948148148148144*G0_14; } /// Constructor poisson2d_4_form_0::poisson2d_4_form_0() : ufc::form() { // Do nothing } /// Destructor poisson2d_4_form_0::~poisson2d_4_form_0() { // Do nothing } /// Return a string identifying the form const char* poisson2d_4_form_0::signature() const { return "444380608878aa7771d2342ffdc76293bd89d29a27b77459083fc4b5fe815f2d4749b638ce86b2fae9de3f9dc1793c6fb6052e80900695f8a6eb61036b4fc363"; } /// Return the rank of the global tensor (r) std::size_t poisson2d_4_form_0::rank() const { return 2; } /// Return the number of coefficients (n) std::size_t poisson2d_4_form_0::num_coefficients() const { return 0; } /// Return the number of cell domains std::size_t poisson2d_4_form_0::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson2d_4_form_0::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson2d_4_form_0::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson2d_4_form_0::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson2d_4_form_0::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson2d_4_form_0::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson2d_4_form_0::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson2d_4_form_0::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson2d_4_form_0::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson2d_4_finite_element_0(); break; } case 1: { return new poisson2d_4_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson2d_4_form_0::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson2d_4_dofmap_0(); break; } case 1: { return new poisson2d_4_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson2d_4_form_0::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson2d_4_form_0::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson2d_4_form_0::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson2d_4_form_0::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson2d_4_form_0::create_default_cell_integral() const { return new poisson2d_4_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson2d_4_form_0::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson2d_4_form_0::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson2d_4_form_0::create_default_point_integral() const { return 0; } /// Constructor poisson2d_4_form_1::poisson2d_4_form_1() : ufc::form() { // Do nothing } /// Destructor poisson2d_4_form_1::~poisson2d_4_form_1() { // Do nothing } /// Return a string identifying the form const char* poisson2d_4_form_1::signature() const { return "3ff0d7c18c620cd20e66f51ad0513b52bc0a05b158c0355b87c6d54dec6a80272d6d5ef20f54984fe78c283492a4040257ec76a0f424637c4b4914d96519023a"; } /// Return the rank of the global tensor (r) std::size_t poisson2d_4_form_1::rank() const { return 1; } /// Return the number of coefficients (n) std::size_t poisson2d_4_form_1::num_coefficients() const { return 1; } /// Return the number of cell domains std::size_t poisson2d_4_form_1::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson2d_4_form_1::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson2d_4_form_1::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson2d_4_form_1::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson2d_4_form_1::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson2d_4_form_1::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson2d_4_form_1::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson2d_4_form_1::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson2d_4_form_1::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson2d_4_finite_element_0(); break; } case 1: { return new poisson2d_4_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson2d_4_form_1::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson2d_4_dofmap_0(); break; } case 1: { return new poisson2d_4_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson2d_4_form_1::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson2d_4_form_1::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson2d_4_form_1::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson2d_4_form_1::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson2d_4_form_1::create_default_cell_integral() const { return new poisson2d_4_cell_integral_1_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson2d_4_form_1::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson2d_4_form_1::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson2d_4_form_1::create_default_point_integral() const { return 0; } dolfin-1.3.0/bench/fem/convergence/cpp/Poisson3D_2.ufl0000644000175000017500000000171012263014601022320 0ustar johannrjohannr# Copyright (C) 2005-2006 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2005 # Last changed: 2006-03-28 # # Poisson's equation in 3D for q = 2 element = FiniteElement("Lagrange", tetrahedron, 2) v = TestFunction(element) U = TrialFunction(element) f = Coefficient(element) a = v.dx(i)*U.dx(i)*dx L = v*f*dx dolfin-1.3.0/bench/fem/convergence/cpp/Poisson2D_2.cpp0000644000175000017500000021552212263015055022327 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #include "Poisson2D_2.h" /// Constructor poisson2d_2_finite_element_0::poisson2d_2_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor poisson2d_2_finite_element_0::~poisson2d_2_finite_element_0() { // Do nothing } /// Return a string identifying the finite element const char* poisson2d_2_finite_element_0::signature() const { return "FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 2, None)"; } /// Return the cell shape ufc::shape poisson2d_2_finite_element_0::cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape std::size_t poisson2d_2_finite_element_0::topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape std::size_t poisson2d_2_finite_element_0::geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space std::size_t poisson2d_2_finite_element_0::space_dimension() const { return 6; } /// Return the rank of the value space std::size_t poisson2d_2_finite_element_0::value_rank() const { return 0; } /// Return the dimension of the value space for axis i std::size_t poisson2d_2_finite_element_0::value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell void poisson2d_2_finite_element_0::evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, -0.173205080756888, -0.1, 0.121716123890037, 0.0942809041582063, 0.0544331053951817}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.173205080756888, -0.1, 0.121716123890037, -0.0942809041582064, 0.0544331053951818}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.0, 0.2, 0.0, 0.0, 0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.23094010767585, 0.133333333333333, 0.0, 0.188561808316413, -0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, -0.23094010767585, 0.133333333333333, 0.0, -0.188561808316413, -0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.0, -0.266666666666667, -0.243432247780074, 0.0, 0.0544331053951817}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell void poisson2d_2_finite_element_0::evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 6; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell void poisson2d_2_finite_element_0::evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 2) { return ; } // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[4][2]; for (unsigned int row = 0; row < 4; row++) { for (unsigned int col = 0; col < 2; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 1) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[2][2] = {{K[0], K[1]}, {K[2], K[3]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[4][4]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, -0.173205080756888, -0.1, 0.121716123890037, 0.0942809041582063, 0.0544331053951817}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.173205080756888, -0.1, 0.121716123890037, -0.0942809041582064, 0.0544331053951818}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.0, 0.2, 0.0, 0.0, 0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.23094010767585, 0.133333333333333, 0.0, 0.188561808316413, -0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, -0.23094010767585, 0.133333333333333, 0.0, -0.188561808316413, -0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.0, -0.266666666666667, -0.243432247780074, 0.0, 0.0544331053951817}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell void poisson2d_2_finite_element_0::evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 6; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 2) { return ; } // Helper variable to hold values of a single dof. double dof_values[4]; for (unsigned int r = 0; r < 4; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 6; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f double poisson2d_2_finite_element_0::evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 5: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f void poisson2d_2_finite_element_0::evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[4] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); values[5] = vals[0]; } /// Interpolate vertex values from dof values void poisson2d_2_finite_element_0::interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; } /// Map coordinate xhat from reference cell to coordinate x in cell void poisson2d_2_finite_element_0::map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell void poisson2d_2_finite_element_0::map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) std::size_t poisson2d_2_finite_element_0::num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) ufc::finite_element* poisson2d_2_finite_element_0::create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance ufc::finite_element* poisson2d_2_finite_element_0::create() const { return new poisson2d_2_finite_element_0(); } /// Constructor poisson2d_2_dofmap_0::poisson2d_2_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor poisson2d_2_dofmap_0::~poisson2d_2_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap const char* poisson2d_2_dofmap_0::signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 2, None)"; } /// Return true iff mesh entities of topological dimension d are needed bool poisson2d_2_dofmap_0::needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return true; break; } case 2: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape std::size_t poisson2d_2_dofmap_0::topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape std::size_t poisson2d_2_dofmap_0::geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space std::size_t poisson2d_2_dofmap_0::global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0] + num_global_entities[1]; } /// Return the dimension of the local finite element function space for a cell std::size_t poisson2d_2_dofmap_0::local_dimension() const { return 6; } /// Return the number of dofs on each cell facet std::size_t poisson2d_2_dofmap_0::num_facet_dofs() const { return 3; } /// Return the number of dofs associated with each cell entity of dimension d std::size_t poisson2d_2_dofmap_0::num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 1; break; } case 2: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell void poisson2d_2_dofmap_0::tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; dofs[3] = offset + c.entity_indices[1][0]; dofs[4] = offset + c.entity_indices[1][1]; dofs[5] = offset + c.entity_indices[1][2]; offset += num_global_entities[1]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs void poisson2d_2_dofmap_0::tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 4; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 5; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) void poisson2d_2_dofmap_0::tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } } break; } case 1: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 3; break; } case 1: { dofs[0] = 4; break; } case 2: { dofs[0] = 5; break; } } break; } case 2: { break; } } } /// Tabulate the coordinates of all dofs on a cell void poisson2d_2_dofmap_0::tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[1][0] = vertex_coordinates[2]; dof_coordinates[1][1] = vertex_coordinates[3]; dof_coordinates[2][0] = vertex_coordinates[4]; dof_coordinates[2][1] = vertex_coordinates[5]; dof_coordinates[3][0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; dof_coordinates[3][1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; dof_coordinates[4][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; dof_coordinates[4][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; dof_coordinates[5][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; dof_coordinates[5][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; } /// Return the number of sub dofmaps (for a mixed element) std::size_t poisson2d_2_dofmap_0::num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) ufc::dofmap* poisson2d_2_dofmap_0::create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance ufc::dofmap* poisson2d_2_dofmap_0::create() const { return new poisson2d_2_dofmap_0(); } /// Constructor poisson2d_2_cell_integral_0_otherwise::poisson2d_2_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson2d_2_cell_integral_0_otherwise::~poisson2d_2_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson2d_2_cell_integral_0_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 8 // Number of operations (multiply-add pairs) for tensor contraction: 49 // Total number of operations (multiply-add pairs): 60 // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0_0 = det*(K[0]*K[0] + K[1]*K[1]); const double G0_0_1 = det*(K[0]*K[2] + K[1]*K[3]); const double G0_1_0 = det*(K[2]*K[0] + K[3]*K[1]); const double G0_1_1 = det*(K[2]*K[2] + K[3]*K[3]); // Compute element tensor A[0] = 0.5*G0_0_0 + 0.5*G0_0_1 + 0.5*G0_1_0 + 0.5*G0_1_1; A[1] = 0.166666666666667*G0_0_0 + 0.166666666666667*G0_1_0; A[2] = 0.166666666666667*G0_0_1 + 0.166666666666667*G0_1_1; A[3] = 0.0; A[4] = -0.666666666666667*G0_0_1 - 0.666666666666667*G0_1_1; A[5] = -0.666666666666667*G0_0_0 - 0.666666666666667*G0_1_0; A[6] = 0.166666666666667*G0_0_0 + 0.166666666666667*G0_0_1; A[7] = 0.5*G0_0_0; A[8] = -0.166666666666667*G0_0_1; A[9] = 0.666666666666666*G0_0_1; A[10] = 0.0; A[11] = -0.666666666666667*G0_0_0 - 0.666666666666666*G0_0_1; A[12] = 0.166666666666667*G0_1_0 + 0.166666666666667*G0_1_1; A[13] = -0.166666666666667*G0_1_0; A[14] = 0.5*G0_1_1; A[15] = 0.666666666666666*G0_1_0; A[16] = -0.666666666666666*G0_1_0 - 0.666666666666666*G0_1_1; A[17] = 0.0; A[18] = 0.0; A[19] = 0.666666666666666*G0_1_0; A[20] = 0.666666666666666*G0_0_1; A[21] = 1.33333333333333*G0_0_0 + 0.666666666666665*G0_0_1 + 0.666666666666665*G0_1_0 + 1.33333333333333*G0_1_1; A[22] = -1.33333333333333*G0_0_0 - 0.666666666666666*G0_0_1 - 0.666666666666665*G0_1_0; A[23] = -0.666666666666665*G0_0_1 - 0.666666666666667*G0_1_0 - 1.33333333333333*G0_1_1; A[24] = -0.666666666666667*G0_1_0 - 0.666666666666667*G0_1_1; A[25] = 0.0; A[26] = -0.666666666666666*G0_0_1 - 0.666666666666666*G0_1_1; A[27] = -1.33333333333333*G0_0_0 - 0.666666666666665*G0_0_1 - 0.666666666666666*G0_1_0; A[28] = 1.33333333333333*G0_0_0 + 0.666666666666666*G0_0_1 + 0.666666666666666*G0_1_0 + 1.33333333333333*G0_1_1; A[29] = 0.666666666666665*G0_0_1 + 0.666666666666667*G0_1_0; A[30] = -0.666666666666667*G0_0_0 - 0.666666666666667*G0_0_1; A[31] = -0.666666666666667*G0_0_0 - 0.666666666666666*G0_1_0; A[32] = 0.0; A[33] = -0.666666666666667*G0_0_1 - 0.666666666666665*G0_1_0 - 1.33333333333333*G0_1_1; A[34] = 0.666666666666667*G0_0_1 + 0.666666666666665*G0_1_0; A[35] = 1.33333333333333*G0_0_0 + 0.666666666666667*G0_0_1 + 0.666666666666667*G0_1_0 + 1.33333333333333*G0_1_1; } /// Constructor poisson2d_2_cell_integral_1_otherwise::poisson2d_2_cell_integral_1_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson2d_2_cell_integral_1_otherwise::~poisson2d_2_cell_integral_1_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson2d_2_cell_integral_1_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 6 // Number of operations (multiply-add pairs) for tensor contraction: 21 // Total number of operations (multiply-add pairs): 30 // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0 = det*w[0][0]*(1.0); const double G0_1 = det*w[0][1]*(1.0); const double G0_2 = det*w[0][2]*(1.0); const double G0_3 = det*w[0][3]*(1.0); const double G0_4 = det*w[0][4]*(1.0); const double G0_5 = det*w[0][5]*(1.0); // Compute element tensor A[0] = 0.0166666666666666*G0_0 - 0.00277777777777778*G0_1 - 0.00277777777777778*G0_2 - 0.0111111111111111*G0_3; A[1] = -0.00277777777777778*G0_0 + 0.0166666666666667*G0_1 - 0.00277777777777781*G0_2 - 0.0111111111111111*G0_4; A[2] = -0.00277777777777778*G0_0 - 0.0027777777777778*G0_1 + 0.0166666666666667*G0_2 - 0.0111111111111111*G0_5; A[3] = -0.0111111111111111*G0_0 + 0.0888888888888888*G0_3 + 0.0444444444444443*G0_4 + 0.0444444444444443*G0_5; A[4] = -0.0111111111111111*G0_1 + 0.0444444444444443*G0_3 + 0.0888888888888887*G0_4 + 0.0444444444444443*G0_5; A[5] = -0.0111111111111111*G0_2 + 0.0444444444444443*G0_3 + 0.0444444444444443*G0_4 + 0.0888888888888887*G0_5; } /// Constructor poisson2d_2_form_0::poisson2d_2_form_0() : ufc::form() { // Do nothing } /// Destructor poisson2d_2_form_0::~poisson2d_2_form_0() { // Do nothing } /// Return a string identifying the form const char* poisson2d_2_form_0::signature() const { return "4884659e9f56b85969137db1780899a012b0f8ac2eb0ef54c484988ea6e5b148cd5bd63694a246770d19fad2814ce840f2a677774c43e8eb81cac0f2a0472e0f"; } /// Return the rank of the global tensor (r) std::size_t poisson2d_2_form_0::rank() const { return 2; } /// Return the number of coefficients (n) std::size_t poisson2d_2_form_0::num_coefficients() const { return 0; } /// Return the number of cell domains std::size_t poisson2d_2_form_0::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson2d_2_form_0::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson2d_2_form_0::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson2d_2_form_0::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson2d_2_form_0::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson2d_2_form_0::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson2d_2_form_0::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson2d_2_form_0::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson2d_2_form_0::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson2d_2_finite_element_0(); break; } case 1: { return new poisson2d_2_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson2d_2_form_0::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson2d_2_dofmap_0(); break; } case 1: { return new poisson2d_2_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson2d_2_form_0::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson2d_2_form_0::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson2d_2_form_0::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson2d_2_form_0::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson2d_2_form_0::create_default_cell_integral() const { return new poisson2d_2_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson2d_2_form_0::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson2d_2_form_0::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson2d_2_form_0::create_default_point_integral() const { return 0; } /// Constructor poisson2d_2_form_1::poisson2d_2_form_1() : ufc::form() { // Do nothing } /// Destructor poisson2d_2_form_1::~poisson2d_2_form_1() { // Do nothing } /// Return a string identifying the form const char* poisson2d_2_form_1::signature() const { return "cf233358bfd1086ac41c948b15f716ea463484b4d60163a9b9361bea1c1cef625eb4bbdf6de038a538bd46c8445fd3f245d00fb19b4c204c01eb182d6f003369"; } /// Return the rank of the global tensor (r) std::size_t poisson2d_2_form_1::rank() const { return 1; } /// Return the number of coefficients (n) std::size_t poisson2d_2_form_1::num_coefficients() const { return 1; } /// Return the number of cell domains std::size_t poisson2d_2_form_1::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson2d_2_form_1::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson2d_2_form_1::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson2d_2_form_1::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson2d_2_form_1::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson2d_2_form_1::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson2d_2_form_1::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson2d_2_form_1::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson2d_2_form_1::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson2d_2_finite_element_0(); break; } case 1: { return new poisson2d_2_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson2d_2_form_1::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson2d_2_dofmap_0(); break; } case 1: { return new poisson2d_2_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson2d_2_form_1::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson2d_2_form_1::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson2d_2_form_1::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson2d_2_form_1::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson2d_2_form_1::create_default_cell_integral() const { return new poisson2d_2_cell_integral_1_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson2d_2_form_1::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson2d_2_form_1::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson2d_2_form_1::create_default_point_integral() const { return 0; } dolfin-1.3.0/bench/fem/convergence/cpp/Poisson3D_1.cpp0000644000175000017500000015647212263015056022340 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #include "Poisson3D_1.h" /// Constructor poisson3d_1_finite_element_0::poisson3d_1_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor poisson3d_1_finite_element_0::~poisson3d_1_finite_element_0() { // Do nothing } /// Return a string identifying the finite element const char* poisson3d_1_finite_element_0::signature() const { return "FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, None)"; } /// Return the cell shape ufc::shape poisson3d_1_finite_element_0::cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape std::size_t poisson3d_1_finite_element_0::topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape std::size_t poisson3d_1_finite_element_0::geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space std::size_t poisson3d_1_finite_element_0::space_dimension() const { return 4; } /// Return the rank of the value space std::size_t poisson3d_1_finite_element_0::value_rank() const { return 0; } /// Return the dimension of the value space for axis i std::size_t poisson3d_1_finite_element_0::value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell void poisson3d_1_finite_element_0::evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell void poisson3d_1_finite_element_0::evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 4; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell void poisson3d_1_finite_element_0::evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[3][1]; for (unsigned int row = 0; row < 3; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 2) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[3][3] = {{K[0], K[1], K[2]}, {K[3], K[4], K[5]}, {K[6], K[7], K[8]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[3][3]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell void poisson3d_1_finite_element_0::evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 4; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[3]; for (unsigned int r = 0; r < 3; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 4; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f double poisson3d_1_finite_element_0::evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f void poisson3d_1_finite_element_0::evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[3] = vals[0]; } /// Interpolate vertex values from dof values void poisson3d_1_finite_element_0::interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; vertex_values[3] = dof_values[3]; } /// Map coordinate xhat from reference cell to coordinate x in cell void poisson3d_1_finite_element_0::map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell void poisson3d_1_finite_element_0::map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) std::size_t poisson3d_1_finite_element_0::num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) ufc::finite_element* poisson3d_1_finite_element_0::create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance ufc::finite_element* poisson3d_1_finite_element_0::create() const { return new poisson3d_1_finite_element_0(); } /// Constructor poisson3d_1_dofmap_0::poisson3d_1_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor poisson3d_1_dofmap_0::~poisson3d_1_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap const char* poisson3d_1_dofmap_0::signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, None)"; } /// Return true iff mesh entities of topological dimension d are needed bool poisson3d_1_dofmap_0::needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return false; break; } case 3: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape std::size_t poisson3d_1_dofmap_0::topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape std::size_t poisson3d_1_dofmap_0::geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space std::size_t poisson3d_1_dofmap_0::global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0]; } /// Return the dimension of the local finite element function space for a cell std::size_t poisson3d_1_dofmap_0::local_dimension() const { return 4; } /// Return the number of dofs on each cell facet std::size_t poisson3d_1_dofmap_0::num_facet_dofs() const { return 3; } /// Return the number of dofs associated with each cell entity of dimension d std::size_t poisson3d_1_dofmap_0::num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 0; break; } case 2: { return 0; break; } case 3: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell void poisson3d_1_dofmap_0::tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { dofs[0] = c.entity_indices[0][0]; dofs[1] = c.entity_indices[0][1]; dofs[2] = c.entity_indices[0][2]; dofs[3] = c.entity_indices[0][3]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs void poisson3d_1_dofmap_0::tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; break; } case 3: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 2; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) void poisson3d_1_dofmap_0::tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } case 3: { dofs[0] = 3; break; } } break; } case 1: { break; } case 2: { break; } case 3: { break; } } } /// Tabulate the coordinates of all dofs on a cell void poisson3d_1_dofmap_0::tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[0][2] = vertex_coordinates[2]; dof_coordinates[1][0] = vertex_coordinates[3]; dof_coordinates[1][1] = vertex_coordinates[4]; dof_coordinates[1][2] = vertex_coordinates[5]; dof_coordinates[2][0] = vertex_coordinates[6]; dof_coordinates[2][1] = vertex_coordinates[7]; dof_coordinates[2][2] = vertex_coordinates[8]; dof_coordinates[3][0] = vertex_coordinates[9]; dof_coordinates[3][1] = vertex_coordinates[10]; dof_coordinates[3][2] = vertex_coordinates[11]; } /// Return the number of sub dofmaps (for a mixed element) std::size_t poisson3d_1_dofmap_0::num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) ufc::dofmap* poisson3d_1_dofmap_0::create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance ufc::dofmap* poisson3d_1_dofmap_0::create() const { return new poisson3d_1_dofmap_0(); } /// Constructor poisson3d_1_cell_integral_0_otherwise::poisson3d_1_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson3d_1_cell_integral_0_otherwise::~poisson3d_1_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson3d_1_cell_integral_0_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 27 // Number of operations (multiply-add pairs) for tensor contraction: 28 // Total number of operations (multiply-add pairs): 58 // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0_0 = det*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2]); const double G0_0_1 = det*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5]); const double G0_0_2 = det*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8]); const double G0_1_0 = det*(K[3]*K[0] + K[4]*K[1] + K[5]*K[2]); const double G0_1_1 = det*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5]); const double G0_1_2 = det*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8]); const double G0_2_0 = det*(K[6]*K[0] + K[7]*K[1] + K[8]*K[2]); const double G0_2_1 = det*(K[6]*K[3] + K[7]*K[4] + K[8]*K[5]); const double G0_2_2 = det*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8]); // Compute element tensor A[0] = 0.166666666666667*G0_0_0 + 0.166666666666667*G0_0_1 + 0.166666666666667*G0_0_2 + 0.166666666666667*G0_1_0 + 0.166666666666667*G0_1_1 + 0.166666666666667*G0_1_2 + 0.166666666666667*G0_2_0 + 0.166666666666667*G0_2_1 + 0.166666666666667*G0_2_2; A[1] = -0.166666666666667*G0_0_0 - 0.166666666666667*G0_1_0 - 0.166666666666667*G0_2_0; A[2] = -0.166666666666667*G0_0_1 - 0.166666666666667*G0_1_1 - 0.166666666666667*G0_2_1; A[3] = -0.166666666666667*G0_0_2 - 0.166666666666667*G0_1_2 - 0.166666666666667*G0_2_2; A[4] = -0.166666666666667*G0_0_0 - 0.166666666666667*G0_0_1 - 0.166666666666667*G0_0_2; A[5] = 0.166666666666667*G0_0_0; A[6] = 0.166666666666667*G0_0_1; A[7] = 0.166666666666667*G0_0_2; A[8] = -0.166666666666667*G0_1_0 - 0.166666666666667*G0_1_1 - 0.166666666666667*G0_1_2; A[9] = 0.166666666666667*G0_1_0; A[10] = 0.166666666666667*G0_1_1; A[11] = 0.166666666666667*G0_1_2; A[12] = -0.166666666666667*G0_2_0 - 0.166666666666667*G0_2_1 - 0.166666666666667*G0_2_2; A[13] = 0.166666666666667*G0_2_0; A[14] = 0.166666666666667*G0_2_1; A[15] = 0.166666666666667*G0_2_2; } /// Constructor poisson3d_1_cell_integral_1_otherwise::poisson3d_1_cell_integral_1_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson3d_1_cell_integral_1_otherwise::~poisson3d_1_cell_integral_1_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson3d_1_cell_integral_1_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 4 // Number of operations (multiply-add pairs) for tensor contraction: 14 // Total number of operations (multiply-add pairs): 21 // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0 = det*w[0][0]*(1.0); const double G0_1 = det*w[0][1]*(1.0); const double G0_2 = det*w[0][2]*(1.0); const double G0_3 = det*w[0][3]*(1.0); // Compute element tensor A[0] = 0.0166666666666666*G0_0 + 0.0083333333333333*G0_1 + 0.0083333333333333*G0_2 + 0.0083333333333333*G0_3; A[1] = 0.0083333333333333*G0_0 + 0.0166666666666667*G0_1 + 0.00833333333333337*G0_2 + 0.00833333333333337*G0_3; A[2] = 0.0083333333333333*G0_0 + 0.00833333333333337*G0_1 + 0.0166666666666667*G0_2 + 0.00833333333333337*G0_3; A[3] = 0.0083333333333333*G0_0 + 0.00833333333333337*G0_1 + 0.00833333333333337*G0_2 + 0.0166666666666667*G0_3; } /// Constructor poisson3d_1_form_0::poisson3d_1_form_0() : ufc::form() { // Do nothing } /// Destructor poisson3d_1_form_0::~poisson3d_1_form_0() { // Do nothing } /// Return a string identifying the form const char* poisson3d_1_form_0::signature() const { return "b27132efd82ca50147a2cb9a277cccb3a4edce5c9094b8f34dea1203b38077d6b18223923845209093a803366ef20cca85bb5098023d6e8c607e14c9716d8c15"; } /// Return the rank of the global tensor (r) std::size_t poisson3d_1_form_0::rank() const { return 2; } /// Return the number of coefficients (n) std::size_t poisson3d_1_form_0::num_coefficients() const { return 0; } /// Return the number of cell domains std::size_t poisson3d_1_form_0::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson3d_1_form_0::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson3d_1_form_0::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson3d_1_form_0::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson3d_1_form_0::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson3d_1_form_0::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson3d_1_form_0::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson3d_1_form_0::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson3d_1_form_0::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson3d_1_finite_element_0(); break; } case 1: { return new poisson3d_1_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson3d_1_form_0::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson3d_1_dofmap_0(); break; } case 1: { return new poisson3d_1_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson3d_1_form_0::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson3d_1_form_0::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson3d_1_form_0::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson3d_1_form_0::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson3d_1_form_0::create_default_cell_integral() const { return new poisson3d_1_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson3d_1_form_0::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson3d_1_form_0::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson3d_1_form_0::create_default_point_integral() const { return 0; } /// Constructor poisson3d_1_form_1::poisson3d_1_form_1() : ufc::form() { // Do nothing } /// Destructor poisson3d_1_form_1::~poisson3d_1_form_1() { // Do nothing } /// Return a string identifying the form const char* poisson3d_1_form_1::signature() const { return "6007b26564a03b0e5c8d6c8a25dd7d88aa63ea0d4890f2d008eac075de60364073a82d571802c9184e31f0a9b3bdd9232e8627e0bd9ad00029d0e22d61aea813"; } /// Return the rank of the global tensor (r) std::size_t poisson3d_1_form_1::rank() const { return 1; } /// Return the number of coefficients (n) std::size_t poisson3d_1_form_1::num_coefficients() const { return 1; } /// Return the number of cell domains std::size_t poisson3d_1_form_1::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson3d_1_form_1::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson3d_1_form_1::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson3d_1_form_1::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson3d_1_form_1::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson3d_1_form_1::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson3d_1_form_1::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson3d_1_form_1::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson3d_1_form_1::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson3d_1_finite_element_0(); break; } case 1: { return new poisson3d_1_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson3d_1_form_1::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson3d_1_dofmap_0(); break; } case 1: { return new poisson3d_1_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson3d_1_form_1::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson3d_1_form_1::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson3d_1_form_1::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson3d_1_form_1::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson3d_1_form_1::create_default_cell_integral() const { return new poisson3d_1_cell_integral_1_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson3d_1_form_1::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson3d_1_form_1::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson3d_1_form_1::create_default_point_integral() const { return 0; } dolfin-1.3.0/bench/fem/convergence/cpp/Poisson2D_5.h0000644000175000017500000010754012263015056022000 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #ifndef __POISSON2D_5_H #define __POISSON2D_5_H #include #include #include #include /// This class defines the interface for a finite element. class poisson2d_5_finite_element_0: public ufc::finite_element { public: /// Constructor poisson2d_5_finite_element_0(); /// Destructor virtual ~poisson2d_5_finite_element_0(); /// Return a string identifying the finite element virtual const char* signature() const; /// Return the cell shape virtual ufc::shape cell_shape() const; /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const; /// Return the rank of the value space virtual std::size_t value_rank() const; /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const; /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const; /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const; /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const; /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const; /// Create a new class instance virtual ufc::finite_element* create() const; }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class poisson2d_5_dofmap_0: public ufc::dofmap { public: /// Constructor poisson2d_5_dofmap_0(); /// Destructor virtual ~poisson2d_5_dofmap_0(); /// Return a string identifying the dofmap virtual const char* signature() const; /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const; /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const; /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const; /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const; /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const; /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const; /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const; /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const; /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** coordinates, const double* vertex_coordinates) const; /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const; /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const; /// Create a new class instance virtual ufc::dofmap* create() const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson2d_5_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor poisson2d_5_cell_integral_0_otherwise(); /// Destructor virtual ~poisson2d_5_cell_integral_0_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson2d_5_cell_integral_1_otherwise: public ufc::cell_integral { public: /// Constructor poisson2d_5_cell_integral_1_otherwise(); /// Destructor virtual ~poisson2d_5_cell_integral_1_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson2d_5_form_0: public ufc::form { public: /// Constructor poisson2d_5_form_0(); /// Destructor virtual ~poisson2d_5_form_0(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson2d_5_form_1: public ufc::form { public: /// Constructor poisson2d_5_form_1(); /// Destructor virtual ~poisson2d_5_form_1(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Poisson2D_5 { class CoefficientSpace_f: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_f(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_f() { } }; class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new poisson2d_5_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new poisson2d_5_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; class Form_L_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_L_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_5_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_5_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_L_FunctionSpace_0() { } }; typedef CoefficientSpace_f Form_L_FunctionSpace_1; class Form_L: public dolfin::Form { public: // Constructor Form_L(const dolfin::FunctionSpace& V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _ufc_form = boost::shared_ptr(new poisson2d_5_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = f; _ufc_form = boost::shared_ptr(new poisson2d_5_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = *f; _ufc_form = boost::shared_ptr(new poisson2d_5_form_1()); } // Constructor Form_L(boost::shared_ptr V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; _ufc_form = boost::shared_ptr(new poisson2d_5_form_1()); } // Constructor Form_L(boost::shared_ptr V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = f; _ufc_form = boost::shared_ptr(new poisson2d_5_form_1()); } // Constructor Form_L(boost::shared_ptr V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = *f; _ufc_form = boost::shared_ptr(new poisson2d_5_form_1()); } // Destructor ~Form_L() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { if (name == "f") return 0; dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { switch (i) { case 0: return "f"; } dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return "unnamed"; } // Typedefs typedef Form_L_FunctionSpace_0 TestSpace; typedef Form_L_FunctionSpace_1 CoefficientSpace_f; // Coefficients dolfin::CoefficientAssigner f; }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_L LinearForm; typedef Form_L ResidualForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/convergence/cpp/Poisson2D_1.cpp0000644000175000017500000012402112263015061022314 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #include "Poisson2D_1.h" /// Constructor poisson2d_1_finite_element_0::poisson2d_1_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor poisson2d_1_finite_element_0::~poisson2d_1_finite_element_0() { // Do nothing } /// Return a string identifying the finite element const char* poisson2d_1_finite_element_0::signature() const { return "FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, None)"; } /// Return the cell shape ufc::shape poisson2d_1_finite_element_0::cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape std::size_t poisson2d_1_finite_element_0::topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape std::size_t poisson2d_1_finite_element_0::geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space std::size_t poisson2d_1_finite_element_0::space_dimension() const { return 3; } /// Return the rank of the value space std::size_t poisson2d_1_finite_element_0::value_rank() const { return 0; } /// Return the dimension of the value space for axis i std::size_t poisson2d_1_finite_element_0::value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell void poisson2d_1_finite_element_0::evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell void poisson2d_1_finite_element_0::evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 3; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell void poisson2d_1_finite_element_0::evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[2][1]; for (unsigned int row = 0; row < 2; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 1) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[2][2] = {{K[0], K[1]}, {K[2], K[3]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[2][2]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell void poisson2d_1_finite_element_0::evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 3; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[2]; for (unsigned int r = 0; r < 2; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 3; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f double poisson2d_1_finite_element_0::evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f void poisson2d_1_finite_element_0::evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[2] = vals[0]; } /// Interpolate vertex values from dof values void poisson2d_1_finite_element_0::interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; } /// Map coordinate xhat from reference cell to coordinate x in cell void poisson2d_1_finite_element_0::map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell void poisson2d_1_finite_element_0::map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) std::size_t poisson2d_1_finite_element_0::num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) ufc::finite_element* poisson2d_1_finite_element_0::create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance ufc::finite_element* poisson2d_1_finite_element_0::create() const { return new poisson2d_1_finite_element_0(); } /// Constructor poisson2d_1_dofmap_0::poisson2d_1_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor poisson2d_1_dofmap_0::~poisson2d_1_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap const char* poisson2d_1_dofmap_0::signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, None)"; } /// Return true iff mesh entities of topological dimension d are needed bool poisson2d_1_dofmap_0::needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape std::size_t poisson2d_1_dofmap_0::topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape std::size_t poisson2d_1_dofmap_0::geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space std::size_t poisson2d_1_dofmap_0::global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0]; } /// Return the dimension of the local finite element function space for a cell std::size_t poisson2d_1_dofmap_0::local_dimension() const { return 3; } /// Return the number of dofs on each cell facet std::size_t poisson2d_1_dofmap_0::num_facet_dofs() const { return 2; } /// Return the number of dofs associated with each cell entity of dimension d std::size_t poisson2d_1_dofmap_0::num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 0; break; } case 2: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell void poisson2d_1_dofmap_0::tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { dofs[0] = c.entity_indices[0][0]; dofs[1] = c.entity_indices[0][1]; dofs[2] = c.entity_indices[0][2]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs void poisson2d_1_dofmap_0::tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; break; } case 1: { dofs[0] = 0; dofs[1] = 2; break; } case 2: { dofs[0] = 0; dofs[1] = 1; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) void poisson2d_1_dofmap_0::tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } } break; } case 1: { break; } case 2: { break; } } } /// Tabulate the coordinates of all dofs on a cell void poisson2d_1_dofmap_0::tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[1][0] = vertex_coordinates[2]; dof_coordinates[1][1] = vertex_coordinates[3]; dof_coordinates[2][0] = vertex_coordinates[4]; dof_coordinates[2][1] = vertex_coordinates[5]; } /// Return the number of sub dofmaps (for a mixed element) std::size_t poisson2d_1_dofmap_0::num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) ufc::dofmap* poisson2d_1_dofmap_0::create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance ufc::dofmap* poisson2d_1_dofmap_0::create() const { return new poisson2d_1_dofmap_0(); } /// Constructor poisson2d_1_cell_integral_0_otherwise::poisson2d_1_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson2d_1_cell_integral_0_otherwise::~poisson2d_1_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson2d_1_cell_integral_0_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 8 // Number of operations (multiply-add pairs) for tensor contraction: 11 // Total number of operations (multiply-add pairs): 22 // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0_0 = det*(K[0]*K[0] + K[1]*K[1]); const double G0_0_1 = det*(K[0]*K[2] + K[1]*K[3]); const double G0_1_0 = det*(K[2]*K[0] + K[3]*K[1]); const double G0_1_1 = det*(K[2]*K[2] + K[3]*K[3]); // Compute element tensor A[0] = 0.5*G0_0_0 + 0.5*G0_0_1 + 0.5*G0_1_0 + 0.5*G0_1_1; A[1] = -0.5*G0_0_0 - 0.5*G0_1_0; A[2] = -0.5*G0_0_1 - 0.5*G0_1_1; A[3] = -0.5*G0_0_0 - 0.5*G0_0_1; A[4] = 0.5*G0_0_0; A[5] = 0.5*G0_0_1; A[6] = -0.5*G0_1_0 - 0.5*G0_1_1; A[7] = 0.5*G0_1_0; A[8] = 0.5*G0_1_1; } /// Constructor poisson2d_1_cell_integral_1_otherwise::poisson2d_1_cell_integral_1_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson2d_1_cell_integral_1_otherwise::~poisson2d_1_cell_integral_1_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson2d_1_cell_integral_1_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 3 // Number of operations (multiply-add pairs) for tensor contraction: 7 // Total number of operations (multiply-add pairs): 13 // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0 = det*w[0][0]*(1.0); const double G0_1 = det*w[0][1]*(1.0); const double G0_2 = det*w[0][2]*(1.0); // Compute element tensor A[0] = 0.0833333333333334*G0_0 + 0.0416666666666667*G0_1 + 0.0416666666666667*G0_2; A[1] = 0.0416666666666667*G0_0 + 0.0833333333333333*G0_1 + 0.0416666666666666*G0_2; A[2] = 0.0416666666666667*G0_0 + 0.0416666666666666*G0_1 + 0.0833333333333333*G0_2; } /// Constructor poisson2d_1_form_0::poisson2d_1_form_0() : ufc::form() { // Do nothing } /// Destructor poisson2d_1_form_0::~poisson2d_1_form_0() { // Do nothing } /// Return a string identifying the form const char* poisson2d_1_form_0::signature() const { return "4735d5ecb250f7cb5eb2c4a460a6060fec9965dfc06aab62023d570aed34b266324e4f5d9dbd5cc7029943d7b3013506b20e39617d12530d0c6e281e1b325ac3"; } /// Return the rank of the global tensor (r) std::size_t poisson2d_1_form_0::rank() const { return 2; } /// Return the number of coefficients (n) std::size_t poisson2d_1_form_0::num_coefficients() const { return 0; } /// Return the number of cell domains std::size_t poisson2d_1_form_0::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson2d_1_form_0::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson2d_1_form_0::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson2d_1_form_0::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson2d_1_form_0::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson2d_1_form_0::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson2d_1_form_0::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson2d_1_form_0::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson2d_1_form_0::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson2d_1_finite_element_0(); break; } case 1: { return new poisson2d_1_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson2d_1_form_0::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson2d_1_dofmap_0(); break; } case 1: { return new poisson2d_1_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson2d_1_form_0::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson2d_1_form_0::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson2d_1_form_0::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson2d_1_form_0::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson2d_1_form_0::create_default_cell_integral() const { return new poisson2d_1_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson2d_1_form_0::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson2d_1_form_0::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson2d_1_form_0::create_default_point_integral() const { return 0; } /// Constructor poisson2d_1_form_1::poisson2d_1_form_1() : ufc::form() { // Do nothing } /// Destructor poisson2d_1_form_1::~poisson2d_1_form_1() { // Do nothing } /// Return a string identifying the form const char* poisson2d_1_form_1::signature() const { return "26888a9bfb4256ec64261a0134cee377e6e567507ebd65de2464f8f8f91f24556d04c268e36a0f5948dcd8773193b4caba317f4bb09ab244530df4bc915283e4"; } /// Return the rank of the global tensor (r) std::size_t poisson2d_1_form_1::rank() const { return 1; } /// Return the number of coefficients (n) std::size_t poisson2d_1_form_1::num_coefficients() const { return 1; } /// Return the number of cell domains std::size_t poisson2d_1_form_1::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson2d_1_form_1::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson2d_1_form_1::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson2d_1_form_1::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson2d_1_form_1::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson2d_1_form_1::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson2d_1_form_1::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson2d_1_form_1::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson2d_1_form_1::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson2d_1_finite_element_0(); break; } case 1: { return new poisson2d_1_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson2d_1_form_1::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson2d_1_dofmap_0(); break; } case 1: { return new poisson2d_1_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson2d_1_form_1::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson2d_1_form_1::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson2d_1_form_1::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson2d_1_form_1::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson2d_1_form_1::create_default_cell_integral() const { return new poisson2d_1_cell_integral_1_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson2d_1_form_1::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson2d_1_form_1::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson2d_1_form_1::create_default_point_integral() const { return 0; } dolfin-1.3.0/bench/fem/convergence/cpp/Poisson2D_3.cpp0000644000175000017500000041743312263015055022335 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #include "Poisson2D_3.h" /// Constructor poisson2d_3_finite_element_0::poisson2d_3_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor poisson2d_3_finite_element_0::~poisson2d_3_finite_element_0() { // Do nothing } /// Return a string identifying the finite element const char* poisson2d_3_finite_element_0::signature() const { return "FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 3, None)"; } /// Return the cell shape ufc::shape poisson2d_3_finite_element_0::cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape std::size_t poisson2d_3_finite_element_0::topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape std::size_t poisson2d_3_finite_element_0::geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space std::size_t poisson2d_3_finite_element_0::space_dimension() const { return 10; } /// Return the rank of the value space std::size_t poisson2d_3_finite_element_0::value_rank() const { return 0; } /// Return the dimension of the value space for axis i std::size_t poisson2d_3_finite_element_0::value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell void poisson2d_3_finite_element_0::evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.0471404520791031, -0.0288675134594813, -0.0166666666666666, 0.0782460796435952, 0.0606091526731326, 0.0349927106111883, -0.0601337794302955, -0.0508223195384204, -0.0393667994375868, -0.0227284322524248}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.0471404520791032, 0.0288675134594813, -0.0166666666666666, 0.0782460796435952, -0.0606091526731327, 0.0349927106111883, 0.0601337794302955, -0.0508223195384204, 0.0393667994375868, -0.0227284322524248}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.0471404520791031, 0.0, 0.0333333333333333, 0.0, 0.0, 0.104978131833565, 0.0, 0.0, 0.0, 0.0909137290096989}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.259807621135332, -0.15, 0.117369119465393, 0.0606091526731326, -0.0787335988751736, 0.0, 0.101644639076841, -0.131222664791956, 0.090913729009699}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.0, 0.3, 0.0, 0.151522881682832, 0.0262445329583912, 0.0, 0.0, 0.131222664791956, -0.136370593514548}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, -0.259807621135332, -0.15, 0.117369119465393, -0.0606091526731326, -0.0787335988751736, 0.0, 0.101644639076841, 0.131222664791956, 0.090913729009699}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.0, 0.3, 0.0, -0.151522881682832, 0.0262445329583912, 0.0, 0.0, -0.131222664791956, -0.136370593514548}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, -0.259807621135332, -0.15, -0.0782460796435952, 0.090913729009699, 0.0962299541807677, 0.180401338290886, 0.0508223195384204, -0.0131222664791956, -0.0227284322524247}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.259807621135332, -0.15, -0.0782460796435952, -0.090913729009699, 0.0962299541807678, -0.180401338290886, 0.0508223195384204, 0.0131222664791956, -0.0227284322524248}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.636396103067893, 0.0, 0.0, -0.234738238930785, 0.0, -0.262445329583912, 0.0, -0.203289278153682, 0.0, 0.090913729009699}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell void poisson2d_3_finite_element_0::evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 10; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell void poisson2d_3_finite_element_0::evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 3) { return ; } // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[8][3]; for (unsigned int row = 0; row < 8; row++) { for (unsigned int col = 0; col < 3; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 1) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[2][2] = {{K[0], K[1]}, {K[2], K[3]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[8][8]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.0471404520791031, -0.0288675134594813, -0.0166666666666666, 0.0782460796435952, 0.0606091526731326, 0.0349927106111883, -0.0601337794302955, -0.0508223195384204, -0.0393667994375868, -0.0227284322524248}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.0471404520791032, 0.0288675134594813, -0.0166666666666666, 0.0782460796435952, -0.0606091526731327, 0.0349927106111883, 0.0601337794302955, -0.0508223195384204, 0.0393667994375868, -0.0227284322524248}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.0471404520791031, 0.0, 0.0333333333333333, 0.0, 0.0, 0.104978131833565, 0.0, 0.0, 0.0, 0.0909137290096989}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.259807621135332, -0.15, 0.117369119465393, 0.0606091526731326, -0.0787335988751736, 0.0, 0.101644639076841, -0.131222664791956, 0.090913729009699}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.0, 0.3, 0.0, 0.151522881682832, 0.0262445329583912, 0.0, 0.0, 0.131222664791956, -0.136370593514548}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, -0.259807621135332, -0.15, 0.117369119465393, -0.0606091526731326, -0.0787335988751736, 0.0, 0.101644639076841, 0.131222664791956, 0.090913729009699}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.0, 0.3, 0.0, -0.151522881682832, 0.0262445329583912, 0.0, 0.0, -0.131222664791956, -0.136370593514548}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, -0.259807621135332, -0.15, -0.0782460796435952, 0.090913729009699, 0.0962299541807677, 0.180401338290886, 0.0508223195384204, -0.0131222664791956, -0.0227284322524247}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.259807621135332, -0.15, -0.0782460796435952, -0.090913729009699, 0.0962299541807678, -0.180401338290886, 0.0508223195384204, 0.0131222664791956, -0.0227284322524248}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.636396103067893, 0.0, 0.0, -0.234738238930785, 0.0, -0.262445329583912, 0.0, -0.203289278153682, 0.0, 0.090913729009699}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell void poisson2d_3_finite_element_0::evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 10; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 3) { return ; } // Helper variable to hold values of a single dof. double dof_values[8]; for (unsigned int r = 0; r < 8; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 10; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f double poisson2d_3_finite_element_0::evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = 0.666666666666667*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.666666666666667*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = 0.333333333333333*vertex_coordinates[2] + 0.666666666666667*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[3] + 0.666666666666667*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 5: { y[0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 6: { y[0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 7: { y[0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2]; y[1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 8: { y[0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[2]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 9: { y[0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f void poisson2d_3_finite_element_0::evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = 0.666666666666667*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.666666666666667*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[2] + 0.666666666666667*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[3] + 0.666666666666667*vertex_coordinates[5]; f.evaluate(vals, y, c); values[4] = vals[0]; y[0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); values[5] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[5]; f.evaluate(vals, y, c); values[6] = vals[0]; y[0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2]; y[1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3]; f.evaluate(vals, y, c); values[7] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[2]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[3]; f.evaluate(vals, y, c); values[8] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); values[9] = vals[0]; } /// Interpolate vertex values from dof values void poisson2d_3_finite_element_0::interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; } /// Map coordinate xhat from reference cell to coordinate x in cell void poisson2d_3_finite_element_0::map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell void poisson2d_3_finite_element_0::map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) std::size_t poisson2d_3_finite_element_0::num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) ufc::finite_element* poisson2d_3_finite_element_0::create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance ufc::finite_element* poisson2d_3_finite_element_0::create() const { return new poisson2d_3_finite_element_0(); } /// Constructor poisson2d_3_dofmap_0::poisson2d_3_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor poisson2d_3_dofmap_0::~poisson2d_3_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap const char* poisson2d_3_dofmap_0::signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 3, None)"; } /// Return true iff mesh entities of topological dimension d are needed bool poisson2d_3_dofmap_0::needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return true; break; } case 2: { return true; break; } } return false; } /// Return the topological dimension of the associated cell shape std::size_t poisson2d_3_dofmap_0::topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape std::size_t poisson2d_3_dofmap_0::geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space std::size_t poisson2d_3_dofmap_0::global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0] + 2*num_global_entities[1] + num_global_entities[2]; } /// Return the dimension of the local finite element function space for a cell std::size_t poisson2d_3_dofmap_0::local_dimension() const { return 10; } /// Return the number of dofs on each cell facet std::size_t poisson2d_3_dofmap_0::num_facet_dofs() const { return 4; } /// Return the number of dofs associated with each cell entity of dimension d std::size_t poisson2d_3_dofmap_0::num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 2; break; } case 2: { return 1; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell void poisson2d_3_dofmap_0::tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; dofs[3] = offset + 2*c.entity_indices[1][0]; dofs[4] = offset + 2*c.entity_indices[1][0] + 1; dofs[5] = offset + 2*c.entity_indices[1][1]; dofs[6] = offset + 2*c.entity_indices[1][1] + 1; dofs[7] = offset + 2*c.entity_indices[1][2]; dofs[8] = offset + 2*c.entity_indices[1][2] + 1; offset += 2*num_global_entities[1]; dofs[9] = offset + c.entity_indices[2][0]; offset += num_global_entities[2]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs void poisson2d_3_dofmap_0::tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; dofs[3] = 4; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 5; dofs[3] = 6; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 7; dofs[3] = 8; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) void poisson2d_3_dofmap_0::tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } } break; } case 1: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 3; dofs[1] = 4; break; } case 1: { dofs[0] = 5; dofs[1] = 6; break; } case 2: { dofs[0] = 7; dofs[1] = 8; break; } } break; } case 2: { if (i > 0) { throw std::runtime_error("i is larger than number of entities (0)"); } dofs[0] = 9; break; } } } /// Tabulate the coordinates of all dofs on a cell void poisson2d_3_dofmap_0::tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[1][0] = vertex_coordinates[2]; dof_coordinates[1][1] = vertex_coordinates[3]; dof_coordinates[2][0] = vertex_coordinates[4]; dof_coordinates[2][1] = vertex_coordinates[5]; dof_coordinates[3][0] = 0.666666666666667*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; dof_coordinates[3][1] = 0.666666666666667*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; dof_coordinates[4][0] = 0.333333333333333*vertex_coordinates[2] + 0.666666666666667*vertex_coordinates[4]; dof_coordinates[4][1] = 0.333333333333333*vertex_coordinates[3] + 0.666666666666667*vertex_coordinates[5]; dof_coordinates[5][0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[4]; dof_coordinates[5][1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[5]; dof_coordinates[6][0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[4]; dof_coordinates[6][1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[5]; dof_coordinates[7][0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2]; dof_coordinates[7][1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3]; dof_coordinates[8][0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[2]; dof_coordinates[8][1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[3]; dof_coordinates[9][0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; dof_coordinates[9][1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; } /// Return the number of sub dofmaps (for a mixed element) std::size_t poisson2d_3_dofmap_0::num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) ufc::dofmap* poisson2d_3_dofmap_0::create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance ufc::dofmap* poisson2d_3_dofmap_0::create() const { return new poisson2d_3_dofmap_0(); } /// Constructor poisson2d_3_cell_integral_0_otherwise::poisson2d_3_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson2d_3_cell_integral_0_otherwise::~poisson2d_3_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson2d_3_cell_integral_0_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 8 // Number of operations (multiply-add pairs) for tensor contraction: 205 // Total number of operations (multiply-add pairs): 216 // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0_0 = det*(K[0]*K[0] + K[1]*K[1]); const double G0_0_1 = det*(K[0]*K[2] + K[1]*K[3]); const double G0_1_0 = det*(K[2]*K[0] + K[3]*K[1]); const double G0_1_1 = det*(K[2]*K[2] + K[3]*K[3]); // Compute element tensor A[0] = 0.424999999999999*G0_0_0 + 0.424999999999999*G0_0_1 + 0.424999999999999*G0_1_0 + 0.424999999999999*G0_1_1; A[1] = -0.0875000000000006*G0_0_0 - 0.0875000000000005*G0_1_0; A[2] = -0.0875000000000005*G0_0_1 - 0.0875000000000006*G0_1_1; A[3] = -0.0375000000000006*G0_0_0 - 0.0375000000000018*G0_0_1 - 0.0375000000000006*G0_1_0 - 0.0375000000000017*G0_1_1; A[4] = -0.0375000000000017*G0_0_0 - 0.0375000000000007*G0_0_1 - 0.0375000000000017*G0_1_0 - 0.0375000000000007*G0_1_1; A[5] = 0.0374999999999997*G0_0_0 - 0.674999999999998*G0_0_1 + 0.0374999999999996*G0_1_0 - 0.674999999999998*G0_1_1; A[6] = 0.0375000000000017*G0_0_0 + 0.3375*G0_0_1 + 0.0375000000000017*G0_1_0 + 0.3375*G0_1_1; A[7] = -0.674999999999998*G0_0_0 + 0.0374999999999994*G0_0_1 - 0.674999999999998*G0_1_0 + 0.0374999999999994*G0_1_1; A[8] = 0.3375*G0_0_0 + 0.037500000000002*G0_0_1 + 0.3375*G0_1_0 + 0.0375000000000018*G0_1_1; A[9] = 0.0; A[10] = -0.0875000000000006*G0_0_0 - 0.0875000000000005*G0_0_1; A[11] = 0.425000000000002*G0_0_0; A[12] = 0.0874999999999996*G0_0_1; A[13] = 0.0375000000000018*G0_0_0 + 0.712500000000003*G0_0_1; A[14] = 0.0374999999999996*G0_0_0 - 0.3*G0_0_1; A[15] = -0.0375000000000001*G0_0_0; A[16] = -0.0374999999999996*G0_0_0; A[17] = 0.337500000000003*G0_0_0 + 0.300000000000003*G0_0_1; A[18] = -0.675000000000004*G0_0_0 - 0.712500000000003*G0_0_1; A[19] = 0.0; A[20] = -0.0875000000000005*G0_1_0 - 0.0875000000000006*G0_1_1; A[21] = 0.0874999999999996*G0_1_0; A[22] = 0.425000000000002*G0_1_1; A[23] = -0.3*G0_1_0 + 0.0374999999999994*G0_1_1; A[24] = 0.712500000000004*G0_1_0 + 0.0375000000000025*G0_1_1; A[25] = 0.300000000000003*G0_1_0 + 0.337500000000003*G0_1_1; A[26] = -0.712500000000004*G0_1_0 - 0.675000000000005*G0_1_1; A[27] = -0.0374999999999996*G0_1_1; A[28] = -0.0374999999999994*G0_1_1; A[29] = 0.0; A[30] = -0.0375000000000006*G0_0_0 - 0.0375000000000006*G0_0_1 - 0.0375000000000018*G0_1_0 - 0.0375000000000017*G0_1_1; A[31] = 0.0375000000000018*G0_0_0 + 0.712500000000003*G0_1_0; A[32] = -0.3*G0_0_1 + 0.0374999999999994*G0_1_1; A[33] = 1.6875*G0_0_0 + 0.843750000000001*G0_0_1 + 0.843750000000001*G0_1_0 + 1.6875*G0_1_1; A[34] = -0.3375*G0_0_0 + 0.843749999999998*G0_0_1 - 0.168750000000001*G0_1_0 - 0.3375*G0_1_1; A[35] = 0.337500000000001*G0_0_0 + 0.16875*G0_0_1 + 0.16875*G0_1_0; A[36] = 0.3375*G0_0_0 + 0.168750000000001*G0_0_1 + 0.168750000000001*G0_1_0; A[37] = 0.168750000000004*G0_0_1 + 0.168750000000007*G0_1_0 + 0.337500000000006*G0_1_1; A[38] = -0.843750000000002*G0_0_1 - 0.843750000000008*G0_1_0 - 1.68750000000001*G0_1_1; A[39] = -2.025*G0_0_0 - 1.0125*G0_0_1 - 1.0125*G0_1_0; A[40] = -0.0375000000000017*G0_0_0 - 0.0375000000000017*G0_0_1 - 0.0375000000000007*G0_1_0 - 0.0375000000000007*G0_1_1; A[41] = 0.0374999999999996*G0_0_0 - 0.3*G0_1_0; A[42] = 0.712500000000004*G0_0_1 + 0.0375000000000024*G0_1_1; A[43] = -0.3375*G0_0_0 - 0.168750000000001*G0_0_1 + 0.843749999999998*G0_1_0 - 0.3375*G0_1_1; A[44] = 1.68750000000001*G0_0_0 + 0.843750000000003*G0_0_1 + 0.843750000000003*G0_1_0 + 1.6875*G0_1_1; A[45] = 0.337500000000007*G0_0_0 + 0.168750000000007*G0_0_1 + 0.168750000000005*G0_1_0; A[46] = -1.68750000000001*G0_0_0 - 0.84375000000001*G0_0_1 - 0.843750000000004*G0_1_0; A[47] = 0.168750000000001*G0_0_1 + 0.168750000000001*G0_1_0 + 0.337500000000002*G0_1_1; A[48] = 0.168750000000001*G0_0_1 + 0.168749999999999*G0_1_0 + 0.337500000000001*G0_1_1; A[49] = -1.0125*G0_0_1 - 1.0125*G0_1_0 - 2.025*G0_1_1; A[50] = 0.0374999999999997*G0_0_0 + 0.0374999999999996*G0_0_1 - 0.674999999999998*G0_1_0 - 0.674999999999998*G0_1_1; A[51] = -0.0375000000000001*G0_0_0; A[52] = 0.300000000000003*G0_0_1 + 0.337500000000003*G0_1_1; A[53] = 0.337500000000001*G0_0_0 + 0.16875*G0_0_1 + 0.16875*G0_1_0; A[54] = 0.337500000000007*G0_0_0 + 0.168750000000004*G0_0_1 + 0.168750000000007*G0_1_0; A[55] = 1.6875*G0_0_0 + 0.843750000000003*G0_0_1 + 0.843750000000003*G0_1_0 + 1.6875*G0_1_1; A[56] = -0.337500000000007*G0_0_0 - 1.18125000000001*G0_0_1 - 0.168750000000007*G0_1_0 - 1.35*G0_1_1; A[57] = 0.84375*G0_0_1 + 0.843749999999995*G0_1_0; A[58] = -0.16875*G0_0_1 - 0.168749999999997*G0_1_0; A[59] = -2.025*G0_0_0 - 1.0125*G0_0_1 - 1.0125*G0_1_0; A[60] = 0.0375000000000017*G0_0_0 + 0.0375000000000017*G0_0_1 + 0.3375*G0_1_0 + 0.3375*G0_1_1; A[61] = -0.0374999999999996*G0_0_0; A[62] = -0.712500000000004*G0_0_1 - 0.675000000000005*G0_1_1; A[63] = 0.3375*G0_0_0 + 0.168750000000001*G0_0_1 + 0.168750000000001*G0_1_0; A[64] = -1.68750000000001*G0_0_0 - 0.843750000000004*G0_0_1 - 0.84375000000001*G0_1_0; A[65] = -0.337500000000007*G0_0_0 - 0.168750000000007*G0_0_1 - 1.18125000000001*G0_1_0 - 1.35*G0_1_1; A[66] = 1.68750000000001*G0_0_0 + 0.84375000000001*G0_0_1 + 0.843750000000011*G0_1_0 + 1.68750000000001*G0_1_1; A[67] = -0.168750000000001*G0_0_1 - 0.168749999999997*G0_1_0; A[68] = -0.168750000000001*G0_0_1 - 0.168750000000004*G0_1_0; A[69] = 1.01250000000001*G0_0_1 + 1.01250000000001*G0_1_0; A[70] = -0.674999999999998*G0_0_0 - 0.674999999999998*G0_0_1 + 0.0374999999999994*G0_1_0 + 0.0374999999999994*G0_1_1; A[71] = 0.337500000000003*G0_0_0 + 0.300000000000003*G0_1_0; A[72] = -0.0374999999999996*G0_1_1; A[73] = 0.168750000000007*G0_0_1 + 0.168750000000004*G0_1_0 + 0.337500000000006*G0_1_1; A[74] = 0.168750000000001*G0_0_1 + 0.168750000000001*G0_1_0 + 0.337500000000002*G0_1_1; A[75] = 0.843749999999995*G0_0_1 + 0.84375*G0_1_0; A[76] = -0.168749999999997*G0_0_1 - 0.168750000000001*G0_1_0; A[77] = 1.6875*G0_0_0 + 0.843750000000002*G0_0_1 + 0.843750000000002*G0_1_0 + 1.6875*G0_1_1; A[78] = -1.35*G0_0_0 - 0.168750000000007*G0_0_1 - 1.18125000000001*G0_1_0 - 0.337500000000006*G0_1_1; A[79] = -1.0125*G0_0_1 - 1.0125*G0_1_0 - 2.025*G0_1_1; A[80] = 0.3375*G0_0_0 + 0.3375*G0_0_1 + 0.037500000000002*G0_1_0 + 0.0375000000000018*G0_1_1; A[81] = -0.675000000000004*G0_0_0 - 0.712500000000003*G0_1_0; A[82] = -0.0374999999999994*G0_1_1; A[83] = -0.843750000000008*G0_0_1 - 0.843750000000002*G0_1_0 - 1.68750000000001*G0_1_1; A[84] = 0.168749999999999*G0_0_1 + 0.168750000000001*G0_1_0 + 0.337500000000001*G0_1_1; A[85] = -0.168749999999997*G0_0_1 - 0.16875*G0_1_0; A[86] = -0.168750000000004*G0_0_1 - 0.168750000000001*G0_1_0; A[87] = -1.35*G0_0_0 - 1.18125*G0_0_1 - 0.168750000000007*G0_1_0 - 0.337500000000006*G0_1_1; A[88] = 1.68750000000001*G0_0_0 + 0.843750000000009*G0_0_1 + 0.843750000000009*G0_1_0 + 1.68750000000001*G0_1_1; A[89] = 1.01250000000001*G0_0_1 + 1.0125*G0_1_0; A[90] = 0.0; A[91] = 0.0; A[92] = 0.0; A[93] = -2.025*G0_0_0 - 1.0125*G0_0_1 - 1.0125*G0_1_0; A[94] = -1.0125*G0_0_1 - 1.0125*G0_1_0 - 2.025*G0_1_1; A[95] = -2.025*G0_0_0 - 1.0125*G0_0_1 - 1.0125*G0_1_0; A[96] = 1.01250000000001*G0_0_1 + 1.01250000000001*G0_1_0; A[97] = -1.0125*G0_0_1 - 1.0125*G0_1_0 - 2.025*G0_1_1; A[98] = 1.0125*G0_0_1 + 1.01250000000001*G0_1_0; A[99] = 4.05*G0_0_0 + 2.025*G0_0_1 + 2.025*G0_1_0 + 4.05000000000001*G0_1_1; } /// Constructor poisson2d_3_cell_integral_1_otherwise::poisson2d_3_cell_integral_1_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson2d_3_cell_integral_1_otherwise::~poisson2d_3_cell_integral_1_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson2d_3_cell_integral_1_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 10 // Number of operations (multiply-add pairs) for tensor contraction: 83 // Total number of operations (multiply-add pairs): 96 // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0 = det*w[0][0]*(1.0); const double G0_1 = det*w[0][1]*(1.0); const double G0_2 = det*w[0][2]*(1.0); const double G0_3 = det*w[0][3]*(1.0); const double G0_4 = det*w[0][4]*(1.0); const double G0_5 = det*w[0][5]*(1.0); const double G0_6 = det*w[0][6]*(1.0); const double G0_7 = det*w[0][7]*(1.0); const double G0_8 = det*w[0][8]*(1.0); const double G0_9 = det*w[0][9]*(1.0); // Compute element tensor A[0] = 0.00565476190476194*G0_0 + 0.000818452380952386*G0_1 + 0.000818452380952386*G0_2 + 0.00200892857142856*G0_3 + 0.00200892857142856*G0_4 + 0.00133928571428575*G0_5 + 0.00133928571428575*G0_7 + 0.00267857142857137*G0_9; A[1] = 0.000818452380952386*G0_0 + 0.00565476190476195*G0_1 + 0.000818452380952387*G0_2 + 0.00133928571428575*G0_3 + 0.00200892857142857*G0_5 + 0.00200892857142857*G0_6 + 0.00133928571428575*G0_8 + 0.00267857142857143*G0_9; A[2] = 0.000818452380952386*G0_0 + 0.000818452380952387*G0_1 + 0.00565476190476195*G0_2 + 0.00133928571428575*G0_4 + 0.00133928571428575*G0_6 + 0.00200892857142857*G0_7 + 0.00200892857142857*G0_8 + 0.00267857142857141*G0_9; A[3] = 0.00200892857142856*G0_0 + 0.00133928571428575*G0_1 + 0.0401785714285717*G0_3 - 0.0140624999999999*G0_4 - 0.00401785714285713*G0_5 - 0.0100446428571428*G0_6 - 0.0100446428571428*G0_7 + 0.0200892857142856*G0_8 + 0.0120535714285714*G0_9; A[4] = 0.00200892857142856*G0_0 + 0.00133928571428575*G0_2 - 0.0140624999999999*G0_3 + 0.0401785714285717*G0_4 - 0.0100446428571428*G0_5 + 0.0200892857142856*G0_6 - 0.00401785714285714*G0_7 - 0.0100446428571428*G0_8 + 0.0120535714285713*G0_9; A[5] = 0.00133928571428575*G0_0 + 0.00200892857142857*G0_1 - 0.00401785714285713*G0_3 - 0.0100446428571428*G0_4 + 0.0401785714285717*G0_5 - 0.0140624999999999*G0_6 + 0.0200892857142856*G0_7 - 0.0100446428571428*G0_8 + 0.0120535714285715*G0_9; A[6] = 0.00200892857142857*G0_1 + 0.00133928571428575*G0_2 - 0.0100446428571428*G0_3 + 0.0200892857142856*G0_4 - 0.0140624999999999*G0_5 + 0.0401785714285718*G0_6 - 0.0100446428571428*G0_7 - 0.00401785714285714*G0_8 + 0.0120535714285714*G0_9; A[7] = 0.00133928571428575*G0_0 + 0.00200892857142857*G0_2 - 0.0100446428571428*G0_3 - 0.00401785714285714*G0_4 + 0.0200892857142856*G0_5 - 0.0100446428571428*G0_6 + 0.0401785714285717*G0_7 - 0.0140624999999999*G0_8 + 0.0120535714285715*G0_9; A[8] = 0.00133928571428575*G0_1 + 0.00200892857142857*G0_2 + 0.0200892857142856*G0_3 - 0.0100446428571428*G0_4 - 0.0100446428571428*G0_5 - 0.00401785714285714*G0_6 - 0.0140624999999999*G0_7 + 0.0401785714285717*G0_8 + 0.0120535714285714*G0_9; A[9] = 0.00267857142857137*G0_0 + 0.00267857142857143*G0_1 + 0.00267857142857141*G0_2 + 0.0120535714285714*G0_3 + 0.0120535714285713*G0_4 + 0.0120535714285715*G0_5 + 0.0120535714285714*G0_6 + 0.0120535714285715*G0_7 + 0.0120535714285714*G0_8 + 0.144642857142856*G0_9; } /// Constructor poisson2d_3_form_0::poisson2d_3_form_0() : ufc::form() { // Do nothing } /// Destructor poisson2d_3_form_0::~poisson2d_3_form_0() { // Do nothing } /// Return a string identifying the form const char* poisson2d_3_form_0::signature() const { return "5ad7bfc888357fbbccbf1994738b74b7da2c739654520118ec4379d436d2e4eee4d70635a82080a5ddb386ed2308afd7497905102ca0f207d2f6319916ea642d"; } /// Return the rank of the global tensor (r) std::size_t poisson2d_3_form_0::rank() const { return 2; } /// Return the number of coefficients (n) std::size_t poisson2d_3_form_0::num_coefficients() const { return 0; } /// Return the number of cell domains std::size_t poisson2d_3_form_0::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson2d_3_form_0::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson2d_3_form_0::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson2d_3_form_0::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson2d_3_form_0::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson2d_3_form_0::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson2d_3_form_0::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson2d_3_form_0::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson2d_3_form_0::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson2d_3_finite_element_0(); break; } case 1: { return new poisson2d_3_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson2d_3_form_0::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson2d_3_dofmap_0(); break; } case 1: { return new poisson2d_3_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson2d_3_form_0::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson2d_3_form_0::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson2d_3_form_0::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson2d_3_form_0::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson2d_3_form_0::create_default_cell_integral() const { return new poisson2d_3_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson2d_3_form_0::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson2d_3_form_0::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson2d_3_form_0::create_default_point_integral() const { return 0; } /// Constructor poisson2d_3_form_1::poisson2d_3_form_1() : ufc::form() { // Do nothing } /// Destructor poisson2d_3_form_1::~poisson2d_3_form_1() { // Do nothing } /// Return a string identifying the form const char* poisson2d_3_form_1::signature() const { return "8f429d69746009b3233ec2b03ca140d1c825b76e53369d4d433ac6c64bd393dbca46dea2eac806e5f80508c1cab3829185c5a3cfe3171875392d07ac083aa127"; } /// Return the rank of the global tensor (r) std::size_t poisson2d_3_form_1::rank() const { return 1; } /// Return the number of coefficients (n) std::size_t poisson2d_3_form_1::num_coefficients() const { return 1; } /// Return the number of cell domains std::size_t poisson2d_3_form_1::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson2d_3_form_1::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson2d_3_form_1::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson2d_3_form_1::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson2d_3_form_1::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson2d_3_form_1::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson2d_3_form_1::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson2d_3_form_1::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson2d_3_form_1::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson2d_3_finite_element_0(); break; } case 1: { return new poisson2d_3_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson2d_3_form_1::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson2d_3_dofmap_0(); break; } case 1: { return new poisson2d_3_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson2d_3_form_1::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson2d_3_form_1::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson2d_3_form_1::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson2d_3_form_1::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson2d_3_form_1::create_default_cell_integral() const { return new poisson2d_3_cell_integral_1_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson2d_3_form_1::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson2d_3_form_1::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson2d_3_form_1::create_default_point_integral() const { return 0; } dolfin-1.3.0/bench/fem/convergence/cpp/Poisson2D_1.ufl0000644000175000017500000000170112263014601022316 0ustar johannrjohannr# Copyright (C) 2005-2006 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2005 # Last changed: 2006-03-28 # # Poisson's equation in 2D for q = 1 element = FiniteElement("Lagrange", triangle, 1) v = TestFunction(element) U = TrialFunction(element) f = Coefficient(element) a = v.dx(i)*U.dx(i)*dx L = v*f*dx dolfin-1.3.0/bench/fem/convergence/cpp/Poisson2D_2.h0000644000175000017500000010754012263015055021774 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #ifndef __POISSON2D_2_H #define __POISSON2D_2_H #include #include #include #include /// This class defines the interface for a finite element. class poisson2d_2_finite_element_0: public ufc::finite_element { public: /// Constructor poisson2d_2_finite_element_0(); /// Destructor virtual ~poisson2d_2_finite_element_0(); /// Return a string identifying the finite element virtual const char* signature() const; /// Return the cell shape virtual ufc::shape cell_shape() const; /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const; /// Return the rank of the value space virtual std::size_t value_rank() const; /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const; /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const; /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const; /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const; /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const; /// Create a new class instance virtual ufc::finite_element* create() const; }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class poisson2d_2_dofmap_0: public ufc::dofmap { public: /// Constructor poisson2d_2_dofmap_0(); /// Destructor virtual ~poisson2d_2_dofmap_0(); /// Return a string identifying the dofmap virtual const char* signature() const; /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const; /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const; /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const; /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const; /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const; /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const; /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const; /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const; /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** coordinates, const double* vertex_coordinates) const; /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const; /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const; /// Create a new class instance virtual ufc::dofmap* create() const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson2d_2_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor poisson2d_2_cell_integral_0_otherwise(); /// Destructor virtual ~poisson2d_2_cell_integral_0_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson2d_2_cell_integral_1_otherwise: public ufc::cell_integral { public: /// Constructor poisson2d_2_cell_integral_1_otherwise(); /// Destructor virtual ~poisson2d_2_cell_integral_1_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson2d_2_form_0: public ufc::form { public: /// Constructor poisson2d_2_form_0(); /// Destructor virtual ~poisson2d_2_form_0(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson2d_2_form_1: public ufc::form { public: /// Constructor poisson2d_2_form_1(); /// Destructor virtual ~poisson2d_2_form_1(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Poisson2D_2 { class CoefficientSpace_f: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_f(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_f() { } }; class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new poisson2d_2_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new poisson2d_2_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; class Form_L_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_L_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_2_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_L_FunctionSpace_0() { } }; typedef CoefficientSpace_f Form_L_FunctionSpace_1; class Form_L: public dolfin::Form { public: // Constructor Form_L(const dolfin::FunctionSpace& V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _ufc_form = boost::shared_ptr(new poisson2d_2_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = f; _ufc_form = boost::shared_ptr(new poisson2d_2_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = *f; _ufc_form = boost::shared_ptr(new poisson2d_2_form_1()); } // Constructor Form_L(boost::shared_ptr V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; _ufc_form = boost::shared_ptr(new poisson2d_2_form_1()); } // Constructor Form_L(boost::shared_ptr V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = f; _ufc_form = boost::shared_ptr(new poisson2d_2_form_1()); } // Constructor Form_L(boost::shared_ptr V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = *f; _ufc_form = boost::shared_ptr(new poisson2d_2_form_1()); } // Destructor ~Form_L() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { if (name == "f") return 0; dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { switch (i) { case 0: return "f"; } dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return "unnamed"; } // Typedefs typedef Form_L_FunctionSpace_0 TestSpace; typedef Form_L_FunctionSpace_1 CoefficientSpace_f; // Coefficients dolfin::CoefficientAssigner f; }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_L LinearForm; typedef Form_L ResidualForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/convergence/cpp/Poisson2D_4.ufl0000644000175000017500000000170112263014601022321 0ustar johannrjohannr# Copyright (C) 2005-2006 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2005 # Last changed: 2006-03-28 # # Poisson's equation in 2D for q = 4 element = FiniteElement("Lagrange", triangle, 4) v = TestFunction(element) U = TrialFunction(element) f = Coefficient(element) a = v.dx(i)*U.dx(i)*dx L = v*f*dx dolfin-1.3.0/bench/fem/convergence/cpp/compile.log0000644000175000017500000053553112263015061021717 0ustar johannrjohannrThis is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Poisson3D_5 Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, U]' Coefficient names: '[]' Unique elements: 'CG5(?)' Unique sub elements: 'CG5(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 8 quadrature_degree: auto --> 8  WARNING: The number of integration points for each cell will be: 125  Consider using the option 'quadrature_degree' to reduce the number of points quadrature_rule: auto --> default Name: 'L' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 1 Number of coefficients: 1 Arguments: '[v_{-2}]' Coefficients: '[w_0]' Argument names: '[v]' Coefficient names: '[f]' Unique elements: 'CG5(?)' Unique sub elements: 'CG5(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Estimated cost of tensor representation: 1 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 10 quadrature_degree: auto --> 10  WARNING: The number of integration points for each cell will be: 216  Consider using the option 'quadrature_degree' to reduce the number of points quadrature_rule: auto --> default Compiler stage 1 finished in 0.298792 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 28224 entries computed in 0.0278 seconds Shape of reference tensor: (56, 56, 3, 3) Primary multi index: rank = 2 dims = [56, 56] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [0, 15], [0, 16], [0, 17], [0, 18], [0, 19], [0, 20], [0, 21], [0, 22], [0, 23], [0, 24], [0, 25], [0, 26], [0, 27], [0, 28], [0, 29], [0, 30], [0, 31], [0, 32], [0, 33], [0, 34], [0, 35], [0, 36], [0, 37], [0, 38], [0, 39], [0, 40], [0, 41], [0, 42], [0, 43], [0, 44], [0, 45], [0, 46], [0, 47], [0, 48], [0, 49], [0, 50], [0, 51], [0, 52], [0, 53], [0, 54], [0, 55], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14], [1, 15], [1, 16], [1, 17], [1, 18], [1, 19], [1, 20], [1, 21], [1, 22], [1, 23], [1, 24], [1, 25], [1, 26], [1, 27], [1, 28], [1, 29], [1, 30], [1, 31], [1, 32], [1, 33], [1, 34], [1, 35], [1, 36], [1, 37], [1, 38], [1, 39], [1, 40], [1, 41], [1, 42], [1, 43], [1, 44], [1, 45], [1, 46], [1, 47], [1, 48], [1, 49], [1, 50], [1, 51], [1, 52], [1, 53], [1, 54], [1, 55], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [2, 10], [2, 11], [2, 12], [2, 13], [2, 14], [2, 15], [2, 16], [2, 17], [2, 18], [2, 19], [2, 20], [2, 21], [2, 22], [2, 23], [2, 24], [2, 25], [2, 26], [2, 27], [2, 28], [2, 29], [2, 30], [2, 31], [2, 32], [2, 33], [2, 34], [2, 35], [2, 36], [2, 37], [2, 38], [2, 39], [2, 40], [2, 41], [2, 42], [2, 43], [2, 44], [2, 45], [2, 46], [2, 47], [2, 48], [2, 49], [2, 50], [2, 51], [2, 52], [2, 53], [2, 54], [2, 55], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [3, 15], [3, 16], [3, 17], [3, 18], [3, 19], [3, 20], [3, 21], [3, 22], [3, 23], [3, 24], [3, 25], [3, 26], [3, 27], [3, 28], [3, 29], [3, 30], [3, 31], [3, 32], [3, 33], [3, 34], [3, 35], [3, 36], [3, 37], [3, 38], [3, 39], [3, 40], [3, 41], [3, 42], [3, 43], [3, 44], [3, 45], [3, 46], [3, 47], [3, 48], [3, 49], [3, 50], [3, 51], [3, 52], [3, 53], [3, 54], [3, 55], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [4, 10], [4, 11], [4, 12], [4, 13], [4, 14], [4, 15], [4, 16], [4, 17], [4, 18], [4, 19], [4, 20], [4, 21], [4, 22], [4, 23], [4, 24], [4, 25], [4, 26], [4, 27], [4, 28], [4, 29], [4, 30], [4, 31], [4, 32], [4, 33], [4, 34], [4, 35], [4, 36], [4, 37], [4, 38], [4, 39], [4, 40], [4, 41], [4, 42], [4, 43], [4, 44], [4, 45], [4, 46], [4, 47], [4, 48], [4, 49], [4, 50], [4, 51], [4, 52], [4, 53], [4, 54], [4, 55], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [5, 10], [5, 11], [5, 12], [5, 13], [5, 14], [5, 15], [5, 16], [5, 17], [5, 18], [5, 19], [5, 20], [5, 21], [5, 22], [5, 23], [5, 24], [5, 25], [5, 26], [5, 27], [5, 28], [5, 29], [5, 30], [5, 31], [5, 32], [5, 33], [5, 34], [5, 35], [5, 36], [5, 37], [5, 38], [5, 39], [5, 40], [5, 41], [5, 42], [5, 43], [5, 44], [5, 45], [5, 46], [5, 47], [5, 48], [5, 49], [5, 50], [5, 51], [5, 52], [5, 53], [5, 54], [5, 55], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12], [6, 13], [6, 14], [6, 15], [6, 16], [6, 17], [6, 18], [6, 19], [6, 20], [6, 21], [6, 22], [6, 23], [6, 24], [6, 25], [6, 26], [6, 27], [6, 28], [6, 29], [6, 30], [6, 31], [6, 32], [6, 33], [6, 34], [6, 35], [6, 36], [6, 37], [6, 38], [6, 39], [6, 40], [6, 41], [6, 42], [6, 43], [6, 44], [6, 45], [6, 46], [6, 47], [6, 48], [6, 49], [6, 50], [6, 51], [6, 52], [6, 53], [6, 54], [6, 55], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [7, 10], [7, 11], [7, 12], [7, 13], [7, 14], [7, 15], [7, 16], [7, 17], [7, 18], [7, 19], [7, 20], [7, 21], [7, 22], [7, 23], [7, 24], [7, 25], [7, 26], [7, 27], [7, 28], [7, 29], [7, 30], [7, 31], [7, 32], [7, 33], [7, 34], [7, 35], [7, 36], [7, 37], [7, 38], [7, 39], [7, 40], [7, 41], [7, 42], [7, 43], [7, 44], [7, 45], [7, 46], [7, 47], [7, 48], [7, 49], [7, 50], [7, 51], [7, 52], [7, 53], [7, 54], [7, 55], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [8, 10], [8, 11], [8, 12], [8, 13], [8, 14], [8, 15], [8, 16], [8, 17], [8, 18], [8, 19], [8, 20], [8, 21], [8, 22], [8, 23], [8, 24], [8, 25], [8, 26], [8, 27], [8, 28], [8, 29], [8, 30], [8, 31], [8, 32], [8, 33], [8, 34], [8, 35], [8, 36], [8, 37], [8, 38], [8, 39], [8, 40], [8, 41], [8, 42], [8, 43], [8, 44], [8, 45], [8, 46], [8, 47], [8, 48], [8, 49], [8, 50], [8, 51], [8, 52], [8, 53], [8, 54], [8, 55], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9], [9, 10], [9, 11], [9, 12], [9, 13], [9, 14], [9, 15], [9, 16], [9, 17], [9, 18], [9, 19], [9, 20], [9, 21], [9, 22], [9, 23], [9, 24], [9, 25], [9, 26], [9, 27], [9, 28], [9, 29], [9, 30], [9, 31], [9, 32], [9, 33], [9, 34], [9, 35], [9, 36], [9, 37], [9, 38], [9, 39], [9, 40], [9, 41], [9, 42], [9, 43], [9, 44], [9, 45], [9, 46], [9, 47], [9, 48], [9, 49], [9, 50], [9, 51], [9, 52], [9, 53], [9, 54], [9, 55], [10, 0], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5], [10, 6], [10, 7], [10, 8], [10, 9], [10, 10], [10, 11], [10, 12], [10, 13], [10, 14], [10, 15], [10, 16], [10, 17], [10, 18], [10, 19], [10, 20], [10, 21], [10, 22], [10, 23], [10, 24], [10, 25], [10, 26], [10, 27], [10, 28], [10, 29], [10, 30], [10, 31], [10, 32], [10, 33], [10, 34], [10, 35], [10, 36], [10, 37], [10, 38], [10, 39], [10, 40], [10, 41], [10, 42], [10, 43], [10, 44], [10, 45], [10, 46], [10, 47], [10, 48], [10, 49], [10, 50], [10, 51], [10, 52], [10, 53], [10, 54], [10, 55], [11, 0], [11, 1], [11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9], [11, 10], [11, 11], [11, 12], [11, 13], [11, 14], [11, 15], [11, 16], [11, 17], [11, 18], [11, 19], [11, 20], [11, 21], [11, 22], [11, 23], [11, 24], [11, 25], [11, 26], [11, 27], [11, 28], [11, 29], [11, 30], [11, 31], [11, 32], [11, 33], [11, 34], [11, 35], [11, 36], [11, 37], [11, 38], [11, 39], [11, 40], [11, 41], [11, 42], [11, 43], [11, 44], [11, 45], [11, 46], [11, 47], [11, 48], [11, 49], [11, 50], [11, 51], [11, 52], [11, 53], [11, 54], [11, 55], [12, 0], [12, 1], [12, 2], [12, 3], [12, 4], [12, 5], [12, 6], [12, 7], [12, 8], [12, 9], [12, 10], [12, 11], [12, 12], [12, 13], [12, 14], [12, 15], [12, 16], [12, 17], [12, 18], [12, 19], [12, 20], [12, 21], [12, 22], [12, 23], [12, 24], [12, 25], [12, 26], [12, 27], [12, 28], [12, 29], [12, 30], [12, 31], [12, 32], [12, 33], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [12, 40], [12, 41], [12, 42], [12, 43], [12, 44], [12, 45], [12, 46], [12, 47], [12, 48], [12, 49], [12, 50], [12, 51], [12, 52], [12, 53], [12, 54], [12, 55], [13, 0], [13, 1], [13, 2], [13, 3], [13, 4], [13, 5], [13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12], [13, 13], [13, 14], [13, 15], [13, 16], [13, 17], [13, 18], [13, 19], [13, 20], [13, 21], [13, 22], [13, 23], [13, 24], [13, 25], [13, 26], [13, 27], [13, 28], [13, 29], [13, 30], [13, 31], [13, 32], [13, 33], [13, 34], [13, 35], [13, 36], [13, 37], [13, 38], [13, 39], [13, 40], [13, 41], [13, 42], [13, 43], [13, 44], [13, 45], [13, 46], [13, 47], [13, 48], [13, 49], [13, 50], [13, 51], [13, 52], [13, 53], [13, 54], [13, 55], [14, 0], [14, 1], [14, 2], [14, 3], [14, 4], [14, 5], [14, 6], [14, 7], [14, 8], [14, 9], [14, 10], [14, 11], [14, 12], [14, 13], [14, 14], [14, 15], [14, 16], [14, 17], [14, 18], [14, 19], [14, 20], [14, 21], [14, 22], [14, 23], [14, 24], [14, 25], [14, 26], [14, 27], [14, 28], [14, 29], [14, 30], [14, 31], [14, 32], [14, 33], [14, 34], [14, 35], [14, 36], [14, 37], [14, 38], [14, 39], [14, 40], [14, 41], [14, 42], [14, 43], [14, 44], [14, 45], [14, 46], [14, 47], [14, 48], [14, 49], [14, 50], [14, 51], [14, 52], [14, 53], [14, 54], [14, 55], [15, 0], [15, 1], [15, 2], [15, 3], [15, 4], [15, 5], [15, 6], [15, 7], [15, 8], [15, 9], [15, 10], [15, 11], [15, 12], [15, 13], [15, 14], [15, 15], [15, 16], [15, 17], [15, 18], [15, 19], [15, 20], [15, 21], [15, 22], [15, 23], [15, 24], [15, 25], [15, 26], [15, 27], [15, 28], [15, 29], [15, 30], [15, 31], [15, 32], [15, 33], [15, 34], [15, 35], [15, 36], [15, 37], [15, 38], [15, 39], [15, 40], [15, 41], [15, 42], [15, 43], [15, 44], [15, 45], [15, 46], [15, 47], [15, 48], [15, 49], [15, 50], [15, 51], [15, 52], [15, 53], [15, 54], [15, 55], [16, 0], [16, 1], [16, 2], [16, 3], [16, 4], [16, 5], [16, 6], [16, 7], [16, 8], [16, 9], [16, 10], [16, 11], [16, 12], [16, 13], [16, 14], [16, 15], [16, 16], [16, 17], [16, 18], [16, 19], [16, 20], [16, 21], [16, 22], [16, 23], [16, 24], [16, 25], [16, 26], [16, 27], [16, 28], [16, 29], [16, 30], [16, 31], [16, 32], [16, 33], [16, 34], [16, 35], [16, 36], [16, 37], [16, 38], [16, 39], [16, 40], [16, 41], [16, 42], [16, 43], [16, 44], [16, 45], [16, 46], [16, 47], [16, 48], [16, 49], [16, 50], [16, 51], [16, 52], [16, 53], [16, 54], [16, 55], [17, 0], [17, 1], [17, 2], [17, 3], [17, 4], [17, 5], [17, 6], [17, 7], [17, 8], [17, 9], [17, 10], [17, 11], [17, 12], [17, 13], [17, 14], [17, 15], [17, 16], [17, 17], [17, 18], [17, 19], [17, 20], [17, 21], [17, 22], [17, 23], [17, 24], [17, 25], [17, 26], [17, 27], [17, 28], [17, 29], [17, 30], [17, 31], [17, 32], [17, 33], [17, 34], [17, 35], [17, 36], [17, 37], [17, 38], [17, 39], [17, 40], [17, 41], [17, 42], [17, 43], [17, 44], [17, 45], [17, 46], [17, 47], [17, 48], [17, 49], [17, 50], [17, 51], [17, 52], [17, 53], [17, 54], [17, 55], [18, 0], [18, 1], [18, 2], [18, 3], [18, 4], [18, 5], [18, 6], [18, 7], [18, 8], [18, 9], [18, 10], [18, 11], [18, 12], [18, 13], [18, 14], [18, 15], [18, 16], [18, 17], [18, 18], [18, 19], [18, 20], [18, 21], [18, 22], [18, 23], [18, 24], [18, 25], [18, 26], [18, 27], [18, 28], [18, 29], [18, 30], [18, 31], [18, 32], [18, 33], [18, 34], [18, 35], [18, 36], [18, 37], [18, 38], [18, 39], [18, 40], [18, 41], [18, 42], [18, 43], [18, 44], [18, 45], [18, 46], [18, 47], [18, 48], [18, 49], [18, 50], [18, 51], [18, 52], [18, 53], [18, 54], [18, 55], [19, 0], [19, 1], [19, 2], [19, 3], [19, 4], [19, 5], [19, 6], [19, 7], [19, 8], [19, 9], [19, 10], [19, 11], [19, 12], [19, 13], [19, 14], [19, 15], [19, 16], [19, 17], [19, 18], [19, 19], [19, 20], [19, 21], [19, 22], [19, 23], [19, 24], [19, 25], [19, 26], [19, 27], [19, 28], [19, 29], [19, 30], [19, 31], [19, 32], [19, 33], [19, 34], [19, 35], [19, 36], [19, 37], [19, 38], [19, 39], [19, 40], [19, 41], [19, 42], [19, 43], [19, 44], [19, 45], [19, 46], [19, 47], [19, 48], [19, 49], [19, 50], [19, 51], [19, 52], [19, 53], [19, 54], [19, 55], [20, 0], [20, 1], [20, 2], [20, 3], [20, 4], [20, 5], [20, 6], [20, 7], [20, 8], [20, 9], [20, 10], [20, 11], [20, 12], [20, 13], [20, 14], [20, 15], [20, 16], [20, 17], [20, 18], [20, 19], [20, 20], [20, 21], [20, 22], [20, 23], [20, 24], [20, 25], [20, 26], [20, 27], [20, 28], [20, 29], [20, 30], [20, 31], [20, 32], [20, 33], [20, 34], [20, 35], [20, 36], [20, 37], [20, 38], [20, 39], [20, 40], [20, 41], [20, 42], [20, 43], [20, 44], [20, 45], [20, 46], [20, 47], [20, 48], [20, 49], [20, 50], [20, 51], [20, 52], [20, 53], [20, 54], [20, 55], [21, 0], [21, 1], [21, 2], [21, 3], [21, 4], [21, 5], [21, 6], [21, 7], [21, 8], [21, 9], [21, 10], [21, 11], [21, 12], [21, 13], [21, 14], [21, 15], [21, 16], [21, 17], [21, 18], [21, 19], [21, 20], [21, 21], [21, 22], [21, 23], [21, 24], [21, 25], [21, 26], [21, 27], [21, 28], [21, 29], [21, 30], [21, 31], [21, 32], [21, 33], [21, 34], [21, 35], [21, 36], [21, 37], [21, 38], [21, 39], [21, 40], [21, 41], [21, 42], [21, 43], [21, 44], [21, 45], [21, 46], [21, 47], [21, 48], [21, 49], [21, 50], [21, 51], [21, 52], [21, 53], [21, 54], [21, 55], [22, 0], [22, 1], [22, 2], [22, 3], [22, 4], [22, 5], [22, 6], [22, 7], [22, 8], [22, 9], [22, 10], [22, 11], [22, 12], [22, 13], [22, 14], [22, 15], [22, 16], [22, 17], [22, 18], [22, 19], [22, 20], [22, 21], [22, 22], [22, 23], [22, 24], [22, 25], [22, 26], [22, 27], [22, 28], [22, 29], [22, 30], [22, 31], [22, 32], [22, 33], [22, 34], [22, 35], [22, 36], [22, 37], [22, 38], [22, 39], [22, 40], [22, 41], [22, 42], [22, 43], [22, 44], [22, 45], [22, 46], [22, 47], [22, 48], [22, 49], [22, 50], [22, 51], [22, 52], [22, 53], [22, 54], [22, 55], [23, 0], [23, 1], [23, 2], [23, 3], [23, 4], [23, 5], [23, 6], [23, 7], [23, 8], [23, 9], [23, 10], [23, 11], [23, 12], [23, 13], [23, 14], [23, 15], [23, 16], [23, 17], [23, 18], [23, 19], [23, 20], [23, 21], [23, 22], [23, 23], [23, 24], [23, 25], [23, 26], [23, 27], [23, 28], [23, 29], [23, 30], [23, 31], [23, 32], [23, 33], [23, 34], [23, 35], [23, 36], [23, 37], [23, 38], [23, 39], [23, 40], [23, 41], [23, 42], [23, 43], [23, 44], [23, 45], [23, 46], [23, 47], [23, 48], [23, 49], [23, 50], [23, 51], [23, 52], [23, 53], [23, 54], [23, 55], [24, 0], [24, 1], [24, 2], [24, 3], [24, 4], [24, 5], [24, 6], [24, 7], [24, 8], [24, 9], [24, 10], [24, 11], [24, 12], [24, 13], [24, 14], [24, 15], [24, 16], [24, 17], [24, 18], [24, 19], [24, 20], [24, 21], [24, 22], [24, 23], [24, 24], [24, 25], [24, 26], [24, 27], [24, 28], [24, 29], [24, 30], [24, 31], [24, 32], [24, 33], [24, 34], [24, 35], [24, 36], [24, 37], [24, 38], [24, 39], [24, 40], [24, 41], [24, 42], [24, 43], [24, 44], [24, 45], [24, 46], [24, 47], [24, 48], [24, 49], [24, 50], [24, 51], [24, 52], [24, 53], [24, 54], [24, 55], [25, 0], [25, 1], [25, 2], [25, 3], [25, 4], [25, 5], [25, 6], [25, 7], [25, 8], [25, 9], [25, 10], [25, 11], [25, 12], [25, 13], [25, 14], [25, 15], [25, 16], [25, 17], [25, 18], [25, 19], [25, 20], [25, 21], [25, 22], [25, 23], [25, 24], [25, 25], [25, 26], [25, 27], [25, 28], [25, 29], [25, 30], [25, 31], [25, 32], [25, 33], [25, 34], [25, 35], [25, 36], [25, 37], [25, 38], [25, 39], [25, 40], [25, 41], [25, 42], [25, 43], [25, 44], [25, 45], [25, 46], [25, 47], [25, 48], [25, 49], [25, 50], [25, 51], [25, 52], [25, 53], [25, 54], [25, 55], [26, 0], [26, 1], [26, 2], [26, 3], [26, 4], [26, 5], [26, 6], [26, 7], [26, 8], [26, 9], [26, 10], [26, 11], [26, 12], [26, 13], [26, 14], [26, 15], [26, 16], [26, 17], [26, 18], [26, 19], [26, 20], [26, 21], [26, 22], [26, 23], [26, 24], [26, 25], [26, 26], [26, 27], [26, 28], [26, 29], [26, 30], [26, 31], [26, 32], [26, 33], [26, 34], [26, 35], [26, 36], [26, 37], [26, 38], [26, 39], [26, 40], [26, 41], [26, 42], [26, 43], [26, 44], [26, 45], [26, 46], [26, 47], [26, 48], [26, 49], [26, 50], [26, 51], [26, 52], [26, 53], [26, 54], [26, 55], [27, 0], [27, 1], [27, 2], [27, 3], [27, 4], [27, 5], [27, 6], [27, 7], [27, 8], [27, 9], [27, 10], [27, 11], [27, 12], [27, 13], [27, 14], [27, 15], [27, 16], [27, 17], [27, 18], [27, 19], [27, 20], [27, 21], [27, 22], [27, 23], [27, 24], [27, 25], [27, 26], [27, 27], [27, 28], [27, 29], [27, 30], [27, 31], [27, 32], [27, 33], [27, 34], [27, 35], [27, 36], [27, 37], [27, 38], [27, 39], [27, 40], [27, 41], [27, 42], [27, 43], [27, 44], [27, 45], [27, 46], [27, 47], [27, 48], [27, 49], [27, 50], [27, 51], [27, 52], [27, 53], [27, 54], [27, 55], [28, 0], [28, 1], [28, 2], [28, 3], [28, 4], [28, 5], [28, 6], [28, 7], [28, 8], [28, 9], [28, 10], [28, 11], [28, 12], [28, 13], [28, 14], [28, 15], [28, 16], [28, 17], [28, 18], [28, 19], [28, 20], [28, 21], [28, 22], [28, 23], [28, 24], [28, 25], [28, 26], [28, 27], [28, 28], [28, 29], [28, 30], [28, 31], [28, 32], [28, 33], [28, 34], [28, 35], [28, 36], [28, 37], [28, 38], [28, 39], [28, 40], [28, 41], [28, 42], [28, 43], [28, 44], [28, 45], [28, 46], [28, 47], [28, 48], [28, 49], [28, 50], [28, 51], [28, 52], [28, 53], [28, 54], [28, 55], [29, 0], [29, 1], [29, 2], [29, 3], [29, 4], [29, 5], [29, 6], [29, 7], [29, 8], [29, 9], [29, 10], [29, 11], [29, 12], [29, 13], [29, 14], [29, 15], [29, 16], [29, 17], [29, 18], [29, 19], [29, 20], [29, 21], [29, 22], [29, 23], [29, 24], [29, 25], [29, 26], [29, 27], [29, 28], [29, 29], [29, 30], [29, 31], [29, 32], [29, 33], [29, 34], [29, 35], [29, 36], [29, 37], [29, 38], [29, 39], [29, 40], [29, 41], [29, 42], [29, 43], [29, 44], [29, 45], [29, 46], [29, 47], [29, 48], [29, 49], [29, 50], [29, 51], [29, 52], [29, 53], [29, 54], [29, 55], [30, 0], [30, 1], [30, 2], [30, 3], [30, 4], [30, 5], [30, 6], [30, 7], [30, 8], [30, 9], [30, 10], [30, 11], [30, 12], [30, 13], [30, 14], [30, 15], [30, 16], [30, 17], [30, 18], [30, 19], [30, 20], [30, 21], [30, 22], [30, 23], [30, 24], [30, 25], [30, 26], [30, 27], [30, 28], [30, 29], [30, 30], [30, 31], [30, 32], [30, 33], [30, 34], [30, 35], [30, 36], [30, 37], [30, 38], [30, 39], [30, 40], [30, 41], [30, 42], [30, 43], [30, 44], [30, 45], [30, 46], [30, 47], [30, 48], [30, 49], [30, 50], [30, 51], [30, 52], [30, 53], [30, 54], [30, 55], [31, 0], [31, 1], [31, 2], [31, 3], [31, 4], [31, 5], [31, 6], [31, 7], [31, 8], [31, 9], [31, 10], [31, 11], [31, 12], [31, 13], [31, 14], [31, 15], [31, 16], [31, 17], [31, 18], [31, 19], [31, 20], [31, 21], [31, 22], [31, 23], [31, 24], [31, 25], [31, 26], [31, 27], [31, 28], [31, 29], [31, 30], [31, 31], [31, 32], [31, 33], [31, 34], [31, 35], [31, 36], [31, 37], [31, 38], [31, 39], [31, 40], [31, 41], [31, 42], [31, 43], [31, 44], [31, 45], [31, 46], [31, 47], [31, 48], [31, 49], [31, 50], [31, 51], [31, 52], [31, 53], [31, 54], [31, 55], [32, 0], [32, 1], [32, 2], [32, 3], [32, 4], [32, 5], [32, 6], [32, 7], [32, 8], [32, 9], [32, 10], [32, 11], [32, 12], [32, 13], [32, 14], [32, 15], [32, 16], [32, 17], [32, 18], [32, 19], [32, 20], [32, 21], [32, 22], [32, 23], [32, 24], [32, 25], [32, 26], [32, 27], [32, 28], [32, 29], [32, 30], [32, 31], [32, 32], [32, 33], [32, 34], [32, 35], [32, 36], [32, 37], [32, 38], [32, 39], [32, 40], [32, 41], [32, 42], [32, 43], [32, 44], [32, 45], [32, 46], [32, 47], [32, 48], [32, 49], [32, 50], [32, 51], [32, 52], [32, 53], [32, 54], [32, 55], [33, 0], [33, 1], [33, 2], [33, 3], [33, 4], [33, 5], [33, 6], [33, 7], [33, 8], [33, 9], [33, 10], [33, 11], [33, 12], [33, 13], [33, 14], [33, 15], [33, 16], [33, 17], [33, 18], [33, 19], [33, 20], [33, 21], [33, 22], [33, 23], [33, 24], [33, 25], [33, 26], [33, 27], [33, 28], [33, 29], [33, 30], [33, 31], [33, 32], [33, 33], [33, 34], [33, 35], [33, 36], [33, 37], [33, 38], [33, 39], [33, 40], [33, 41], [33, 42], [33, 43], [33, 44], [33, 45], [33, 46], [33, 47], [33, 48], [33, 49], [33, 50], [33, 51], [33, 52], [33, 53], [33, 54], [33, 55], [34, 0], [34, 1], [34, 2], [34, 3], [34, 4], [34, 5], [34, 6], [34, 7], [34, 8], [34, 9], [34, 10], [34, 11], [34, 12], [34, 13], [34, 14], [34, 15], [34, 16], [34, 17], [34, 18], [34, 19], [34, 20], [34, 21], [34, 22], [34, 23], [34, 24], [34, 25], [34, 26], [34, 27], [34, 28], [34, 29], [34, 30], [34, 31], [34, 32], [34, 33], [34, 34], [34, 35], [34, 36], [34, 37], [34, 38], [34, 39], [34, 40], [34, 41], [34, 42], [34, 43], [34, 44], [34, 45], [34, 46], [34, 47], [34, 48], [34, 49], [34, 50], [34, 51], [34, 52], [34, 53], [34, 54], [34, 55], [35, 0], [35, 1], [35, 2], [35, 3], [35, 4], [35, 5], [35, 6], [35, 7], [35, 8], [35, 9], [35, 10], [35, 11], [35, 12], [35, 13], [35, 14], [35, 15], [35, 16], [35, 17], [35, 18], [35, 19], [35, 20], [35, 21], [35, 22], [35, 23], [35, 24], [35, 25], [35, 26], [35, 27], [35, 28], [35, 29], [35, 30], [35, 31], [35, 32], [35, 33], [35, 34], [35, 35], [35, 36], [35, 37], [35, 38], [35, 39], [35, 40], [35, 41], [35, 42], [35, 43], [35, 44], [35, 45], [35, 46], [35, 47], [35, 48], [35, 49], [35, 50], [35, 51], [35, 52], [35, 53], [35, 54], [35, 55], [36, 0], [36, 1], [36, 2], [36, 3], [36, 4], [36, 5], [36, 6], [36, 7], [36, 8], [36, 9], [36, 10], [36, 11], [36, 12], [36, 13], [36, 14], [36, 15], [36, 16], [36, 17], [36, 18], [36, 19], [36, 20], [36, 21], [36, 22], [36, 23], [36, 24], [36, 25], [36, 26], [36, 27], [36, 28], [36, 29], [36, 30], [36, 31], [36, 32], [36, 33], [36, 34], [36, 35], [36, 36], [36, 37], [36, 38], [36, 39], [36, 40], [36, 41], [36, 42], [36, 43], [36, 44], [36, 45], [36, 46], [36, 47], [36, 48], [36, 49], [36, 50], [36, 51], [36, 52], [36, 53], [36, 54], [36, 55], [37, 0], [37, 1], [37, 2], [37, 3], [37, 4], [37, 5], [37, 6], [37, 7], [37, 8], [37, 9], [37, 10], [37, 11], [37, 12], [37, 13], [37, 14], [37, 15], [37, 16], [37, 17], [37, 18], [37, 19], [37, 20], [37, 21], [37, 22], [37, 23], [37, 24], [37, 25], [37, 26], [37, 27], [37, 28], [37, 29], [37, 30], [37, 31], [37, 32], [37, 33], [37, 34], [37, 35], [37, 36], [37, 37], [37, 38], [37, 39], [37, 40], [37, 41], [37, 42], [37, 43], [37, 44], [37, 45], [37, 46], [37, 47], [37, 48], [37, 49], [37, 50], [37, 51], [37, 52], [37, 53], [37, 54], [37, 55], [38, 0], [38, 1], [38, 2], [38, 3], [38, 4], [38, 5], [38, 6], [38, 7], [38, 8], [38, 9], [38, 10], [38, 11], [38, 12], [38, 13], [38, 14], [38, 15], [38, 16], [38, 17], [38, 18], [38, 19], [38, 20], [38, 21], [38, 22], [38, 23], [38, 24], [38, 25], [38, 26], [38, 27], [38, 28], [38, 29], [38, 30], [38, 31], [38, 32], [38, 33], [38, 34], [38, 35], [38, 36], [38, 37], [38, 38], [38, 39], [38, 40], [38, 41], [38, 42], [38, 43], [38, 44], [38, 45], [38, 46], [38, 47], [38, 48], [38, 49], [38, 50], [38, 51], [38, 52], [38, 53], [38, 54], [38, 55], [39, 0], [39, 1], [39, 2], [39, 3], [39, 4], [39, 5], [39, 6], [39, 7], [39, 8], [39, 9], [39, 10], [39, 11], [39, 12], [39, 13], [39, 14], [39, 15], [39, 16], [39, 17], [39, 18], [39, 19], [39, 20], [39, 21], [39, 22], [39, 23], [39, 24], [39, 25], [39, 26], [39, 27], [39, 28], [39, 29], [39, 30], [39, 31], [39, 32], [39, 33], [39, 34], [39, 35], [39, 36], [39, 37], [39, 38], [39, 39], [39, 40], [39, 41], [39, 42], [39, 43], [39, 44], [39, 45], [39, 46], [39, 47], [39, 48], [39, 49], [39, 50], [39, 51], [39, 52], [39, 53], [39, 54], [39, 55], [40, 0], [40, 1], [40, 2], [40, 3], [40, 4], [40, 5], [40, 6], [40, 7], [40, 8], [40, 9], [40, 10], [40, 11], [40, 12], [40, 13], [40, 14], [40, 15], [40, 16], [40, 17], [40, 18], [40, 19], [40, 20], [40, 21], [40, 22], [40, 23], [40, 24], [40, 25], [40, 26], [40, 27], [40, 28], [40, 29], [40, 30], [40, 31], [40, 32], [40, 33], [40, 34], [40, 35], [40, 36], [40, 37], [40, 38], [40, 39], [40, 40], [40, 41], [40, 42], [40, 43], [40, 44], [40, 45], [40, 46], [40, 47], [40, 48], [40, 49], [40, 50], [40, 51], [40, 52], [40, 53], [40, 54], [40, 55], [41, 0], [41, 1], [41, 2], [41, 3], [41, 4], [41, 5], [41, 6], [41, 7], [41, 8], [41, 9], [41, 10], [41, 11], [41, 12], [41, 13], [41, 14], [41, 15], [41, 16], [41, 17], [41, 18], [41, 19], [41, 20], [41, 21], [41, 22], [41, 23], [41, 24], [41, 25], [41, 26], [41, 27], [41, 28], [41, 29], [41, 30], [41, 31], [41, 32], [41, 33], [41, 34], [41, 35], [41, 36], [41, 37], [41, 38], [41, 39], [41, 40], [41, 41], [41, 42], [41, 43], [41, 44], [41, 45], [41, 46], [41, 47], [41, 48], [41, 49], [41, 50], [41, 51], [41, 52], [41, 53], [41, 54], [41, 55], [42, 0], [42, 1], [42, 2], [42, 3], [42, 4], [42, 5], [42, 6], [42, 7], [42, 8], [42, 9], [42, 10], [42, 11], [42, 12], [42, 13], [42, 14], [42, 15], [42, 16], [42, 17], [42, 18], [42, 19], [42, 20], [42, 21], [42, 22], [42, 23], [42, 24], [42, 25], [42, 26], [42, 27], [42, 28], [42, 29], [42, 30], [42, 31], [42, 32], [42, 33], [42, 34], [42, 35], [42, 36], [42, 37], [42, 38], [42, 39], [42, 40], [42, 41], [42, 42], [42, 43], [42, 44], [42, 45], [42, 46], [42, 47], [42, 48], [42, 49], [42, 50], [42, 51], [42, 52], [42, 53], [42, 54], [42, 55], [43, 0], [43, 1], [43, 2], [43, 3], [43, 4], [43, 5], [43, 6], [43, 7], [43, 8], [43, 9], [43, 10], [43, 11], [43, 12], [43, 13], [43, 14], [43, 15], [43, 16], [43, 17], [43, 18], [43, 19], [43, 20], [43, 21], [43, 22], [43, 23], [43, 24], [43, 25], [43, 26], [43, 27], [43, 28], [43, 29], [43, 30], [43, 31], [43, 32], [43, 33], [43, 34], [43, 35], [43, 36], [43, 37], [43, 38], [43, 39], [43, 40], [43, 41], [43, 42], [43, 43], [43, 44], [43, 45], [43, 46], [43, 47], [43, 48], [43, 49], [43, 50], [43, 51], [43, 52], [43, 53], [43, 54], [43, 55], [44, 0], [44, 1], [44, 2], [44, 3], [44, 4], [44, 5], [44, 6], [44, 7], [44, 8], [44, 9], [44, 10], [44, 11], [44, 12], [44, 13], [44, 14], [44, 15], [44, 16], [44, 17], [44, 18], [44, 19], [44, 20], [44, 21], [44, 22], [44, 23], [44, 24], [44, 25], [44, 26], [44, 27], [44, 28], [44, 29], [44, 30], [44, 31], [44, 32], [44, 33], [44, 34], [44, 35], [44, 36], [44, 37], [44, 38], [44, 39], [44, 40], [44, 41], [44, 42], [44, 43], [44, 44], [44, 45], [44, 46], [44, 47], [44, 48], [44, 49], [44, 50], [44, 51], [44, 52], [44, 53], [44, 54], [44, 55], [45, 0], [45, 1], [45, 2], [45, 3], [45, 4], [45, 5], [45, 6], [45, 7], [45, 8], [45, 9], [45, 10], [45, 11], [45, 12], [45, 13], [45, 14], [45, 15], [45, 16], [45, 17], [45, 18], [45, 19], [45, 20], [45, 21], [45, 22], [45, 23], [45, 24], [45, 25], [45, 26], [45, 27], [45, 28], [45, 29], [45, 30], [45, 31], [45, 32], [45, 33], [45, 34], [45, 35], [45, 36], [45, 37], [45, 38], [45, 39], [45, 40], [45, 41], [45, 42], [45, 43], [45, 44], [45, 45], [45, 46], [45, 47], [45, 48], [45, 49], [45, 50], [45, 51], [45, 52], [45, 53], [45, 54], [45, 55], [46, 0], [46, 1], [46, 2], [46, 3], [46, 4], [46, 5], [46, 6], [46, 7], [46, 8], [46, 9], [46, 10], [46, 11], [46, 12], [46, 13], [46, 14], [46, 15], [46, 16], [46, 17], [46, 18], [46, 19], [46, 20], [46, 21], [46, 22], [46, 23], [46, 24], [46, 25], [46, 26], [46, 27], [46, 28], [46, 29], [46, 30], [46, 31], [46, 32], [46, 33], [46, 34], [46, 35], [46, 36], [46, 37], [46, 38], [46, 39], [46, 40], [46, 41], [46, 42], [46, 43], [46, 44], [46, 45], [46, 46], [46, 47], [46, 48], [46, 49], [46, 50], [46, 51], [46, 52], [46, 53], [46, 54], [46, 55], [47, 0], [47, 1], [47, 2], [47, 3], [47, 4], [47, 5], [47, 6], [47, 7], [47, 8], [47, 9], [47, 10], [47, 11], [47, 12], [47, 13], [47, 14], [47, 15], [47, 16], [47, 17], [47, 18], [47, 19], [47, 20], [47, 21], [47, 22], [47, 23], [47, 24], [47, 25], [47, 26], [47, 27], [47, 28], [47, 29], [47, 30], [47, 31], [47, 32], [47, 33], [47, 34], [47, 35], [47, 36], [47, 37], [47, 38], [47, 39], [47, 40], [47, 41], [47, 42], [47, 43], [47, 44], [47, 45], [47, 46], [47, 47], [47, 48], [47, 49], [47, 50], [47, 51], [47, 52], [47, 53], [47, 54], [47, 55], [48, 0], [48, 1], [48, 2], [48, 3], [48, 4], [48, 5], [48, 6], [48, 7], [48, 8], [48, 9], [48, 10], [48, 11], [48, 12], [48, 13], [48, 14], [48, 15], [48, 16], [48, 17], [48, 18], [48, 19], [48, 20], [48, 21], [48, 22], [48, 23], [48, 24], [48, 25], [48, 26], [48, 27], [48, 28], [48, 29], [48, 30], [48, 31], [48, 32], [48, 33], [48, 34], [48, 35], [48, 36], [48, 37], [48, 38], [48, 39], [48, 40], [48, 41], [48, 42], [48, 43], [48, 44], [48, 45], [48, 46], [48, 47], [48, 48], [48, 49], [48, 50], [48, 51], [48, 52], [48, 53], [48, 54], [48, 55], [49, 0], [49, 1], [49, 2], [49, 3], [49, 4], [49, 5], [49, 6], [49, 7], [49, 8], [49, 9], [49, 10], [49, 11], [49, 12], [49, 13], [49, 14], [49, 15], [49, 16], [49, 17], [49, 18], [49, 19], [49, 20], [49, 21], [49, 22], [49, 23], [49, 24], [49, 25], [49, 26], [49, 27], [49, 28], [49, 29], [49, 30], [49, 31], [49, 32], [49, 33], [49, 34], [49, 35], [49, 36], [49, 37], [49, 38], [49, 39], [49, 40], [49, 41], [49, 42], [49, 43], [49, 44], [49, 45], [49, 46], [49, 47], [49, 48], [49, 49], [49, 50], [49, 51], [49, 52], [49, 53], [49, 54], [49, 55], [50, 0], [50, 1], [50, 2], [50, 3], [50, 4], [50, 5], [50, 6], [50, 7], [50, 8], [50, 9], [50, 10], [50, 11], [50, 12], [50, 13], [50, 14], [50, 15], [50, 16], [50, 17], [50, 18], [50, 19], [50, 20], [50, 21], [50, 22], [50, 23], [50, 24], [50, 25], [50, 26], [50, 27], [50, 28], [50, 29], [50, 30], [50, 31], [50, 32], [50, 33], [50, 34], [50, 35], [50, 36], [50, 37], [50, 38], [50, 39], [50, 40], [50, 41], [50, 42], [50, 43], [50, 44], [50, 45], [50, 46], [50, 47], [50, 48], [50, 49], [50, 50], [50, 51], [50, 52], [50, 53], [50, 54], [50, 55], [51, 0], [51, 1], [51, 2], [51, 3], [51, 4], [51, 5], [51, 6], [51, 7], [51, 8], [51, 9], [51, 10], [51, 11], [51, 12], [51, 13], [51, 14], [51, 15], [51, 16], [51, 17], [51, 18], [51, 19], [51, 20], [51, 21], [51, 22], [51, 23], [51, 24], [51, 25], [51, 26], [51, 27], [51, 28], [51, 29], [51, 30], [51, 31], [51, 32], [51, 33], [51, 34], [51, 35], [51, 36], [51, 37], [51, 38], [51, 39], [51, 40], [51, 41], [51, 42], [51, 43], [51, 44], [51, 45], [51, 46], [51, 47], [51, 48], [51, 49], [51, 50], [51, 51], [51, 52], [51, 53], [51, 54], [51, 55], [52, 0], [52, 1], [52, 2], [52, 3], [52, 4], [52, 5], [52, 6], [52, 7], [52, 8], [52, 9], [52, 10], [52, 11], [52, 12], [52, 13], [52, 14], [52, 15], [52, 16], [52, 17], [52, 18], [52, 19], [52, 20], [52, 21], [52, 22], [52, 23], [52, 24], [52, 25], [52, 26], [52, 27], [52, 28], [52, 29], [52, 30], [52, 31], [52, 32], [52, 33], [52, 34], [52, 35], [52, 36], [52, 37], [52, 38], [52, 39], [52, 40], [52, 41], [52, 42], [52, 43], [52, 44], [52, 45], [52, 46], [52, 47], [52, 48], [52, 49], [52, 50], [52, 51], [52, 52], [52, 53], [52, 54], [52, 55], [53, 0], [53, 1], [53, 2], [53, 3], [53, 4], [53, 5], [53, 6], [53, 7], [53, 8], [53, 9], [53, 10], [53, 11], [53, 12], [53, 13], [53, 14], [53, 15], [53, 16], [53, 17], [53, 18], [53, 19], [53, 20], [53, 21], [53, 22], [53, 23], [53, 24], [53, 25], [53, 26], [53, 27], [53, 28], [53, 29], [53, 30], [53, 31], [53, 32], [53, 33], [53, 34], [53, 35], [53, 36], [53, 37], [53, 38], [53, 39], [53, 40], [53, 41], [53, 42], [53, 43], [53, 44], [53, 45], [53, 46], [53, 47], [53, 48], [53, 49], [53, 50], [53, 51], [53, 52], [53, 53], [53, 54], [53, 55], [54, 0], [54, 1], [54, 2], [54, 3], [54, 4], [54, 5], [54, 6], [54, 7], [54, 8], [54, 9], [54, 10], [54, 11], [54, 12], [54, 13], [54, 14], [54, 15], [54, 16], [54, 17], [54, 18], [54, 19], [54, 20], [54, 21], [54, 22], [54, 23], [54, 24], [54, 25], [54, 26], [54, 27], [54, 28], [54, 29], [54, 30], [54, 31], [54, 32], [54, 33], [54, 34], [54, 35], [54, 36], [54, 37], [54, 38], [54, 39], [54, 40], [54, 41], [54, 42], [54, 43], [54, 44], [54, 45], [54, 46], [54, 47], [54, 48], [54, 49], [54, 50], [54, 51], [54, 52], [54, 53], [54, 54], [54, 55], [55, 0], [55, 1], [55, 2], [55, 3], [55, 4], [55, 5], [55, 6], [55, 7], [55, 8], [55, 9], [55, 10], [55, 11], [55, 12], [55, 13], [55, 14], [55, 15], [55, 16], [55, 17], [55, 18], [55, 19], [55, 20], [55, 21], [55, 22], [55, 23], [55, 24], [55, 25], [55, 26], [55, 27], [55, 28], [55, 29], [55, 30], [55, 31], [55, 32], [55, 33], [55, 34], [55, 35], [55, 36], [55, 37], [55, 38], [55, 39], [55, 40], [55, 41], [55, 42], [55, 43], [55, 44], [55, 45], [55, 46], [55, 47], [55, 48], [55, 49], [55, 50], [55, 51], [55, 52], [55, 53], [55, 54], [55, 55]] Secondary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] External multi index: rank = 1 dims = [3] indices = [[0], [1], [2]] Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 3136 entries computed in 0.0151 seconds Shape of reference tensor: (56, 56) Primary multi index: rank = 1 dims = [56] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31], [32], [33], [34], [35], [36], [37], [38], [39], [40], [41], [42], [43], [44], [45], [46], [47], [48], [49], [50], [51], [52], [53], [54], [55]] Secondary multi index: rank = 1 dims = [56] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31], [32], [33], [34], [35], [36], [37], [38], [39], [40], [41], [42], [43], [44], [45], [46], [47], [48], [49], [50], [51], [52], [53], [54], [55]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 1 dims = [56] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31], [32], [33], [34], [35], [36], [37], [38], [39], [40], [41], [42], [43], [44], [45], [46], [47], [48], [49], [50], [51], [52], [53], [54], [55]] External multi index: rank = 0 dims = [] indices = [[]] Computing representation of forms Compiler stage 2 finished in 0.053514 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.000216961 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 4.83289 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000478983 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Poisson3D_5.h. Output written to ./Poisson3D_5.cpp. Compiler stage 5 finished in 0.00992203 seconds. FFC finished in 5.19609 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Poisson3D_3 Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, U]' Coefficient names: '[]' Unique elements: 'CG3(?)' Unique sub elements: 'CG3(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 4 quadrature_degree: auto --> 4 quadrature_rule: auto --> default Name: 'L' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 1 Number of coefficients: 1 Arguments: '[v_{-2}]' Coefficients: '[w_0]' Argument names: '[v]' Coefficient names: '[f]' Unique elements: 'CG3(?)' Unique sub elements: 'CG3(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Estimated cost of tensor representation: 1 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 6 quadrature_degree: auto --> 6 quadrature_rule: auto --> default Compiler stage 1 finished in 0.049716 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 3600 entries computed in 0.00165 seconds Shape of reference tensor: (20, 20, 3, 3) Primary multi index: rank = 2 dims = [20, 20] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [0, 15], [0, 16], [0, 17], [0, 18], [0, 19], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14], [1, 15], [1, 16], [1, 17], [1, 18], [1, 19], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [2, 10], [2, 11], [2, 12], [2, 13], [2, 14], [2, 15], [2, 16], [2, 17], [2, 18], [2, 19], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [3, 15], [3, 16], [3, 17], [3, 18], [3, 19], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [4, 10], [4, 11], [4, 12], [4, 13], [4, 14], [4, 15], [4, 16], [4, 17], [4, 18], [4, 19], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [5, 10], [5, 11], [5, 12], [5, 13], [5, 14], [5, 15], [5, 16], [5, 17], [5, 18], [5, 19], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12], [6, 13], [6, 14], [6, 15], [6, 16], [6, 17], [6, 18], [6, 19], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [7, 10], [7, 11], [7, 12], [7, 13], [7, 14], [7, 15], [7, 16], [7, 17], [7, 18], [7, 19], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [8, 10], [8, 11], [8, 12], [8, 13], [8, 14], [8, 15], [8, 16], [8, 17], [8, 18], [8, 19], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9], [9, 10], [9, 11], [9, 12], [9, 13], [9, 14], [9, 15], [9, 16], [9, 17], [9, 18], [9, 19], [10, 0], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5], [10, 6], [10, 7], [10, 8], [10, 9], [10, 10], [10, 11], [10, 12], [10, 13], [10, 14], [10, 15], [10, 16], [10, 17], [10, 18], [10, 19], [11, 0], [11, 1], [11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9], [11, 10], [11, 11], [11, 12], [11, 13], [11, 14], [11, 15], [11, 16], [11, 17], [11, 18], [11, 19], [12, 0], [12, 1], [12, 2], [12, 3], [12, 4], [12, 5], [12, 6], [12, 7], [12, 8], [12, 9], [12, 10], [12, 11], [12, 12], [12, 13], [12, 14], [12, 15], [12, 16], [12, 17], [12, 18], [12, 19], [13, 0], [13, 1], [13, 2], [13, 3], [13, 4], [13, 5], [13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12], [13, 13], [13, 14], [13, 15], [13, 16], [13, 17], [13, 18], [13, 19], [14, 0], [14, 1], [14, 2], [14, 3], [14, 4], [14, 5], [14, 6], [14, 7], [14, 8], [14, 9], [14, 10], [14, 11], [14, 12], [14, 13], [14, 14], [14, 15], [14, 16], [14, 17], [14, 18], [14, 19], [15, 0], [15, 1], [15, 2], [15, 3], [15, 4], [15, 5], [15, 6], [15, 7], [15, 8], [15, 9], [15, 10], [15, 11], [15, 12], [15, 13], [15, 14], [15, 15], [15, 16], [15, 17], [15, 18], [15, 19], [16, 0], [16, 1], [16, 2], [16, 3], [16, 4], [16, 5], [16, 6], [16, 7], [16, 8], [16, 9], [16, 10], [16, 11], [16, 12], [16, 13], [16, 14], [16, 15], [16, 16], [16, 17], [16, 18], [16, 19], [17, 0], [17, 1], [17, 2], [17, 3], [17, 4], [17, 5], [17, 6], [17, 7], [17, 8], [17, 9], [17, 10], [17, 11], [17, 12], [17, 13], [17, 14], [17, 15], [17, 16], [17, 17], [17, 18], [17, 19], [18, 0], [18, 1], [18, 2], [18, 3], [18, 4], [18, 5], [18, 6], [18, 7], [18, 8], [18, 9], [18, 10], [18, 11], [18, 12], [18, 13], [18, 14], [18, 15], [18, 16], [18, 17], [18, 18], [18, 19], [19, 0], [19, 1], [19, 2], [19, 3], [19, 4], [19, 5], [19, 6], [19, 7], [19, 8], [19, 9], [19, 10], [19, 11], [19, 12], [19, 13], [19, 14], [19, 15], [19, 16], [19, 17], [19, 18], [19, 19]] Secondary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] External multi index: rank = 1 dims = [3] indices = [[0], [1], [2]] Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 400 entries computed in 0.0014 seconds Shape of reference tensor: (20, 20) Primary multi index: rank = 1 dims = [20] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19]] Secondary multi index: rank = 1 dims = [20] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 1 dims = [20] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19]] External multi index: rank = 0 dims = [] indices = [[]] Computing representation of forms Compiler stage 2 finished in 0.009547 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.00019908 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 0.803709 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000465155 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Poisson3D_3.h. Output written to ./Poisson3D_3.cpp. Compiler stage 5 finished in 0.00131106 seconds. FFC finished in 0.86522 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Poisson2D_3 Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 2 Geometric dimension: 2 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, U]' Coefficient names: '[]' Unique elements: 'CG3(?)' Unique sub elements: 'CG3(?)' Domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Top level domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 4 quadrature_degree: auto --> 4 quadrature_rule: auto --> default Name: 'L' Cell: Topological dimension: 2 Geometric dimension: 2 Rank: 1 Number of coefficients: 1 Arguments: '[v_{-2}]' Coefficients: '[w_0]' Argument names: '[v]' Coefficient names: '[f]' Unique elements: 'CG3(?)' Unique sub elements: 'CG3(?)' Domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Top level domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Estimated cost of tensor representation: 1 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 6 quadrature_degree: auto --> 6 quadrature_rule: auto --> default Compiler stage 1 finished in 0.0339191 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 400 entries computed in 0.00751 seconds Shape of reference tensor: (10, 10, 2, 2) Primary multi index: rank = 2 dims = [10, 10] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] External multi index: rank = 1 dims = [2] indices = [[0], [1]] Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 100 entries computed in 0.00594 seconds Shape of reference tensor: (10, 10) Primary multi index: rank = 1 dims = [10] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]] Secondary multi index: rank = 1 dims = [10] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 1 dims = [10] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]] External multi index: rank = 0 dims = [] indices = [[]] Computing representation of forms Compiler stage 2 finished in 0.0239489 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.000388145 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 0.215677 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000905037 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Poisson2D_3.h. Output written to ./Poisson2D_3.cpp. Compiler stage 5 finished in 0.00148678 seconds. FFC finished in 0.276828 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Poisson2D_2 Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 2 Geometric dimension: 2 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, U]' Coefficient names: '[]' Unique elements: 'CG2(?)' Unique sub elements: 'CG2(?)' Domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Top level domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 2 quadrature_degree: auto --> 2 quadrature_rule: auto --> default Name: 'L' Cell: Topological dimension: 2 Geometric dimension: 2 Rank: 1 Number of coefficients: 1 Arguments: '[v_{-2}]' Coefficients: '[w_0]' Argument names: '[v]' Coefficient names: '[f]' Unique elements: 'CG2(?)' Unique sub elements: 'CG2(?)' Domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Top level domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Estimated cost of tensor representation: 1 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 4 quadrature_degree: auto --> 4 quadrature_rule: auto --> default Compiler stage 1 finished in 0.0183089 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 144 entries computed in 0.00144 seconds Shape of reference tensor: (6, 6, 2, 2) Primary multi index: rank = 2 dims = [6, 6] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] External multi index: rank = 1 dims = [2] indices = [[0], [1]] Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 36 entries computed in 0.00117 seconds Shape of reference tensor: (6, 6) Primary multi index: rank = 1 dims = [6] indices = [[0], [1], [2], [3], [4], [5]] Secondary multi index: rank = 1 dims = [6] indices = [[0], [1], [2], [3], [4], [5]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 1 dims = [6] indices = [[0], [1], [2], [3], [4], [5]] External multi index: rank = 0 dims = [] indices = [[]] Computing representation of forms Compiler stage 2 finished in 0.00905895 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.000223875 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 0.0755029 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000553131 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Poisson2D_2.h. Output written to ./Poisson2D_2.cpp. Compiler stage 5 finished in 0.000888824 seconds. FFC finished in 0.104835 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Poisson2D_5 Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 2 Geometric dimension: 2 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, U]' Coefficient names: '[]' Unique elements: 'CG5(?)' Unique sub elements: 'CG5(?)' Domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Top level domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 8 quadrature_degree: auto --> 8 quadrature_rule: auto --> default Name: 'L' Cell: Topological dimension: 2 Geometric dimension: 2 Rank: 1 Number of coefficients: 1 Arguments: '[v_{-2}]' Coefficients: '[w_0]' Argument names: '[v]' Coefficient names: '[f]' Unique elements: 'CG5(?)' Unique sub elements: 'CG5(?)' Domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Top level domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Estimated cost of tensor representation: 1 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 10 quadrature_degree: auto --> 10 quadrature_rule: auto --> default Compiler stage 1 finished in 0.0630109 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 1764 entries computed in 0.0588 seconds Shape of reference tensor: (21, 21, 2, 2) Primary multi index: rank = 2 dims = [21, 21] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [0, 15], [0, 16], [0, 17], [0, 18], [0, 19], [0, 20], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14], [1, 15], [1, 16], [1, 17], [1, 18], [1, 19], [1, 20], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [2, 10], [2, 11], [2, 12], [2, 13], [2, 14], [2, 15], [2, 16], [2, 17], [2, 18], [2, 19], [2, 20], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [3, 15], [3, 16], [3, 17], [3, 18], [3, 19], [3, 20], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [4, 10], [4, 11], [4, 12], [4, 13], [4, 14], [4, 15], [4, 16], [4, 17], [4, 18], [4, 19], [4, 20], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [5, 10], [5, 11], [5, 12], [5, 13], [5, 14], [5, 15], [5, 16], [5, 17], [5, 18], [5, 19], [5, 20], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12], [6, 13], [6, 14], [6, 15], [6, 16], [6, 17], [6, 18], [6, 19], [6, 20], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [7, 10], [7, 11], [7, 12], [7, 13], [7, 14], [7, 15], [7, 16], [7, 17], [7, 18], [7, 19], [7, 20], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [8, 10], [8, 11], [8, 12], [8, 13], [8, 14], [8, 15], [8, 16], [8, 17], [8, 18], [8, 19], [8, 20], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9], [9, 10], [9, 11], [9, 12], [9, 13], [9, 14], [9, 15], [9, 16], [9, 17], [9, 18], [9, 19], [9, 20], [10, 0], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5], [10, 6], [10, 7], [10, 8], [10, 9], [10, 10], [10, 11], [10, 12], [10, 13], [10, 14], [10, 15], [10, 16], [10, 17], [10, 18], [10, 19], [10, 20], [11, 0], [11, 1], [11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9], [11, 10], [11, 11], [11, 12], [11, 13], [11, 14], [11, 15], [11, 16], [11, 17], [11, 18], [11, 19], [11, 20], [12, 0], [12, 1], [12, 2], [12, 3], [12, 4], [12, 5], [12, 6], [12, 7], [12, 8], [12, 9], [12, 10], [12, 11], [12, 12], [12, 13], [12, 14], [12, 15], [12, 16], [12, 17], [12, 18], [12, 19], [12, 20], [13, 0], [13, 1], [13, 2], [13, 3], [13, 4], [13, 5], [13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12], [13, 13], [13, 14], [13, 15], [13, 16], [13, 17], [13, 18], [13, 19], [13, 20], [14, 0], [14, 1], [14, 2], [14, 3], [14, 4], [14, 5], [14, 6], [14, 7], [14, 8], [14, 9], [14, 10], [14, 11], [14, 12], [14, 13], [14, 14], [14, 15], [14, 16], [14, 17], [14, 18], [14, 19], [14, 20], [15, 0], [15, 1], [15, 2], [15, 3], [15, 4], [15, 5], [15, 6], [15, 7], [15, 8], [15, 9], [15, 10], [15, 11], [15, 12], [15, 13], [15, 14], [15, 15], [15, 16], [15, 17], [15, 18], [15, 19], [15, 20], [16, 0], [16, 1], [16, 2], [16, 3], [16, 4], [16, 5], [16, 6], [16, 7], [16, 8], [16, 9], [16, 10], [16, 11], [16, 12], [16, 13], [16, 14], [16, 15], [16, 16], [16, 17], [16, 18], [16, 19], [16, 20], [17, 0], [17, 1], [17, 2], [17, 3], [17, 4], [17, 5], [17, 6], [17, 7], [17, 8], [17, 9], [17, 10], [17, 11], [17, 12], [17, 13], [17, 14], [17, 15], [17, 16], [17, 17], [17, 18], [17, 19], [17, 20], [18, 0], [18, 1], [18, 2], [18, 3], [18, 4], [18, 5], [18, 6], [18, 7], [18, 8], [18, 9], [18, 10], [18, 11], [18, 12], [18, 13], [18, 14], [18, 15], [18, 16], [18, 17], [18, 18], [18, 19], [18, 20], [19, 0], [19, 1], [19, 2], [19, 3], [19, 4], [19, 5], [19, 6], [19, 7], [19, 8], [19, 9], [19, 10], [19, 11], [19, 12], [19, 13], [19, 14], [19, 15], [19, 16], [19, 17], [19, 18], [19, 19], [19, 20], [20, 0], [20, 1], [20, 2], [20, 3], [20, 4], [20, 5], [20, 6], [20, 7], [20, 8], [20, 9], [20, 10], [20, 11], [20, 12], [20, 13], [20, 14], [20, 15], [20, 16], [20, 17], [20, 18], [20, 19], [20, 20]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] External multi index: rank = 1 dims = [2] indices = [[0], [1]] Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 441 entries computed in 0.0315 seconds Shape of reference tensor: (21, 21) Primary multi index: rank = 1 dims = [21] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20]] Secondary multi index: rank = 1 dims = [21] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 1 dims = [21] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20]] External multi index: rank = 0 dims = [] indices = [[]] Computing representation of forms Compiler stage 2 finished in 0.0994339 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.000208855 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 0.757894 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000486135 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Poisson2D_5.h. Output written to ./Poisson2D_5.cpp. Compiler stage 5 finished in 0.00143313 seconds. FFC finished in 0.922743 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Poisson3D_1 Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, U]' Coefficient names: '[]' Unique elements: 'CG1(?)' Unique sub elements: 'CG1(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 0 quadrature_degree: auto --> 0 quadrature_rule: auto --> default Name: 'L' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 1 Number of coefficients: 1 Arguments: '[v_{-2}]' Coefficients: '[w_0]' Argument names: '[v]' Coefficient names: '[f]' Unique elements: 'CG1(?)' Unique sub elements: 'CG1(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Estimated cost of tensor representation: 1 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 2 quadrature_degree: auto --> 2 quadrature_rule: auto --> default Compiler stage 1 finished in 0.0240111 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 144 entries computed in 0.000962 seconds Shape of reference tensor: (4, 4, 3, 3) Primary multi index: rank = 2 dims = [4, 4] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 1], [1, 2], [1, 3], [2, 0], [2, 1], [2, 2], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]] Secondary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] External multi index: rank = 1 dims = [3] indices = [[0], [1], [2]] Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 16 entries computed in 0.00102 seconds Shape of reference tensor: (4, 4) Primary multi index: rank = 1 dims = [4] indices = [[0], [1], [2], [3]] Secondary multi index: rank = 1 dims = [4] indices = [[0], [1], [2], [3]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 1 dims = [4] indices = [[0], [1], [2], [3]] External multi index: rank = 0 dims = [] indices = [[]] Computing representation of forms Compiler stage 2 finished in 0.0100391 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.00036788 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 0.062727 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000494957 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Poisson3D_1.h. Output written to ./Poisson3D_1.cpp. Compiler stage 5 finished in 0.000715017 seconds. FFC finished in 0.0987179 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Poisson3D_4 Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, U]' Coefficient names: '[]' Unique elements: 'CG4(?)' Unique sub elements: 'CG4(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 6 quadrature_degree: auto --> 6 quadrature_rule: auto --> default Name: 'L' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 1 Number of coefficients: 1 Arguments: '[v_{-2}]' Coefficients: '[w_0]' Argument names: '[v]' Coefficient names: '[f]' Unique elements: 'CG4(?)' Unique sub elements: 'CG4(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Estimated cost of tensor representation: 1 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 8 quadrature_degree: auto --> 8  WARNING: The number of integration points for each cell will be: 125  Consider using the option 'quadrature_degree' to reduce the number of points quadrature_rule: auto --> default Compiler stage 1 finished in 0.132877 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 11025 entries computed in 0.00342 seconds Shape of reference tensor: (35, 35, 3, 3) Primary multi index: rank = 2 dims = [35, 35] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [0, 15], [0, 16], [0, 17], [0, 18], [0, 19], [0, 20], [0, 21], [0, 22], [0, 23], [0, 24], [0, 25], [0, 26], [0, 27], [0, 28], [0, 29], [0, 30], [0, 31], [0, 32], [0, 33], [0, 34], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14], [1, 15], [1, 16], [1, 17], [1, 18], [1, 19], [1, 20], [1, 21], [1, 22], [1, 23], [1, 24], [1, 25], [1, 26], [1, 27], [1, 28], [1, 29], [1, 30], [1, 31], [1, 32], [1, 33], [1, 34], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [2, 10], [2, 11], [2, 12], [2, 13], [2, 14], [2, 15], [2, 16], [2, 17], [2, 18], [2, 19], [2, 20], [2, 21], [2, 22], [2, 23], [2, 24], [2, 25], [2, 26], [2, 27], [2, 28], [2, 29], [2, 30], [2, 31], [2, 32], [2, 33], [2, 34], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [3, 15], [3, 16], [3, 17], [3, 18], [3, 19], [3, 20], [3, 21], [3, 22], [3, 23], [3, 24], [3, 25], [3, 26], [3, 27], [3, 28], [3, 29], [3, 30], [3, 31], [3, 32], [3, 33], [3, 34], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [4, 10], [4, 11], [4, 12], [4, 13], [4, 14], [4, 15], [4, 16], [4, 17], [4, 18], [4, 19], [4, 20], [4, 21], [4, 22], [4, 23], [4, 24], [4, 25], [4, 26], [4, 27], [4, 28], [4, 29], [4, 30], [4, 31], [4, 32], [4, 33], [4, 34], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [5, 10], [5, 11], [5, 12], [5, 13], [5, 14], [5, 15], [5, 16], [5, 17], [5, 18], [5, 19], [5, 20], [5, 21], [5, 22], [5, 23], [5, 24], [5, 25], [5, 26], [5, 27], [5, 28], [5, 29], [5, 30], [5, 31], [5, 32], [5, 33], [5, 34], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12], [6, 13], [6, 14], [6, 15], [6, 16], [6, 17], [6, 18], [6, 19], [6, 20], [6, 21], [6, 22], [6, 23], [6, 24], [6, 25], [6, 26], [6, 27], [6, 28], [6, 29], [6, 30], [6, 31], [6, 32], [6, 33], [6, 34], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [7, 10], [7, 11], [7, 12], [7, 13], [7, 14], [7, 15], [7, 16], [7, 17], [7, 18], [7, 19], [7, 20], [7, 21], [7, 22], [7, 23], [7, 24], [7, 25], [7, 26], [7, 27], [7, 28], [7, 29], [7, 30], [7, 31], [7, 32], [7, 33], [7, 34], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [8, 10], [8, 11], [8, 12], [8, 13], [8, 14], [8, 15], [8, 16], [8, 17], [8, 18], [8, 19], [8, 20], [8, 21], [8, 22], [8, 23], [8, 24], [8, 25], [8, 26], [8, 27], [8, 28], [8, 29], [8, 30], [8, 31], [8, 32], [8, 33], [8, 34], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9], [9, 10], [9, 11], [9, 12], [9, 13], [9, 14], [9, 15], [9, 16], [9, 17], [9, 18], [9, 19], [9, 20], [9, 21], [9, 22], [9, 23], [9, 24], [9, 25], [9, 26], [9, 27], [9, 28], [9, 29], [9, 30], [9, 31], [9, 32], [9, 33], [9, 34], [10, 0], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5], [10, 6], [10, 7], [10, 8], [10, 9], [10, 10], [10, 11], [10, 12], [10, 13], [10, 14], [10, 15], [10, 16], [10, 17], [10, 18], [10, 19], [10, 20], [10, 21], [10, 22], [10, 23], [10, 24], [10, 25], [10, 26], [10, 27], [10, 28], [10, 29], [10, 30], [10, 31], [10, 32], [10, 33], [10, 34], [11, 0], [11, 1], [11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9], [11, 10], [11, 11], [11, 12], [11, 13], [11, 14], [11, 15], [11, 16], [11, 17], [11, 18], [11, 19], [11, 20], [11, 21], [11, 22], [11, 23], [11, 24], [11, 25], [11, 26], [11, 27], [11, 28], [11, 29], [11, 30], [11, 31], [11, 32], [11, 33], [11, 34], [12, 0], [12, 1], [12, 2], [12, 3], [12, 4], [12, 5], [12, 6], [12, 7], [12, 8], [12, 9], [12, 10], [12, 11], [12, 12], [12, 13], [12, 14], [12, 15], [12, 16], [12, 17], [12, 18], [12, 19], [12, 20], [12, 21], [12, 22], [12, 23], [12, 24], [12, 25], [12, 26], [12, 27], [12, 28], [12, 29], [12, 30], [12, 31], [12, 32], [12, 33], [12, 34], [13, 0], [13, 1], [13, 2], [13, 3], [13, 4], [13, 5], [13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12], [13, 13], [13, 14], [13, 15], [13, 16], [13, 17], [13, 18], [13, 19], [13, 20], [13, 21], [13, 22], [13, 23], [13, 24], [13, 25], [13, 26], [13, 27], [13, 28], [13, 29], [13, 30], [13, 31], [13, 32], [13, 33], [13, 34], [14, 0], [14, 1], [14, 2], [14, 3], [14, 4], [14, 5], [14, 6], [14, 7], [14, 8], [14, 9], [14, 10], [14, 11], [14, 12], [14, 13], [14, 14], [14, 15], [14, 16], [14, 17], [14, 18], [14, 19], [14, 20], [14, 21], [14, 22], [14, 23], [14, 24], [14, 25], [14, 26], [14, 27], [14, 28], [14, 29], [14, 30], [14, 31], [14, 32], [14, 33], [14, 34], [15, 0], [15, 1], [15, 2], [15, 3], [15, 4], [15, 5], [15, 6], [15, 7], [15, 8], [15, 9], [15, 10], [15, 11], [15, 12], [15, 13], [15, 14], [15, 15], [15, 16], [15, 17], [15, 18], [15, 19], [15, 20], [15, 21], [15, 22], [15, 23], [15, 24], [15, 25], [15, 26], [15, 27], [15, 28], [15, 29], [15, 30], [15, 31], [15, 32], [15, 33], [15, 34], [16, 0], [16, 1], [16, 2], [16, 3], [16, 4], [16, 5], [16, 6], [16, 7], [16, 8], [16, 9], [16, 10], [16, 11], [16, 12], [16, 13], [16, 14], [16, 15], [16, 16], [16, 17], [16, 18], [16, 19], [16, 20], [16, 21], [16, 22], [16, 23], [16, 24], [16, 25], [16, 26], [16, 27], [16, 28], [16, 29], [16, 30], [16, 31], [16, 32], [16, 33], [16, 34], [17, 0], [17, 1], [17, 2], [17, 3], [17, 4], [17, 5], [17, 6], [17, 7], [17, 8], [17, 9], [17, 10], [17, 11], [17, 12], [17, 13], [17, 14], [17, 15], [17, 16], [17, 17], [17, 18], [17, 19], [17, 20], [17, 21], [17, 22], [17, 23], [17, 24], [17, 25], [17, 26], [17, 27], [17, 28], [17, 29], [17, 30], [17, 31], [17, 32], [17, 33], [17, 34], [18, 0], [18, 1], [18, 2], [18, 3], [18, 4], [18, 5], [18, 6], [18, 7], [18, 8], [18, 9], [18, 10], [18, 11], [18, 12], [18, 13], [18, 14], [18, 15], [18, 16], [18, 17], [18, 18], [18, 19], [18, 20], [18, 21], [18, 22], [18, 23], [18, 24], [18, 25], [18, 26], [18, 27], [18, 28], [18, 29], [18, 30], [18, 31], [18, 32], [18, 33], [18, 34], [19, 0], [19, 1], [19, 2], [19, 3], [19, 4], [19, 5], [19, 6], [19, 7], [19, 8], [19, 9], [19, 10], [19, 11], [19, 12], [19, 13], [19, 14], [19, 15], [19, 16], [19, 17], [19, 18], [19, 19], [19, 20], [19, 21], [19, 22], [19, 23], [19, 24], [19, 25], [19, 26], [19, 27], [19, 28], [19, 29], [19, 30], [19, 31], [19, 32], [19, 33], [19, 34], [20, 0], [20, 1], [20, 2], [20, 3], [20, 4], [20, 5], [20, 6], [20, 7], [20, 8], [20, 9], [20, 10], [20, 11], [20, 12], [20, 13], [20, 14], [20, 15], [20, 16], [20, 17], [20, 18], [20, 19], [20, 20], [20, 21], [20, 22], [20, 23], [20, 24], [20, 25], [20, 26], [20, 27], [20, 28], [20, 29], [20, 30], [20, 31], [20, 32], [20, 33], [20, 34], [21, 0], [21, 1], [21, 2], [21, 3], [21, 4], [21, 5], [21, 6], [21, 7], [21, 8], [21, 9], [21, 10], [21, 11], [21, 12], [21, 13], [21, 14], [21, 15], [21, 16], [21, 17], [21, 18], [21, 19], [21, 20], [21, 21], [21, 22], [21, 23], [21, 24], [21, 25], [21, 26], [21, 27], [21, 28], [21, 29], [21, 30], [21, 31], [21, 32], [21, 33], [21, 34], [22, 0], [22, 1], [22, 2], [22, 3], [22, 4], [22, 5], [22, 6], [22, 7], [22, 8], [22, 9], [22, 10], [22, 11], [22, 12], [22, 13], [22, 14], [22, 15], [22, 16], [22, 17], [22, 18], [22, 19], [22, 20], [22, 21], [22, 22], [22, 23], [22, 24], [22, 25], [22, 26], [22, 27], [22, 28], [22, 29], [22, 30], [22, 31], [22, 32], [22, 33], [22, 34], [23, 0], [23, 1], [23, 2], [23, 3], [23, 4], [23, 5], [23, 6], [23, 7], [23, 8], [23, 9], [23, 10], [23, 11], [23, 12], [23, 13], [23, 14], [23, 15], [23, 16], [23, 17], [23, 18], [23, 19], [23, 20], [23, 21], [23, 22], [23, 23], [23, 24], [23, 25], [23, 26], [23, 27], [23, 28], [23, 29], [23, 30], [23, 31], [23, 32], [23, 33], [23, 34], [24, 0], [24, 1], [24, 2], [24, 3], [24, 4], [24, 5], [24, 6], [24, 7], [24, 8], [24, 9], [24, 10], [24, 11], [24, 12], [24, 13], [24, 14], [24, 15], [24, 16], [24, 17], [24, 18], [24, 19], [24, 20], [24, 21], [24, 22], [24, 23], [24, 24], [24, 25], [24, 26], [24, 27], [24, 28], [24, 29], [24, 30], [24, 31], [24, 32], [24, 33], [24, 34], [25, 0], [25, 1], [25, 2], [25, 3], [25, 4], [25, 5], [25, 6], [25, 7], [25, 8], [25, 9], [25, 10], [25, 11], [25, 12], [25, 13], [25, 14], [25, 15], [25, 16], [25, 17], [25, 18], [25, 19], [25, 20], [25, 21], [25, 22], [25, 23], [25, 24], [25, 25], [25, 26], [25, 27], [25, 28], [25, 29], [25, 30], [25, 31], [25, 32], [25, 33], [25, 34], [26, 0], [26, 1], [26, 2], [26, 3], [26, 4], [26, 5], [26, 6], [26, 7], [26, 8], [26, 9], [26, 10], [26, 11], [26, 12], [26, 13], [26, 14], [26, 15], [26, 16], [26, 17], [26, 18], [26, 19], [26, 20], [26, 21], [26, 22], [26, 23], [26, 24], [26, 25], [26, 26], [26, 27], [26, 28], [26, 29], [26, 30], [26, 31], [26, 32], [26, 33], [26, 34], [27, 0], [27, 1], [27, 2], [27, 3], [27, 4], [27, 5], [27, 6], [27, 7], [27, 8], [27, 9], [27, 10], [27, 11], [27, 12], [27, 13], [27, 14], [27, 15], [27, 16], [27, 17], [27, 18], [27, 19], [27, 20], [27, 21], [27, 22], [27, 23], [27, 24], [27, 25], [27, 26], [27, 27], [27, 28], [27, 29], [27, 30], [27, 31], [27, 32], [27, 33], [27, 34], [28, 0], [28, 1], [28, 2], [28, 3], [28, 4], [28, 5], [28, 6], [28, 7], [28, 8], [28, 9], [28, 10], [28, 11], [28, 12], [28, 13], [28, 14], [28, 15], [28, 16], [28, 17], [28, 18], [28, 19], [28, 20], [28, 21], [28, 22], [28, 23], [28, 24], [28, 25], [28, 26], [28, 27], [28, 28], [28, 29], [28, 30], [28, 31], [28, 32], [28, 33], [28, 34], [29, 0], [29, 1], [29, 2], [29, 3], [29, 4], [29, 5], [29, 6], [29, 7], [29, 8], [29, 9], [29, 10], [29, 11], [29, 12], [29, 13], [29, 14], [29, 15], [29, 16], [29, 17], [29, 18], [29, 19], [29, 20], [29, 21], [29, 22], [29, 23], [29, 24], [29, 25], [29, 26], [29, 27], [29, 28], [29, 29], [29, 30], [29, 31], [29, 32], [29, 33], [29, 34], [30, 0], [30, 1], [30, 2], [30, 3], [30, 4], [30, 5], [30, 6], [30, 7], [30, 8], [30, 9], [30, 10], [30, 11], [30, 12], [30, 13], [30, 14], [30, 15], [30, 16], [30, 17], [30, 18], [30, 19], [30, 20], [30, 21], [30, 22], [30, 23], [30, 24], [30, 25], [30, 26], [30, 27], [30, 28], [30, 29], [30, 30], [30, 31], [30, 32], [30, 33], [30, 34], [31, 0], [31, 1], [31, 2], [31, 3], [31, 4], [31, 5], [31, 6], [31, 7], [31, 8], [31, 9], [31, 10], [31, 11], [31, 12], [31, 13], [31, 14], [31, 15], [31, 16], [31, 17], [31, 18], [31, 19], [31, 20], [31, 21], [31, 22], [31, 23], [31, 24], [31, 25], [31, 26], [31, 27], [31, 28], [31, 29], [31, 30], [31, 31], [31, 32], [31, 33], [31, 34], [32, 0], [32, 1], [32, 2], [32, 3], [32, 4], [32, 5], [32, 6], [32, 7], [32, 8], [32, 9], [32, 10], [32, 11], [32, 12], [32, 13], [32, 14], [32, 15], [32, 16], [32, 17], [32, 18], [32, 19], [32, 20], [32, 21], [32, 22], [32, 23], [32, 24], [32, 25], [32, 26], [32, 27], [32, 28], [32, 29], [32, 30], [32, 31], [32, 32], [32, 33], [32, 34], [33, 0], [33, 1], [33, 2], [33, 3], [33, 4], [33, 5], [33, 6], [33, 7], [33, 8], [33, 9], [33, 10], [33, 11], [33, 12], [33, 13], [33, 14], [33, 15], [33, 16], [33, 17], [33, 18], [33, 19], [33, 20], [33, 21], [33, 22], [33, 23], [33, 24], [33, 25], [33, 26], [33, 27], [33, 28], [33, 29], [33, 30], [33, 31], [33, 32], [33, 33], [33, 34], [34, 0], [34, 1], [34, 2], [34, 3], [34, 4], [34, 5], [34, 6], [34, 7], [34, 8], [34, 9], [34, 10], [34, 11], [34, 12], [34, 13], [34, 14], [34, 15], [34, 16], [34, 17], [34, 18], [34, 19], [34, 20], [34, 21], [34, 22], [34, 23], [34, 24], [34, 25], [34, 26], [34, 27], [34, 28], [34, 29], [34, 30], [34, 31], [34, 32], [34, 33], [34, 34]] Secondary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] External multi index: rank = 1 dims = [3] indices = [[0], [1], [2]] Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 1225 entries computed in 0.00785 seconds Shape of reference tensor: (35, 35) Primary multi index: rank = 1 dims = [35] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31], [32], [33], [34]] Secondary multi index: rank = 1 dims = [35] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31], [32], [33], [34]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 1 dims = [35] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31], [32], [33], [34]] External multi index: rank = 0 dims = [] indices = [[]] Computing representation of forms Compiler stage 2 finished in 0.019315 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.000201941 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 1.57345 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.00048399 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Poisson3D_4.h. Output written to ./Poisson3D_4.cpp. Compiler stage 5 finished in 0.003829 seconds. FFC finished in 1.73044 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Poisson3D_2 Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, U]' Coefficient names: '[]' Unique elements: 'CG2(?)' Unique sub elements: 'CG2(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 2 quadrature_degree: auto --> 2 quadrature_rule: auto --> default Name: 'L' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 1 Number of coefficients: 1 Arguments: '[v_{-2}]' Coefficients: '[w_0]' Argument names: '[v]' Coefficient names: '[f]' Unique elements: 'CG2(?)' Unique sub elements: 'CG2(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Estimated cost of tensor representation: 1 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 4 quadrature_degree: auto --> 4 quadrature_rule: auto --> default Compiler stage 1 finished in 0.0269649 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 900 entries computed in 0.00102 seconds Shape of reference tensor: (10, 10, 3, 3) Primary multi index: rank = 2 dims = [10, 10] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9]] Secondary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] External multi index: rank = 1 dims = [3] indices = [[0], [1], [2]] Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 100 entries computed in 0.00108 seconds Shape of reference tensor: (10, 10) Primary multi index: rank = 1 dims = [10] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]] Secondary multi index: rank = 1 dims = [10] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 1 dims = [10] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]] External multi index: rank = 0 dims = [] indices = [[]] Computing representation of forms Compiler stage 2 finished in 0.00893712 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.000219107 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 0.202376 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000507832 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Poisson3D_2.h. Output written to ./Poisson3D_2.cpp. Compiler stage 5 finished in 0.000834942 seconds. FFC finished in 0.24014 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Poisson2D_1 Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 2 Geometric dimension: 2 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, U]' Coefficient names: '[]' Unique elements: 'CG1(?)' Unique sub elements: 'CG1(?)' Domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Top level domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 0 quadrature_degree: auto --> 0 quadrature_rule: auto --> default Name: 'L' Cell: Topological dimension: 2 Geometric dimension: 2 Rank: 1 Number of coefficients: 1 Arguments: '[v_{-2}]' Coefficients: '[w_0]' Argument names: '[v]' Coefficient names: '[f]' Unique elements: 'CG1(?)' Unique sub elements: 'CG1(?)' Domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Top level domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Estimated cost of tensor representation: 1 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 2 quadrature_degree: auto --> 2 quadrature_rule: auto --> default Compiler stage 1 finished in 0.0123849 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 36 entries computed in 0.000714 seconds Shape of reference tensor: (3, 3, 2, 2) Primary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] External multi index: rank = 1 dims = [2] indices = [[0], [1]] Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 9 entries computed in 0.000633 seconds Shape of reference tensor: (3, 3) Primary multi index: rank = 1 dims = [3] indices = [[0], [1], [2]] Secondary multi index: rank = 1 dims = [3] indices = [[0], [1], [2]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 1 dims = [3] indices = [[0], [1], [2]] External multi index: rank = 0 dims = [] indices = [[]] Computing representation of forms Compiler stage 2 finished in 0.00685406 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.000341892 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 0.03198 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000518799 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Poisson2D_1.h. Output written to ./Poisson2D_1.cpp. Compiler stage 5 finished in 0.00067687 seconds. FFC finished in 0.0530372 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Poisson2D_4 Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 2 Geometric dimension: 2 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, U]' Coefficient names: '[]' Unique elements: 'CG4(?)' Unique sub elements: 'CG4(?)' Domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Top level domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 6 quadrature_degree: auto --> 6 quadrature_rule: auto --> default Name: 'L' Cell: Topological dimension: 2 Geometric dimension: 2 Rank: 1 Number of coefficients: 1 Arguments: '[v_{-2}]' Coefficients: '[w_0]' Argument names: '[v]' Coefficient names: '[f]' Unique elements: 'CG4(?)' Unique sub elements: 'CG4(?)' Domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Top level domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Estimated cost of tensor representation: 1 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 8 quadrature_degree: auto --> 8 quadrature_rule: auto --> default Compiler stage 1 finished in 0.0334668 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 900 entries computed in 0.0151 seconds Shape of reference tensor: (15, 15, 2, 2) Primary multi index: rank = 2 dims = [15, 15] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [2, 10], [2, 11], [2, 12], [2, 13], [2, 14], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [4, 10], [4, 11], [4, 12], [4, 13], [4, 14], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [5, 10], [5, 11], [5, 12], [5, 13], [5, 14], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12], [6, 13], [6, 14], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [7, 10], [7, 11], [7, 12], [7, 13], [7, 14], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [8, 10], [8, 11], [8, 12], [8, 13], [8, 14], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9], [9, 10], [9, 11], [9, 12], [9, 13], [9, 14], [10, 0], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5], [10, 6], [10, 7], [10, 8], [10, 9], [10, 10], [10, 11], [10, 12], [10, 13], [10, 14], [11, 0], [11, 1], [11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9], [11, 10], [11, 11], [11, 12], [11, 13], [11, 14], [12, 0], [12, 1], [12, 2], [12, 3], [12, 4], [12, 5], [12, 6], [12, 7], [12, 8], [12, 9], [12, 10], [12, 11], [12, 12], [12, 13], [12, 14], [13, 0], [13, 1], [13, 2], [13, 3], [13, 4], [13, 5], [13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12], [13, 13], [13, 14], [14, 0], [14, 1], [14, 2], [14, 3], [14, 4], [14, 5], [14, 6], [14, 7], [14, 8], [14, 9], [14, 10], [14, 11], [14, 12], [14, 13], [14, 14]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] External multi index: rank = 1 dims = [2] indices = [[0], [1]] Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 225 entries computed in 0.0126 seconds Shape of reference tensor: (15, 15) Primary multi index: rank = 1 dims = [15] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14]] Secondary multi index: rank = 1 dims = [15] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 1 dims = [15] indices = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14]] External multi index: rank = 0 dims = [] indices = [[]] Computing representation of forms Compiler stage 2 finished in 0.034971 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.000202179 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 0.32006 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000480175 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Poisson2D_4.h. Output written to ./Poisson2D_4.cpp. Compiler stage 5 finished in 0.000966072 seconds. FFC finished in 0.390418 seconds. dolfin-1.3.0/bench/fem/convergence/cpp/Poisson2D_3.h0000644000175000017500000010754012263015055021775 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #ifndef __POISSON2D_3_H #define __POISSON2D_3_H #include #include #include #include /// This class defines the interface for a finite element. class poisson2d_3_finite_element_0: public ufc::finite_element { public: /// Constructor poisson2d_3_finite_element_0(); /// Destructor virtual ~poisson2d_3_finite_element_0(); /// Return a string identifying the finite element virtual const char* signature() const; /// Return the cell shape virtual ufc::shape cell_shape() const; /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const; /// Return the rank of the value space virtual std::size_t value_rank() const; /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const; /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const; /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const; /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const; /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const; /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const; /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const; /// Create a new class instance virtual ufc::finite_element* create() const; }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class poisson2d_3_dofmap_0: public ufc::dofmap { public: /// Constructor poisson2d_3_dofmap_0(); /// Destructor virtual ~poisson2d_3_dofmap_0(); /// Return a string identifying the dofmap virtual const char* signature() const; /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const; /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const; /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const; /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const; /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const; /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const; /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const; /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const; /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const; /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const; /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** coordinates, const double* vertex_coordinates) const; /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const; /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const; /// Create a new class instance virtual ufc::dofmap* create() const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson2d_3_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor poisson2d_3_cell_integral_0_otherwise(); /// Destructor virtual ~poisson2d_3_cell_integral_0_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson2d_3_cell_integral_1_otherwise: public ufc::cell_integral { public: /// Constructor poisson2d_3_cell_integral_1_otherwise(); /// Destructor virtual ~poisson2d_3_cell_integral_1_otherwise(); /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson2d_3_form_0: public ufc::form { public: /// Constructor poisson2d_3_form_0(); /// Destructor virtual ~poisson2d_3_form_0(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson2d_3_form_1: public ufc::form { public: /// Constructor poisson2d_3_form_1(); /// Destructor virtual ~poisson2d_3_form_1(); /// Return a string identifying the form virtual const char* signature() const; /// Return the rank of the global tensor (r) virtual std::size_t rank() const; /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const; /// Return the number of cell domains virtual std::size_t num_cell_domains() const; /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const; /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const; /// Return the number of point domains virtual std::size_t num_point_domains() const; /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const; /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const; /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const; /// Return whether the form has any point integrals virtual bool has_point_integrals() const; /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const; /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const; /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const; /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const; /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const; /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const; /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const; /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const; /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const; /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const; }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Poisson2D_3 { class CoefficientSpace_f: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_f(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_f() { } }; class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new poisson2d_3_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new poisson2d_3_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; class Form_L_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_L_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2d_3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2d_3_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_L_FunctionSpace_0() { } }; typedef CoefficientSpace_f Form_L_FunctionSpace_1; class Form_L: public dolfin::Form { public: // Constructor Form_L(const dolfin::FunctionSpace& V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _ufc_form = boost::shared_ptr(new poisson2d_3_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = f; _ufc_form = boost::shared_ptr(new poisson2d_3_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = *f; _ufc_form = boost::shared_ptr(new poisson2d_3_form_1()); } // Constructor Form_L(boost::shared_ptr V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; _ufc_form = boost::shared_ptr(new poisson2d_3_form_1()); } // Constructor Form_L(boost::shared_ptr V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = f; _ufc_form = boost::shared_ptr(new poisson2d_3_form_1()); } // Constructor Form_L(boost::shared_ptr V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = *f; _ufc_form = boost::shared_ptr(new poisson2d_3_form_1()); } // Destructor ~Form_L() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { if (name == "f") return 0; dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { switch (i) { case 0: return "f"; } dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return "unnamed"; } // Typedefs typedef Form_L_FunctionSpace_0 TestSpace; typedef Form_L_FunctionSpace_1 CoefficientSpace_f; // Coefficients dolfin::CoefficientAssigner f; }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_L LinearForm; typedef Form_L ResidualForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/convergence/cpp/main.cpp0000644000175000017500000001471612263014601021210 0ustar johannrjohannr// Copyright (C) 2005-2010 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2005 // Last changed: 2011-09-21 #include #include "Poisson2D_1.h" #include "Poisson2D_2.h" #include "Poisson2D_3.h" #include "Poisson2D_4.h" #include "Poisson2D_5.h" #include "Poisson3D_1.h" #include "Poisson3D_2.h" #include "Poisson3D_3.h" #include "Poisson3D_4.h" #include "Poisson3D_5.h" using namespace dolfin; // Boundary condition class DirichletBoundary : public SubDomain { bool inside(const Array& x, bool on_boundary) const { return on_boundary; } }; // Right-hand side, 2D class Source2D : public Expression { void eval(Array& values, const Array& x) const { values[0] = 2.0*DOLFIN_PI*DOLFIN_PI*sin(DOLFIN_PI*x[0])*sin(DOLFIN_PI*x[1]); } }; // Right-hand side, 3D class Source3D : public Expression { void eval(Array& values, const Array& x) const { values[0] = 3.0*DOLFIN_PI*DOLFIN_PI*sin(DOLFIN_PI*x[0])*sin(DOLFIN_PI*x[1])*sin(DOLFIN_PI*x[2]); } }; // Solve equation and compute error, 2D double solve2D(int q, int n) { printf("Solving Poisson's equation in 2D for q = %d, n = %d.\n", q, n); // Set up problem UnitSquareMesh mesh(n, n); Source2D f; Constant zero(0.0); // Choose forms Form* a = 0; Form* L = 0; FunctionSpace* V = 0; switch (q) { case 1: V = new Poisson2D_1::FunctionSpace(mesh); a = new Poisson2D_1::BilinearForm(*V, *V); L = new Poisson2D_1::LinearForm(*V, f); break; case 2: V = new Poisson2D_2::FunctionSpace(mesh); a = new Poisson2D_2::BilinearForm(*V, *V); L = new Poisson2D_2::LinearForm(*V, f); break; case 3: V = new Poisson2D_3::FunctionSpace(mesh); a = new Poisson2D_3::BilinearForm(*V, *V); L = new Poisson2D_3::LinearForm(*V, f); break; case 4: V = new Poisson2D_4::FunctionSpace(mesh); a = new Poisson2D_4::BilinearForm(*V, *V); L = new Poisson2D_4::LinearForm(*V, f); break; case 5: V = new Poisson2D_5::FunctionSpace(mesh); a = new Poisson2D_5::BilinearForm(*V, *V); L = new Poisson2D_5::LinearForm(*V, f); break; default: error("Forms not compiled for q = %d.", q); } // Set up boundary conditions DirichletBoundary boundary; DirichletBC bc(*V, zero, boundary); // Discretize equation Matrix A; Vector x, b; assemble(A, *a); assemble(b, *L); bc.apply(A, b); // Solve the linear system KrylovSolver solver("gmres"); solver.parameters["relative_tolerance"] = 1e-14; solver.solve(A, x, b); // Compute maximum norm of error double emax = 0.0; std::vector U; x.get_local(U); for (VertexIterator v(mesh); !v.end(); ++v) { const Point p = v->point(); const double u = sin(DOLFIN_PI*p.x())*sin(DOLFIN_PI*p.y()); const double e = std::abs(U[v->index()] - u); emax = std::max(emax, e); } delete a; delete L; delete V; return emax; } // Solve equation and compute error, 3D double solve3D(int q, int n) { printf("Solving Poisson's equation in 3D for q = %d, n = %d.\n", q, n); // Set up problem UnitCubeMesh mesh(n, n, n); Source3D f; Constant zero(0.0); // Choose forms Form* a = 0; Form* L = 0; FunctionSpace* V = 0; switch (q) { case 1: V = new Poisson3D_1::FunctionSpace(mesh); a = new Poisson3D_1::BilinearForm(*V, *V); L = new Poisson3D_1::LinearForm(*V, f); break; case 2: V = new Poisson3D_2::FunctionSpace(mesh); a = new Poisson3D_2::BilinearForm(*V, *V); L = new Poisson3D_2::LinearForm(*V, f); break; case 3: V = new Poisson3D_3::FunctionSpace(mesh); a = new Poisson3D_3::BilinearForm(*V, *V); L = new Poisson3D_3::LinearForm(*V, f); break; case 4: V = new Poisson3D_4::FunctionSpace(mesh); a = new Poisson3D_4::BilinearForm(*V, *V); L = new Poisson3D_4::LinearForm(*V, f); break; case 5: V = new Poisson3D_5::FunctionSpace(mesh); a = new Poisson3D_5::BilinearForm(*V, *V); L = new Poisson3D_5::LinearForm(*V, f); break; default: error("Forms not compiled for q = %d.", q); } // Set up boundary conditions DirichletBoundary boundary; DirichletBC bc(*V, zero, boundary); // Discretize equation Matrix A; Vector x, b; assemble(A, *a); assemble(b, *L); bc.apply(A, b); // Solve the linear system KrylovSolver solver("gmres"); solver.parameters["relative_tolerance"] = 1e-14; solver.solve(A, x, b); // Compute maximum norm of error double emax = 0.0; std::vector U; x.get_local(U); for (VertexIterator v(mesh); !v.end(); ++v) { const Point p = v->point(); const double u = sin(DOLFIN_PI*p.x())*sin(DOLFIN_PI*p.y())*sin(DOLFIN_PI*p.z()); const double e = std::abs(U[v->index()] - u); emax = std::max(emax, e); } delete a; delete L; delete V; return emax; } int main() { set_log_active(false); const int qmax = 5; const int num_meshes = 3; double e2D[qmax][num_meshes]; double e3D[qmax][num_meshes]; // Compute errors in 2D for (int q = 1; q <= qmax; q++) { int n = 2; for (int i = 0; i < num_meshes; i++) { e2D[q - 1][i] = solve2D(q, n); n *= 2; } } // Compute errors in 3D for (int q = 1; q <= qmax; q++) { int n = 2; for (int i = 0; i < num_meshes; i++) { e3D[q - 1][i] = solve3D(q, n); n *= 2; } } // Write errors in 2D printf("\nMaximum norm error in 2D:\n"); printf("-------------------------\n"); for (int q = 1; q <= qmax; q++) { printf("q = %d:", q); for (int i = 0; i < num_meshes; i++) printf(" %.3e", e2D[q - 1][i]); printf("\n"); } // Write errors in 3D printf("\nMaximum norm error in 3D:\n"); printf("-------------------------\n"); for (int q = 1; q <= qmax; q++) { printf("q = %d:", q); for (int i = 0; i < num_meshes; i++) printf(" %.3e", e3D[q - 1][i]); printf("\n"); } } dolfin-1.3.0/bench/fem/convergence/cpp/Poisson2D_5.cpp0000644000175000017500000215634612263015056022345 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: True #include "Poisson2D_5.h" /// Constructor poisson2d_5_finite_element_0::poisson2d_5_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor poisson2d_5_finite_element_0::~poisson2d_5_finite_element_0() { // Do nothing } /// Return a string identifying the finite element const char* poisson2d_5_finite_element_0::signature() const { return "FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 5, None)"; } /// Return the cell shape ufc::shape poisson2d_5_finite_element_0::cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape std::size_t poisson2d_5_finite_element_0::topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape std::size_t poisson2d_5_finite_element_0::geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space std::size_t poisson2d_5_finite_element_0::space_dimension() const { return 21; } /// Return the rank of the value space std::size_t poisson2d_5_finite_element_0::value_rank() const { return 0; } /// Return the dimension of the value space for axis i std::size_t poisson2d_5_finite_element_0::value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell void poisson2d_5_finite_element_0::evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0154328860973251, -0.00945067404923486, -0.00545634920634915, 0.0301875307266957, 0.0233831607535234, 0.013500274155551, -0.0231997605826757, -0.0196073763651313, -0.0151878084249949, -0.00876868528257128, 0.0213898651255978, 0.0188640878998484, 0.0159430641501296, 0.0123494443881937, 0.00712995504186596, -0.0179891757560038, -0.0162718217101153, -0.0143503978743156, -0.0121282998205249, -0.00939454064454067, -0.00542394057003844}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0154328860973254, 0.00945067404923492, -0.00545634920634924, 0.0301875307266957, -0.0233831607535234, 0.013500274155551, 0.0231997605826757, -0.0196073763651313, 0.0151878084249949, -0.00876868528257126, 0.0213898651255978, -0.0188640878998484, 0.0159430641501296, -0.0123494443881937, 0.00712995504186593, 0.0179891757560038, -0.0162718217101153, 0.0143503978743156, -0.0121282998205248, 0.00939454064454064, -0.00542394057003842}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0154328860973254, 0.0, 0.0109126984126983, 0.0, 0.0, 0.0405008224666531, 0.0, 0.0, 0.0, 0.0350747411302851, 0.0, 0.0, 0.0, 0.0, 0.0356497752093297, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0325436434202305}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.035074741130285, 0.126008987323133, -0.0843253968253967, 0.101882916202598, -0.0286443719230662, 0.00202504112333267, 0.0773325352755858, -0.0261431684868418, 0.0, 0.00584579018838085, 0.0356497752093297, 0.0125760585998989, -0.0385290716961465, 0.0442521757243607, -0.0297081460077747, 0.0, 0.0325436434202305, -0.0516614323475361, 0.0582158391385193, -0.0526094276094276, 0.0325436434202305}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302852, -0.0329341671412734, 0.121527777777778, -0.0113203240225109, 0.075410693430113, -0.0222754523566592, 0.0, 0.104572673947367, -0.101252056166633, 0.0584579018838085, 0.0, 0.0565922636995452, -0.0093001207542422, -0.0401356942616295, 0.0415914044108846, 0.0, 0.0, 0.0516614323475361, -0.101877718492409, 0.118371212121212, -0.0813591085505763}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302852, 0.0887790592503888, -0.089285714285714, 0.0301875307266956, 0.0432588473940182, -0.0594012062844245, 0.0, 0.0261431684868417, 0.101252056166633, -0.116915803767617, 0.0, 0.0, 0.074400966033938, -0.0308736109704842, -0.0118832584031099, 0.0, 0.0, 0.0, 0.0679184789949393, -0.131523569023569, 0.108478811400768}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302851, -0.010023442173431, 0.151289682539683, 0.0, 0.0502737956200754, 0.093151891673302, 0.0, 0.0, 0.0506260280833163, 0.0643036920721894, 0.0, 0.0, 0.0, 0.0720384255977965, -0.0237665168062197, 0.0, 0.0, 0.0, 0.0, 0.0657617845117846, -0.0813591085505764}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.035074741130285, -0.126008987323133, -0.0843253968253969, 0.101882916202598, 0.0286443719230662, 0.00202504112333272, -0.0773325352755858, -0.0261431684868417, 0.0, 0.00584579018838084, 0.0356497752093296, -0.0125760585998989, -0.0385290716961465, -0.0442521757243607, -0.0297081460077748, 0.0, 0.0325436434202305, 0.051661432347536, 0.0582158391385193, 0.0526094276094276, 0.0325436434202305}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302848, 0.0329341671412733, 0.121527777777778, -0.0113203240225108, -0.075410693430113, -0.0222754523566593, 0.0, 0.104572673947367, 0.101252056166633, 0.0584579018838085, 0.0, -0.0565922636995451, -0.00930012075424217, 0.0401356942616295, 0.0415914044108847, 0.0, 0.0, -0.0516614323475361, -0.101877718492409, -0.118371212121212, -0.0813591085505763}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302853, -0.0887790592503889, -0.0892857142857143, 0.0301875307266957, -0.0432588473940182, -0.0594012062844245, 0.0, 0.0261431684868417, -0.101252056166633, -0.116915803767617, 0.0, 0.0, 0.074400966033938, 0.0308736109704842, -0.01188325840311, 0.0, 0.0, 0.0, 0.0679184789949392, 0.131523569023569, 0.108478811400768}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.035074741130285, 0.0100234421734312, 0.151289682539683, 0.0, -0.0502737956200753, 0.0931518916733021, 0.0, 0.0, -0.0506260280833163, 0.0643036920721894, 0.0, 0.0, 0.0, -0.0720384255977964, -0.0237665168062197, 0.0, 0.0, 0.0, 0.0, -0.0657617845117846, -0.0813591085505764}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302855, -0.136032429496563, -0.0669642857142857, 0.0369797251402022, 0.0789181675431415, 0.0600762199922021, -0.00773325352755864, -0.0457505448519731, -0.055688630891648, -0.0379976362244755, -0.0641695953767935, -0.012576058599899, 0.017271652829307, 0.0277862498734358, 0.0202015392852868, 0.0899458787800191, 0.0488154651303458, 0.0200905570240418, 0.00242565996410494, -0.0056367243867244, -0.00542394057003842}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 12: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302855, 0.121713226391662, -0.0322420634920635, -0.0671672558668979, -0.0321518460360947, 0.0276755620188796, 0.139198563496054, 0.0653579212171044, -0.0101252056166633, -0.0292289509419042, 0.0427797302511957, -0.0565922636995451, -0.0332147169794367, 0.00926208329114529, 0.0202015392852869, -0.179891757560038, -0.0325436434202306, 0.0114803182994524, 0.00970263985641995, -0.00187890812890815, -0.00542394057003845}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 13: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302854, -0.121713226391662, -0.0322420634920636, -0.0671672558668978, 0.0321518460360947, 0.0276755620188797, -0.139198563496054, 0.0653579212171044, 0.0101252056166633, -0.0292289509419043, 0.0427797302511955, 0.0565922636995451, -0.0332147169794366, -0.00926208329114529, 0.0202015392852868, 0.179891757560038, -0.0325436434202305, -0.0114803182994525, 0.00970263985641989, 0.00187890812890815, -0.0054239405700384}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 14: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.035074741130285, 0.136032429496564, -0.0669642857142856, 0.0369797251402022, -0.0789181675431414, 0.060076219992202, 0.00773325352755864, -0.0457505448519731, 0.0556886308916479, -0.0379976362244755, -0.0641695953767934, 0.0125760585998989, 0.017271652829307, -0.0277862498734358, 0.0202015392852869, -0.0899458787800192, 0.0488154651303458, -0.0200905570240418, 0.00242565996410498, 0.0056367243867244, -0.00542394057003848}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 15: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.280597929042281, -0.214788046573522, -0.124007936507937, 0.0905625921800871, 0.116915803767617, 0.0, 0.154665070551172, 0.0784295054605253, 0.101252056166633, 0.0818410626373319, -0.142599100837319, 0.0251521171997979, -0.0318861283002592, -0.107028518031012, -0.0950660672248791, 0.0, -0.130174573680922, -0.103322864695072, -0.0291079195692595, 0.0263047138047138, 0.0325436434202306}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 16: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302851, 0.0, -0.124007936507936, -0.38489101676537, 0.0, 0.101252056166633, 0.0, -0.104572673947367, 0.0, 0.0467663215070469, 0.213898651255978, 0.0, 0.140830399992811, 0.0, -0.0950660672248791, 0.0, 0.195261860521383, 0.0, -0.0582158391385195, 0.0, 0.0325436434202304}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 17: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.280597929042281, 0.214788046573521, -0.124007936507936, 0.090562592180087, -0.116915803767617, 0.0, -0.154665070551171, 0.0784295054605253, -0.101252056166633, 0.0818410626373318, -0.142599100837319, -0.0251521171997978, -0.0318861283002592, 0.107028518031012, -0.0950660672248791, 0.0, -0.130174573680922, 0.103322864695072, -0.0291079195692596, -0.0263047138047138, 0.0325436434202306}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 18: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302851, -0.107394023286761, 0.0620039682539684, 0.0113203240225108, -0.306903984889995, -0.253130140416582, 0.0, -0.104572673947367, 0.0, 0.0467663215070467, 0.0, 0.169776791098635, 0.00930012075424214, 0.126581804978985, 0.172307246845093, 0.0, 0.0, 0.154984297042608, 0.101877718492409, -0.0394570707070707, -0.0813591085505763}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 19: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302851, 0.107394023286761, 0.0620039682539682, 0.0113203240225109, 0.306903984889995, -0.253130140416582, 0.0, -0.104572673947367, 0.0, 0.0467663215070468, 0.0, -0.169776791098635, 0.00930012075424223, -0.126581804978985, 0.172307246845093, 0.0, 0.0, -0.154984297042608, 0.101877718492409, 0.0394570707070707, -0.0813591085505763}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 20: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.280597929042281, 0.0, 0.248015873015873, -0.0603750614533913, 0.0, 0.13500274155551, 0.0, -0.0522863369736835, 0.0, -0.210448446781711, 0.0, 0.0, -0.148801932067876, 0.0, -0.142599100837319, 0.0, 0.0, 0.0, -0.135836957989878, 0.0, 0.108478811400768}; // Compute value(s) for (unsigned int r = 0; r < 21; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell void poisson2d_5_finite_element_0::evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 21; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell void poisson2d_5_finite_element_0::evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 5) { return ; } // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[32][5]; for (unsigned int row = 0; row < 32; row++) { for (unsigned int col = 0; col < 5; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 1) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[2][2] = {{K[0], K[1]}, {K[2], K[3]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[32][32]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0154328860973251, -0.00945067404923486, -0.00545634920634915, 0.0301875307266957, 0.0233831607535234, 0.013500274155551, -0.0231997605826757, -0.0196073763651313, -0.0151878084249949, -0.00876868528257128, 0.0213898651255978, 0.0188640878998484, 0.0159430641501296, 0.0123494443881937, 0.00712995504186596, -0.0179891757560038, -0.0162718217101153, -0.0143503978743156, -0.0121282998205249, -0.00939454064454067, -0.00542394057003844}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0154328860973254, 0.00945067404923492, -0.00545634920634924, 0.0301875307266957, -0.0233831607535234, 0.013500274155551, 0.0231997605826757, -0.0196073763651313, 0.0151878084249949, -0.00876868528257126, 0.0213898651255978, -0.0188640878998484, 0.0159430641501296, -0.0123494443881937, 0.00712995504186593, 0.0179891757560038, -0.0162718217101153, 0.0143503978743156, -0.0121282998205248, 0.00939454064454064, -0.00542394057003842}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0154328860973254, 0.0, 0.0109126984126983, 0.0, 0.0, 0.0405008224666531, 0.0, 0.0, 0.0, 0.0350747411302851, 0.0, 0.0, 0.0, 0.0, 0.0356497752093297, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0325436434202305}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.035074741130285, 0.126008987323133, -0.0843253968253967, 0.101882916202598, -0.0286443719230662, 0.00202504112333267, 0.0773325352755858, -0.0261431684868418, 0.0, 0.00584579018838085, 0.0356497752093297, 0.0125760585998989, -0.0385290716961465, 0.0442521757243607, -0.0297081460077747, 0.0, 0.0325436434202305, -0.0516614323475361, 0.0582158391385193, -0.0526094276094276, 0.0325436434202305}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302852, -0.0329341671412734, 0.121527777777778, -0.0113203240225109, 0.075410693430113, -0.0222754523566592, 0.0, 0.104572673947367, -0.101252056166633, 0.0584579018838085, 0.0, 0.0565922636995452, -0.0093001207542422, -0.0401356942616295, 0.0415914044108846, 0.0, 0.0, 0.0516614323475361, -0.101877718492409, 0.118371212121212, -0.0813591085505763}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302852, 0.0887790592503888, -0.089285714285714, 0.0301875307266956, 0.0432588473940182, -0.0594012062844245, 0.0, 0.0261431684868417, 0.101252056166633, -0.116915803767617, 0.0, 0.0, 0.074400966033938, -0.0308736109704842, -0.0118832584031099, 0.0, 0.0, 0.0, 0.0679184789949393, -0.131523569023569, 0.108478811400768}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302851, -0.010023442173431, 0.151289682539683, 0.0, 0.0502737956200754, 0.093151891673302, 0.0, 0.0, 0.0506260280833163, 0.0643036920721894, 0.0, 0.0, 0.0, 0.0720384255977965, -0.0237665168062197, 0.0, 0.0, 0.0, 0.0, 0.0657617845117846, -0.0813591085505764}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.035074741130285, -0.126008987323133, -0.0843253968253969, 0.101882916202598, 0.0286443719230662, 0.00202504112333272, -0.0773325352755858, -0.0261431684868417, 0.0, 0.00584579018838084, 0.0356497752093296, -0.0125760585998989, -0.0385290716961465, -0.0442521757243607, -0.0297081460077748, 0.0, 0.0325436434202305, 0.051661432347536, 0.0582158391385193, 0.0526094276094276, 0.0325436434202305}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302848, 0.0329341671412733, 0.121527777777778, -0.0113203240225108, -0.075410693430113, -0.0222754523566593, 0.0, 0.104572673947367, 0.101252056166633, 0.0584579018838085, 0.0, -0.0565922636995451, -0.00930012075424217, 0.0401356942616295, 0.0415914044108847, 0.0, 0.0, -0.0516614323475361, -0.101877718492409, -0.118371212121212, -0.0813591085505763}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302853, -0.0887790592503889, -0.0892857142857143, 0.0301875307266957, -0.0432588473940182, -0.0594012062844245, 0.0, 0.0261431684868417, -0.101252056166633, -0.116915803767617, 0.0, 0.0, 0.074400966033938, 0.0308736109704842, -0.01188325840311, 0.0, 0.0, 0.0, 0.0679184789949392, 0.131523569023569, 0.108478811400768}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.035074741130285, 0.0100234421734312, 0.151289682539683, 0.0, -0.0502737956200753, 0.0931518916733021, 0.0, 0.0, -0.0506260280833163, 0.0643036920721894, 0.0, 0.0, 0.0, -0.0720384255977964, -0.0237665168062197, 0.0, 0.0, 0.0, 0.0, -0.0657617845117846, -0.0813591085505764}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302855, -0.136032429496563, -0.0669642857142857, 0.0369797251402022, 0.0789181675431415, 0.0600762199922021, -0.00773325352755864, -0.0457505448519731, -0.055688630891648, -0.0379976362244755, -0.0641695953767935, -0.012576058599899, 0.017271652829307, 0.0277862498734358, 0.0202015392852868, 0.0899458787800191, 0.0488154651303458, 0.0200905570240418, 0.00242565996410494, -0.0056367243867244, -0.00542394057003842}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 12: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302855, 0.121713226391662, -0.0322420634920635, -0.0671672558668979, -0.0321518460360947, 0.0276755620188796, 0.139198563496054, 0.0653579212171044, -0.0101252056166633, -0.0292289509419042, 0.0427797302511957, -0.0565922636995451, -0.0332147169794367, 0.00926208329114529, 0.0202015392852869, -0.179891757560038, -0.0325436434202306, 0.0114803182994524, 0.00970263985641995, -0.00187890812890815, -0.00542394057003845}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 13: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302854, -0.121713226391662, -0.0322420634920636, -0.0671672558668978, 0.0321518460360947, 0.0276755620188797, -0.139198563496054, 0.0653579212171044, 0.0101252056166633, -0.0292289509419043, 0.0427797302511955, 0.0565922636995451, -0.0332147169794366, -0.00926208329114529, 0.0202015392852868, 0.179891757560038, -0.0325436434202305, -0.0114803182994525, 0.00970263985641989, 0.00187890812890815, -0.0054239405700384}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 14: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.035074741130285, 0.136032429496564, -0.0669642857142856, 0.0369797251402022, -0.0789181675431414, 0.060076219992202, 0.00773325352755864, -0.0457505448519731, 0.0556886308916479, -0.0379976362244755, -0.0641695953767934, 0.0125760585998989, 0.017271652829307, -0.0277862498734358, 0.0202015392852869, -0.0899458787800192, 0.0488154651303458, -0.0200905570240418, 0.00242565996410498, 0.0056367243867244, -0.00542394057003848}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 15: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.280597929042281, -0.214788046573522, -0.124007936507937, 0.0905625921800871, 0.116915803767617, 0.0, 0.154665070551172, 0.0784295054605253, 0.101252056166633, 0.0818410626373319, -0.142599100837319, 0.0251521171997979, -0.0318861283002592, -0.107028518031012, -0.0950660672248791, 0.0, -0.130174573680922, -0.103322864695072, -0.0291079195692595, 0.0263047138047138, 0.0325436434202306}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 16: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302851, 0.0, -0.124007936507936, -0.38489101676537, 0.0, 0.101252056166633, 0.0, -0.104572673947367, 0.0, 0.0467663215070469, 0.213898651255978, 0.0, 0.140830399992811, 0.0, -0.0950660672248791, 0.0, 0.195261860521383, 0.0, -0.0582158391385195, 0.0, 0.0325436434202304}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 17: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.280597929042281, 0.214788046573521, -0.124007936507936, 0.090562592180087, -0.116915803767617, 0.0, -0.154665070551171, 0.0784295054605253, -0.101252056166633, 0.0818410626373318, -0.142599100837319, -0.0251521171997978, -0.0318861283002592, 0.107028518031012, -0.0950660672248791, 0.0, -0.130174573680922, 0.103322864695072, -0.0291079195692596, -0.0263047138047138, 0.0325436434202306}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 18: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302851, -0.107394023286761, 0.0620039682539684, 0.0113203240225108, -0.306903984889995, -0.253130140416582, 0.0, -0.104572673947367, 0.0, 0.0467663215070467, 0.0, 0.169776791098635, 0.00930012075424214, 0.126581804978985, 0.172307246845093, 0.0, 0.0, 0.154984297042608, 0.101877718492409, -0.0394570707070707, -0.0813591085505763}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 19: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.0350747411302851, 0.107394023286761, 0.0620039682539682, 0.0113203240225109, 0.306903984889995, -0.253130140416582, 0.0, -0.104572673947367, 0.0, 0.0467663215070468, 0.0, -0.169776791098635, 0.00930012075424223, -0.126581804978985, 0.172307246845093, 0.0, 0.0, -0.154984297042608, 0.101877718492409, 0.0394570707070707, -0.0813591085505763}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 20: { // Array of basisvalues double basisvalues[21] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[10] = basisvalues[6]*1.75*tmp0 - basisvalues[3]*0.75*tmp2; basisvalues[15] = basisvalues[10]*1.8*tmp0 - basisvalues[6]*0.8*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[11] = basisvalues[6]*(3.5 + 4.5*Y); basisvalues[16] = basisvalues[10]*(4.5 + 5.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[14] = basisvalues[9]*(0.0285714285714286 + Y*1.8) - basisvalues[5]*0.771428571428571; basisvalues[20] = basisvalues[14]*(0.0185185185185185 + Y*1.83333333333333) - basisvalues[9]*0.814814814814815; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[13] = basisvalues[8]*(0.285714285714286 + Y*2.0) - basisvalues[4]*0.714285714285714; basisvalues[19] = basisvalues[13]*(0.178571428571429 + Y*1.96428571428571) - basisvalues[8]*0.785714285714286; basisvalues[12] = basisvalues[7]*(1.02040816326531 + Y*2.57142857142857) - basisvalues[3]*0.551020408163265; basisvalues[18] = basisvalues[12]*(0.578703703703704 + Y*2.29166666666667) - basisvalues[7]*0.712962962962963; basisvalues[17] = basisvalues[11]*(1.51234567901235 + Y*3.05555555555556) - basisvalues[6]*0.54320987654321; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[14] *= std::sqrt(2.5); basisvalues[20] *= std::sqrt(3.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[13] *= std::sqrt(7.5); basisvalues[19] *= std::sqrt(9.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[12] *= std::sqrt(12.5); basisvalues[18] *= std::sqrt(15.0); basisvalues[6] *= std::sqrt(14.0); basisvalues[11] *= std::sqrt(17.5); basisvalues[17] *= std::sqrt(21.0); basisvalues[10] *= std::sqrt(22.5); basisvalues[16] *= std::sqrt(27.0); basisvalues[15] *= std::sqrt(33.0); // Table(s) of coefficients static const double coefficients0[21] = \ {0.280597929042281, 0.0, 0.248015873015873, -0.0603750614533913, 0.0, 0.13500274155551, 0.0, -0.0522863369736835, 0.0, -0.210448446781711, 0.0, 0.0, -0.148801932067876, 0.0, -0.142599100837319, 0.0, 0.0, 0.0, -0.135836957989878, 0.0, 0.108478811400768}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556637, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.28012053682392e-14, 9.48683298050514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.00000000000001, 0.0, 7.07106781186548, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941916, 13.6626010212795, 0.0, 0.611010092660787, 0.0, -1.58060166912796e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.1349006293932e-14, 0.0, 0.0, 0.0, 0.0}, {-4.52415882534751e-14, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690616, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, -1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1.11161080340594e-14, 10.9544511501033, 1.4432899320127e-14, 0.0, -3.83325938999963, 0.0, 17.7482393492988, 0.0, 0.553283335172473, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.09970309129559e-14, 0.0, 0.0, 0.0}, {4.73286382647971, 0.0, 3.34664010613632, 4.36435780471985, 0.0, -5.07468037933238, 0.0, 17.0084012854152, 1.37294759591358e-14, 1.52127765851135, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.08721928629529e-14, 2.44948974278319, 0.0, 0.0, 9.14285714285714, 0.0, 0.0, 0.0, 14.8461497791618, 1.06581410364015e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.77635683940025e-14, 0.0}, {3.09838667696592, 0.0, 7.66811580507232, 0.0, 0.0, 10.733126291999, 0.0, 0.0, 1.05990490519578e-14, 9.2951600308978, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.41602560309063, 0.0, -4.37680963545756, 15.7321327225523, 0.0, 2.01017818278147, -1.42355033138623e-14, -4.03686713879667, 0.0, -0.515811962199109, 21.7990825495019, 0.0, 0.45133546692423, 0.0, 0.0576695305542373, 0.0, 0.0, 0.0, -1.01130026781332e-14, 0.0, 0.0}, {2.22599716437344e-14, 6.85714285714284, 2.1316282072803e-14, 0.0, 9.97292252418865, 0.0, 4.32049379893856, 2.11115961411461e-14, -7.27309832077594, 0.0, 0.0, 21.2540192277445, 0.0, 1.49078803979367, 0.0, 0.0, 0.0, -1.59753342319967e-14, 0.0, 0.0, 0.0}, {4.32049379893859, 0.0, 5.935526614419, 1.79284291400159, 0.0, -0.320713490294921, 0.0, 9.20087412456474, 0.0, -5.9663961985342, 0.0, 0.0, 19.8022632451351, 0.0, 2.5302403842553, 0.0, 0.0, 0.0, 0.0, 0.0, 1.06581410364015e-14}, {1.60982338570648e-14, 1.53330375599987, 1.06581410364015e-14, 0.0, 6.33793245113118, 0.0, 0.0, 1.0406246085292e-14, 13.5526185435788, 0.0, 0.0, 0.0, 0.0, 16.6675169851115, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.82842712474619, 0.0, 7.31428571428573, 0.0, 0.0, 11.337638238025, 0.0, 0.0, 0.0, 12.9299525702683, 0.0, 0.0, 0.0, 0.0, 9.93858693195777, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13242748511766e-14}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[21][21] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278319, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.2426406871193, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.99999999999999, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.30940107675851, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106458, 5.18459255872629, -1.49666295470958, 6.83130051063973, -1.05830052442583, 0.305505046330391, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.23606797749977, 2.19089023002066, 2.52982212813471, 8.08290376865476, 6.26099033699942, -1.80739222823013, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.73205080756886, -5.09116882454314, 3.91918358845308, 0.0, 9.69948452238573, 4.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.05068851288609e-14, 0.0}, {4.99999999999999, 0.0, -2.8284271247462, 0.0, 0.0, 12.1243556529822, 0.0, 0.0, 0.0, -1.24344978758018e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.68328157299974, 5.47722557505165, -1.89736659610102, 7.4230748895809, -1.91662969499981, 0.663940002206988, 8.87411967464942, -1.07142857142857, 0.276641667586237, -0.0958314847499869, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.36643191323984, 2.89827534923788, 1.67332005306817, 2.18217890235993, 5.74704893215393, -2.53734018966619, 10.062305898749, 8.50420064270762, -2.19577516413421, 0.760638829255681, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.0, 1.22474487139161, 3.53553390593274, -7.37711113563318, 4.57142857142857, 1.64957219768464, 0.0, 11.4997781699989, 7.42307488958092, -2.57142857142857, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.02982334453152e-14, 0.0, 0.0, 1.07088008761969e-14, 0.0}, {1.54919333848297, 6.64078308635361, 3.83405790253617, 0.0, -6.19677335393188, 5.3665631459995, 0.0, 0.0, 13.4164078649988, 4.6475800154489, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.43533881816581e-14, 0.0}, {-3.57770876399966, 0.0, 8.85437744847148, 0.0, 0.0, -3.09838667696593, 0.0, 0.0, 0.0, 16.0996894379985, 0.0, 0.0, 0.0, 0.0, 1.37112543541207e-14, 0.0, 0.0, 0.0, 0.0, 0.0, 1.86795023893183e-14}, {2.70801280154531, 5.6856424977521, -2.18840481772877, 7.86606636127614, -2.61129805863298, 1.00508909139073, 9.55297122675762, -2.01843356939833, 0.670059394260475, -0.257905981099551, 10.899541274751, -1.06805465250648, 0.225667733462113, -0.0749149177264333, 0.0288347652771187, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.4494897427832, 3.42857142857143, 0.989743318610804, 3.04933917230523, 4.98646126209433, -2.72741187029098, 2.16024689946928, 8.34624849531683, -3.63654916038797, 1.51635079315151, 12.0498962651136, 10.6270096138723, -2.24536559755125, 0.745394019896834, -0.286902292026514, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.16024689946931, 1.8142294704443, 2.96776330720951, 0.896421457000798, 5.41604758366941, -0.160356745147462, -9.5257934441568, 4.60043706228237, 5.34522483824849, -2.9831980992671, 0.0, 13.3887736279041, 9.90113162256756, -3.28687867566958, 1.26512019212765, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.82574185835054, 0.766651877999931, 3.83609779052925, 8.63680425592141, 3.16896622556559, 3.65920700676628, 0.0, -8.74817765279706, 6.7763092717894, 0.521640530957307, 0.0, 0.0, 15.0623703313921, 8.33375849255573, -3.20766513935892, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {1.41421356237311, -6.73025456655335, 3.65714285714288, 0.0, 9.45502781700869, 5.66881911901251, 0.0, 1.16438404243701e-14, -6.99854212223765, 6.46497628513417, 0.0, 0.0, 0.0, 17.2141375215909, 4.96929346597889, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.7154760664941, -1.34315856375784e-14, -4.61880215351698, 0.0, 0.0, 12.7279220613579, 0.0, 0.0, -2.28833187993595e-14, -3.26598632371088, 0.0, 0.0, 0.0, 0.0, 20.0831604418561, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[32]; for (unsigned int r = 0; r < 32; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[21][21] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 21; t++) { for (unsigned int u = 0; u < 21; u++) { for (unsigned int tu = 0; tu < 21; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 21; s++) { for (unsigned int t = 0; t < 21; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell void poisson2d_5_finite_element_0::evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 21; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 5) { return ; } // Helper variable to hold values of a single dof. double dof_values[32]; for (unsigned int r = 0; r < 32; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 21; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f double poisson2d_5_finite_element_0::evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = 0.8*vertex_coordinates[2] + 0.2*vertex_coordinates[4]; y[1] = 0.8*vertex_coordinates[3] + 0.2*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = 0.6*vertex_coordinates[2] + 0.4*vertex_coordinates[4]; y[1] = 0.6*vertex_coordinates[3] + 0.4*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 5: { y[0] = 0.4*vertex_coordinates[2] + 0.6*vertex_coordinates[4]; y[1] = 0.4*vertex_coordinates[3] + 0.6*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 6: { y[0] = 0.2*vertex_coordinates[2] + 0.8*vertex_coordinates[4]; y[1] = 0.2*vertex_coordinates[3] + 0.8*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 7: { y[0] = 0.8*vertex_coordinates[0] + 0.2*vertex_coordinates[4]; y[1] = 0.8*vertex_coordinates[1] + 0.2*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 8: { y[0] = 0.6*vertex_coordinates[0] + 0.4*vertex_coordinates[4]; y[1] = 0.6*vertex_coordinates[1] + 0.4*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 9: { y[0] = 0.4*vertex_coordinates[0] + 0.6*vertex_coordinates[4]; y[1] = 0.4*vertex_coordinates[1] + 0.6*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 10: { y[0] = 0.2*vertex_coordinates[0] + 0.8*vertex_coordinates[4]; y[1] = 0.2*vertex_coordinates[1] + 0.8*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 11: { y[0] = 0.8*vertex_coordinates[0] + 0.2*vertex_coordinates[2]; y[1] = 0.8*vertex_coordinates[1] + 0.2*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 12: { y[0] = 0.6*vertex_coordinates[0] + 0.4*vertex_coordinates[2]; y[1] = 0.6*vertex_coordinates[1] + 0.4*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 13: { y[0] = 0.4*vertex_coordinates[0] + 0.6*vertex_coordinates[2]; y[1] = 0.4*vertex_coordinates[1] + 0.6*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 14: { y[0] = 0.2*vertex_coordinates[0] + 0.8*vertex_coordinates[2]; y[1] = 0.2*vertex_coordinates[1] + 0.8*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 15: { y[0] = 0.6*vertex_coordinates[0] + 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[4]; y[1] = 0.6*vertex_coordinates[1] + 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 16: { y[0] = 0.4*vertex_coordinates[0] + 0.4*vertex_coordinates[2] + 0.2*vertex_coordinates[4]; y[1] = 0.4*vertex_coordinates[1] + 0.4*vertex_coordinates[3] + 0.2*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 17: { y[0] = 0.2*vertex_coordinates[0] + 0.6*vertex_coordinates[2] + 0.2*vertex_coordinates[4]; y[1] = 0.2*vertex_coordinates[1] + 0.6*vertex_coordinates[3] + 0.2*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 18: { y[0] = 0.4*vertex_coordinates[0] + 0.2*vertex_coordinates[2] + 0.4*vertex_coordinates[4]; y[1] = 0.4*vertex_coordinates[1] + 0.2*vertex_coordinates[3] + 0.4*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 19: { y[0] = 0.2*vertex_coordinates[0] + 0.4*vertex_coordinates[2] + 0.4*vertex_coordinates[4]; y[1] = 0.2*vertex_coordinates[1] + 0.4*vertex_coordinates[3] + 0.4*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 20: { y[0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[2] + 0.6*vertex_coordinates[4]; y[1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[3] + 0.6*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f void poisson2d_5_finite_element_0::evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = 0.8*vertex_coordinates[2] + 0.2*vertex_coordinates[4]; y[1] = 0.8*vertex_coordinates[3] + 0.2*vertex_coordinates[5]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = 0.6*vertex_coordinates[2] + 0.4*vertex_coordinates[4]; y[1] = 0.6*vertex_coordinates[3] + 0.4*vertex_coordinates[5]; f.evaluate(vals, y, c); values[4] = vals[0]; y[0] = 0.4*vertex_coordinates[2] + 0.6*vertex_coordinates[4]; y[1] = 0.4*vertex_coordinates[3] + 0.6*vertex_coordinates[5]; f.evaluate(vals, y, c); values[5] = vals[0]; y[0] = 0.2*vertex_coordinates[2] + 0.8*vertex_coordinates[4]; y[1] = 0.2*vertex_coordinates[3] + 0.8*vertex_coordinates[5]; f.evaluate(vals, y, c); values[6] = vals[0]; y[0] = 0.8*vertex_coordinates[0] + 0.2*vertex_coordinates[4]; y[1] = 0.8*vertex_coordinates[1] + 0.2*vertex_coordinates[5]; f.evaluate(vals, y, c); values[7] = vals[0]; y[0] = 0.6*vertex_coordinates[0] + 0.4*vertex_coordinates[4]; y[1] = 0.6*vertex_coordinates[1] + 0.4*vertex_coordinates[5]; f.evaluate(vals, y, c); values[8] = vals[0]; y[0] = 0.4*vertex_coordinates[0] + 0.6*vertex_coordinates[4]; y[1] = 0.4*vertex_coordinates[1] + 0.6*vertex_coordinates[5]; f.evaluate(vals, y, c); values[9] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.8*vertex_coordinates[4]; y[1] = 0.2*vertex_coordinates[1] + 0.8*vertex_coordinates[5]; f.evaluate(vals, y, c); values[10] = vals[0]; y[0] = 0.8*vertex_coordinates[0] + 0.2*vertex_coordinates[2]; y[1] = 0.8*vertex_coordinates[1] + 0.2*vertex_coordinates[3]; f.evaluate(vals, y, c); values[11] = vals[0]; y[0] = 0.6*vertex_coordinates[0] + 0.4*vertex_coordinates[2]; y[1] = 0.6*vertex_coordinates[1] + 0.4*vertex_coordinates[3]; f.evaluate(vals, y, c); values[12] = vals[0]; y[0] = 0.4*vertex_coordinates[0] + 0.6*vertex_coordinates[2]; y[1] = 0.4*vertex_coordinates[1] + 0.6*vertex_coordinates[3]; f.evaluate(vals, y, c); values[13] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.8*vertex_coordinates[2]; y[1] = 0.2*vertex_coordinates[1] + 0.8*vertex_coordinates[3]; f.evaluate(vals, y, c); values[14] = vals[0]; y[0] = 0.6*vertex_coordinates[0] + 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[4]; y[1] = 0.6*vertex_coordinates[1] + 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[5]; f.evaluate(vals, y, c); values[15] = vals[0]; y[0] = 0.4*vertex_coordinates[0] + 0.4*vertex_coordinates[2] + 0.2*vertex_coordinates[4]; y[1] = 0.4*vertex_coordinates[1] + 0.4*vertex_coordinates[3] + 0.2*vertex_coordinates[5]; f.evaluate(vals, y, c); values[16] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.6*vertex_coordinates[2] + 0.2*vertex_coordinates[4]; y[1] = 0.2*vertex_coordinates[1] + 0.6*vertex_coordinates[3] + 0.2*vertex_coordinates[5]; f.evaluate(vals, y, c); values[17] = vals[0]; y[0] = 0.4*vertex_coordinates[0] + 0.2*vertex_coordinates[2] + 0.4*vertex_coordinates[4]; y[1] = 0.4*vertex_coordinates[1] + 0.2*vertex_coordinates[3] + 0.4*vertex_coordinates[5]; f.evaluate(vals, y, c); values[18] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.4*vertex_coordinates[2] + 0.4*vertex_coordinates[4]; y[1] = 0.2*vertex_coordinates[1] + 0.4*vertex_coordinates[3] + 0.4*vertex_coordinates[5]; f.evaluate(vals, y, c); values[19] = vals[0]; y[0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[2] + 0.6*vertex_coordinates[4]; y[1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[3] + 0.6*vertex_coordinates[5]; f.evaluate(vals, y, c); values[20] = vals[0]; } /// Interpolate vertex values from dof values void poisson2d_5_finite_element_0::interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; } /// Map coordinate xhat from reference cell to coordinate x in cell void poisson2d_5_finite_element_0::map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell void poisson2d_5_finite_element_0::map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) std::size_t poisson2d_5_finite_element_0::num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) ufc::finite_element* poisson2d_5_finite_element_0::create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance ufc::finite_element* poisson2d_5_finite_element_0::create() const { return new poisson2d_5_finite_element_0(); } /// Constructor poisson2d_5_dofmap_0::poisson2d_5_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor poisson2d_5_dofmap_0::~poisson2d_5_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap const char* poisson2d_5_dofmap_0::signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 5, None)"; } /// Return true iff mesh entities of topological dimension d are needed bool poisson2d_5_dofmap_0::needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return true; break; } case 2: { return true; break; } } return false; } /// Return the topological dimension of the associated cell shape std::size_t poisson2d_5_dofmap_0::topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape std::size_t poisson2d_5_dofmap_0::geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space std::size_t poisson2d_5_dofmap_0::global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0] + 4*num_global_entities[1] + 6*num_global_entities[2]; } /// Return the dimension of the local finite element function space for a cell std::size_t poisson2d_5_dofmap_0::local_dimension() const { return 21; } /// Return the number of dofs on each cell facet std::size_t poisson2d_5_dofmap_0::num_facet_dofs() const { return 6; } /// Return the number of dofs associated with each cell entity of dimension d std::size_t poisson2d_5_dofmap_0::num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 4; break; } case 2: { return 6; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell void poisson2d_5_dofmap_0::tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; dofs[3] = offset + 4*c.entity_indices[1][0]; dofs[4] = offset + 4*c.entity_indices[1][0] + 1; dofs[5] = offset + 4*c.entity_indices[1][0] + 2; dofs[6] = offset + 4*c.entity_indices[1][0] + 3; dofs[7] = offset + 4*c.entity_indices[1][1]; dofs[8] = offset + 4*c.entity_indices[1][1] + 1; dofs[9] = offset + 4*c.entity_indices[1][1] + 2; dofs[10] = offset + 4*c.entity_indices[1][1] + 3; dofs[11] = offset + 4*c.entity_indices[1][2]; dofs[12] = offset + 4*c.entity_indices[1][2] + 1; dofs[13] = offset + 4*c.entity_indices[1][2] + 2; dofs[14] = offset + 4*c.entity_indices[1][2] + 3; offset += 4*num_global_entities[1]; dofs[15] = offset + 6*c.entity_indices[2][0]; dofs[16] = offset + 6*c.entity_indices[2][0] + 1; dofs[17] = offset + 6*c.entity_indices[2][0] + 2; dofs[18] = offset + 6*c.entity_indices[2][0] + 3; dofs[19] = offset + 6*c.entity_indices[2][0] + 4; dofs[20] = offset + 6*c.entity_indices[2][0] + 5; offset += 6*num_global_entities[2]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs void poisson2d_5_dofmap_0::tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; dofs[3] = 4; dofs[4] = 5; dofs[5] = 6; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 7; dofs[3] = 8; dofs[4] = 9; dofs[5] = 10; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 11; dofs[3] = 12; dofs[4] = 13; dofs[5] = 14; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) void poisson2d_5_dofmap_0::tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } } break; } case 1: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 3; dofs[1] = 4; dofs[2] = 5; dofs[3] = 6; break; } case 1: { dofs[0] = 7; dofs[1] = 8; dofs[2] = 9; dofs[3] = 10; break; } case 2: { dofs[0] = 11; dofs[1] = 12; dofs[2] = 13; dofs[3] = 14; break; } } break; } case 2: { if (i > 0) { throw std::runtime_error("i is larger than number of entities (0)"); } dofs[0] = 15; dofs[1] = 16; dofs[2] = 17; dofs[3] = 18; dofs[4] = 19; dofs[5] = 20; break; } } } /// Tabulate the coordinates of all dofs on a cell void poisson2d_5_dofmap_0::tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[1][0] = vertex_coordinates[2]; dof_coordinates[1][1] = vertex_coordinates[3]; dof_coordinates[2][0] = vertex_coordinates[4]; dof_coordinates[2][1] = vertex_coordinates[5]; dof_coordinates[3][0] = 0.8*vertex_coordinates[2] + 0.2*vertex_coordinates[4]; dof_coordinates[3][1] = 0.8*vertex_coordinates[3] + 0.2*vertex_coordinates[5]; dof_coordinates[4][0] = 0.6*vertex_coordinates[2] + 0.4*vertex_coordinates[4]; dof_coordinates[4][1] = 0.6*vertex_coordinates[3] + 0.4*vertex_coordinates[5]; dof_coordinates[5][0] = 0.4*vertex_coordinates[2] + 0.6*vertex_coordinates[4]; dof_coordinates[5][1] = 0.4*vertex_coordinates[3] + 0.6*vertex_coordinates[5]; dof_coordinates[6][0] = 0.2*vertex_coordinates[2] + 0.8*vertex_coordinates[4]; dof_coordinates[6][1] = 0.2*vertex_coordinates[3] + 0.8*vertex_coordinates[5]; dof_coordinates[7][0] = 0.8*vertex_coordinates[0] + 0.2*vertex_coordinates[4]; dof_coordinates[7][1] = 0.8*vertex_coordinates[1] + 0.2*vertex_coordinates[5]; dof_coordinates[8][0] = 0.6*vertex_coordinates[0] + 0.4*vertex_coordinates[4]; dof_coordinates[8][1] = 0.6*vertex_coordinates[1] + 0.4*vertex_coordinates[5]; dof_coordinates[9][0] = 0.4*vertex_coordinates[0] + 0.6*vertex_coordinates[4]; dof_coordinates[9][1] = 0.4*vertex_coordinates[1] + 0.6*vertex_coordinates[5]; dof_coordinates[10][0] = 0.2*vertex_coordinates[0] + 0.8*vertex_coordinates[4]; dof_coordinates[10][1] = 0.2*vertex_coordinates[1] + 0.8*vertex_coordinates[5]; dof_coordinates[11][0] = 0.8*vertex_coordinates[0] + 0.2*vertex_coordinates[2]; dof_coordinates[11][1] = 0.8*vertex_coordinates[1] + 0.2*vertex_coordinates[3]; dof_coordinates[12][0] = 0.6*vertex_coordinates[0] + 0.4*vertex_coordinates[2]; dof_coordinates[12][1] = 0.6*vertex_coordinates[1] + 0.4*vertex_coordinates[3]; dof_coordinates[13][0] = 0.4*vertex_coordinates[0] + 0.6*vertex_coordinates[2]; dof_coordinates[13][1] = 0.4*vertex_coordinates[1] + 0.6*vertex_coordinates[3]; dof_coordinates[14][0] = 0.2*vertex_coordinates[0] + 0.8*vertex_coordinates[2]; dof_coordinates[14][1] = 0.2*vertex_coordinates[1] + 0.8*vertex_coordinates[3]; dof_coordinates[15][0] = 0.6*vertex_coordinates[0] + 0.2*vertex_coordinates[2] + 0.2*vertex_coordinates[4]; dof_coordinates[15][1] = 0.6*vertex_coordinates[1] + 0.2*vertex_coordinates[3] + 0.2*vertex_coordinates[5]; dof_coordinates[16][0] = 0.4*vertex_coordinates[0] + 0.4*vertex_coordinates[2] + 0.2*vertex_coordinates[4]; dof_coordinates[16][1] = 0.4*vertex_coordinates[1] + 0.4*vertex_coordinates[3] + 0.2*vertex_coordinates[5]; dof_coordinates[17][0] = 0.2*vertex_coordinates[0] + 0.6*vertex_coordinates[2] + 0.2*vertex_coordinates[4]; dof_coordinates[17][1] = 0.2*vertex_coordinates[1] + 0.6*vertex_coordinates[3] + 0.2*vertex_coordinates[5]; dof_coordinates[18][0] = 0.4*vertex_coordinates[0] + 0.2*vertex_coordinates[2] + 0.4*vertex_coordinates[4]; dof_coordinates[18][1] = 0.4*vertex_coordinates[1] + 0.2*vertex_coordinates[3] + 0.4*vertex_coordinates[5]; dof_coordinates[19][0] = 0.2*vertex_coordinates[0] + 0.4*vertex_coordinates[2] + 0.4*vertex_coordinates[4]; dof_coordinates[19][1] = 0.2*vertex_coordinates[1] + 0.4*vertex_coordinates[3] + 0.4*vertex_coordinates[5]; dof_coordinates[20][0] = 0.2*vertex_coordinates[0] + 0.2*vertex_coordinates[2] + 0.6*vertex_coordinates[4]; dof_coordinates[20][1] = 0.2*vertex_coordinates[1] + 0.2*vertex_coordinates[3] + 0.6*vertex_coordinates[5]; } /// Return the number of sub dofmaps (for a mixed element) std::size_t poisson2d_5_dofmap_0::num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) ufc::dofmap* poisson2d_5_dofmap_0::create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance ufc::dofmap* poisson2d_5_dofmap_0::create() const { return new poisson2d_5_dofmap_0(); } /// Constructor poisson2d_5_cell_integral_0_otherwise::poisson2d_5_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson2d_5_cell_integral_0_otherwise::~poisson2d_5_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson2d_5_cell_integral_0_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 8 // Number of operations (multiply-add pairs) for tensor contraction: 1259 // Total number of operations (multiply-add pairs): 1270 // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0_0 = det*(K[0]*K[0] + K[1]*K[1]); const double G0_0_1 = det*(K[0]*K[2] + K[1]*K[3]); const double G0_1_0 = det*(K[2]*K[0] + K[3]*K[1]); const double G0_1_1 = det*(K[2]*K[2] + K[3]*K[3]); // Compute element tensor A[0] = 0.342406580687829*G0_0_0 + 0.342406580687829*G0_0_1 + 0.342406580687829*G0_1_0 + 0.34240658068783*G0_1_1; A[1] = -0.040998401675485*G0_0_0 - 0.0409984016754851*G0_1_0; A[2] = -0.040998401675485*G0_0_1 - 0.040998401675485*G0_1_1; A[3] = -0.0408192791005283*G0_0_0 - 0.040819279100529*G0_0_1 - 0.0408192791005285*G0_1_0 - 0.0408192791005291*G0_1_1; A[4] = -0.0379774305555561*G0_0_0 - 0.0379774305555545*G0_0_1 - 0.0379774305555559*G0_1_0 - 0.0379774305555543*G0_1_1; A[5] = -0.0379774305555538*G0_0_0 - 0.0379774305555549*G0_0_1 - 0.037977430555554*G0_1_0 - 0.037977430555555*G0_1_1; A[6] = -0.040819279100529*G0_0_0 - 0.0408192791005282*G0_0_1 - 0.040819279100529*G0_1_0 - 0.0408192791005283*G0_1_1; A[7] = 0.202287946428571*G0_0_0 - 0.64802758487654*G0_0_1 + 0.202287946428571*G0_1_0 - 0.648027584876541*G0_1_1; A[8] = -0.0158454585537927*G0_0_0 + 0.594204695767193*G0_0_1 - 0.0158454585537928*G0_1_0 + 0.594204695767193*G0_1_1; A[9] = -0.069668347663138*G0_0_0 - 0.449959352954142*G0_0_1 - 0.069668347663138*G0_1_0 - 0.449959352954143*G0_1_1; A[10] = 0.0408192791005289*G0_0_0 + 0.202374063051146*G0_0_1 + 0.0408192791005289*G0_1_0 + 0.202374063051146*G0_1_1; A[11] = -0.64802758487654*G0_0_0 + 0.202287946428571*G0_0_1 - 0.64802758487654*G0_1_0 + 0.202287946428572*G0_1_1; A[12] = 0.594204695767192*G0_0_0 - 0.0158454585537913*G0_0_1 + 0.594204695767192*G0_1_0 - 0.0158454585537912*G0_1_1; A[13] = -0.449959352954142*G0_0_0 - 0.0696683476631398*G0_0_1 - 0.449959352954142*G0_1_0 - 0.0696683476631396*G0_1_1; A[14] = 0.202374063051145*G0_0_0 + 0.0408192791005295*G0_0_1 + 0.202374063051146*G0_1_0 + 0.0408192791005296*G0_1_1; A[15] = -0.215291556437389*G0_0_0 - 0.215291556437391*G0_0_1 - 0.215291556437389*G0_1_0 - 0.215291556437392*G0_1_1; A[16] = -0.0538228891093484*G0_0_0 - 0.0538228891093457*G0_0_1 - 0.0538228891093485*G0_1_0 - 0.053822889109346*G0_1_1; A[17] = 0.107645778218694*G0_0_0 + 0.107645778218693*G0_0_1 + 0.107645778218695*G0_1_0 + 0.107645778218693*G0_1_1; A[18] = -0.0538228891093464*G0_0_0 - 0.053822889109346*G0_0_1 - 0.0538228891093465*G0_1_0 - 0.0538228891093456*G0_1_1; A[19] = 0.107645778218695*G0_0_0 + 0.107645778218694*G0_0_1 + 0.107645778218695*G0_1_0 + 0.107645778218695*G0_1_1; A[20] = 0.107645778218692*G0_0_0 + 0.107645778218692*G0_0_1 + 0.107645778218692*G0_1_0 + 0.107645778218692*G0_1_1; A[21] = -0.040998401675485*G0_0_0 - 0.0409984016754851*G0_0_1; A[22] = 0.342406580687829*G0_0_0; A[23] = 0.0409984016754845*G0_0_1; A[24] = 0.20228794642857*G0_0_0 + 0.85031553130511*G0_0_1; A[25] = -0.0158454585537937*G0_0_0 - 0.610050154320986*G0_0_1; A[26] = -0.0696683476631382*G0_0_0 + 0.380291005291002*G0_0_1; A[27] = 0.0408192791005282*G0_0_0 - 0.161554783950616*G0_0_1; A[28] = -0.0408192791005284*G0_0_0; A[29] = -0.037977430555556*G0_0_0; A[30] = -0.0379774305555545*G0_0_0; A[31] = -0.0408192791005283*G0_0_0; A[32] = 0.202374063051145*G0_0_0 + 0.161554783950616*G0_0_1; A[33] = -0.449959352954142*G0_0_0 - 0.380291005291001*G0_0_1; A[34] = 0.594204695767192*G0_0_0 + 0.610050154320982*G0_0_1; A[35] = -0.64802758487654*G0_0_0 - 0.85031553130511*G0_0_1; A[36] = 0.107645778218694*G0_0_0; A[37] = -0.0538228891093496*G0_0_0; A[38] = -0.215291556437387*G0_0_0; A[39] = 0.107645778218696*G0_0_0; A[40] = -0.0538228891093464*G0_0_0; A[41] = 0.107645778218693*G0_0_0; A[42] = -0.040998401675485*G0_1_0 - 0.040998401675485*G0_1_1; A[43] = 0.0409984016754845*G0_1_0; A[44] = 0.34240658068783*G0_1_1; A[45] = -0.161554783950617*G0_1_0 + 0.0408192791005279*G0_1_1; A[46] = 0.380291005291006*G0_1_0 - 0.0696683476631372*G0_1_1; A[47] = -0.610050154320988*G0_1_0 - 0.015845458553793*G0_1_1; A[48] = 0.850315531305113*G0_1_0 + 0.20228794642857*G0_1_1; A[49] = 0.161554783950618*G0_1_0 + 0.202374063051146*G0_1_1; A[50] = -0.380291005291006*G0_1_0 - 0.449959352954144*G0_1_1; A[51] = 0.610050154320987*G0_1_0 + 0.594204695767196*G0_1_1; A[52] = -0.850315531305113*G0_1_0 - 0.648027584876543*G0_1_1; A[53] = -0.0408192791005286*G0_1_1; A[54] = -0.0379774305555554*G0_1_1; A[55] = -0.0379774305555546*G0_1_1; A[56] = -0.0408192791005283*G0_1_1; A[57] = 0.107645778218693*G0_1_1; A[58] = 0.107645778218695*G0_1_1; A[59] = 0.107645778218692*G0_1_1; A[60] = -0.0538228891093447*G0_1_1; A[61] = -0.0538228891093471*G0_1_1; A[62] = -0.21529155643739*G0_1_1; A[63] = -0.0408192791005283*G0_0_0 - 0.0408192791005285*G0_0_1 - 0.040819279100529*G0_1_0 - 0.0408192791005292*G0_1_1; A[64] = 0.20228794642857*G0_0_0 + 0.85031553130511*G0_1_0; A[65] = -0.161554783950617*G0_0_1 + 0.0408192791005279*G0_1_1; A[66] = 1.98929398148147*G0_0_0 + 1.28098476080246*G0_0_1 + 1.28098476080246*G0_1_0 + 2.56196952160492*G0_1_1; A[67] = -0.906377452601409*G0_0_0 + 0.796578758818337*G0_0_1 - 0.529617228835981*G0_1_0 - 1.39508928571428*G0_1_1; A[68] = 0.818107914462078*G0_0_0 - 0.482253086419752*G0_0_1 + 0.232514880952381*G0_1_0 + 0.895612874779533*G0_1_1; A[69] = -0.340160659171074*G0_0_0 + 0.329396081349206*G0_0_1 - 0.0710462136243394*G0_1_0 - 0.340160659171072*G0_1_1; A[70] = 0.142092427248674*G0_0_0 + 0.0710462136243362*G0_0_1 + 0.0710462136243363*G0_1_0; A[71] = 0.131327849426809*G0_0_0 + 0.0301408179012379*G0_0_1 + 0.0301408179012345*G0_1_0; A[72] = 0.172233245149907*G0_0_0 + 0.0301408179012311*G0_0_1 + 0.0301408179012338*G0_1_0; A[73] = 0.340160659171074*G0_0_0 + 0.0710462136243409*G0_0_1 + 0.0710462136243393*G0_1_0; A[74] = 0.198068231922395*G0_0_0 + 0.269114445546734*G0_0_1 + 0.269114445546735*G0_1_0 + 0.340160659171073*G0_1_1; A[75] = -0.359536899250436*G0_0_0 - 0.663097993827155*G0_0_1 - 0.663097993827155*G0_1_0 - 0.895612874779531*G0_1_1; A[76] = 0.286337770061724*G0_0_0 + 0.865472056878298*G0_0_1 + 0.8654720568783*G0_1_0 + 1.39508928571427*G0_1_1; A[77] = -0.286337770061725*G0_0_0 - 1.28098476080246*G0_0_1 - 1.28098476080246*G0_1_0 - 2.56196952160492*G0_1_1; A[78] = -0.667403824955902*G0_0_0 - 0.262655698853613*G0_0_1 - 0.262655698853609*G0_1_0; A[79] = 1.35633680555554*G0_0_0 + 0.572675540123453*G0_0_1 + 0.572675540123445*G0_1_0; A[80] = -2.82031938932979*G0_0_0 - 1.66205081569664*G0_0_1 - 1.66205081569663*G0_1_0; A[81] = -0.419818535052911*G0_0_0 - 0.0731991291887145*G0_0_1 - 0.0731991291887099*G0_1_0; A[82] = 1.19486813822751*G0_0_0 + 0.572675540123455*G0_0_1 + 0.572675540123456*G0_1_0; A[83] = -0.990341159611985*G0_0_0 - 0.262655698853612*G0_0_1 - 0.262655698853615*G0_1_0; A[84] = -0.0379774305555561*G0_0_0 - 0.0379774305555558*G0_0_1 - 0.0379774305555545*G0_1_0 - 0.0379774305555543*G0_1_1; A[85] = -0.0158454585537937*G0_0_0 - 0.610050154320985*G0_1_0; A[86] = 0.380291005291006*G0_0_1 - 0.0696683476631372*G0_1_1; A[87] = -0.906377452601409*G0_0_0 - 0.529617228835981*G0_0_1 + 0.796578758818337*G0_1_0 - 1.39508928571428*G0_1_1; A[88] = 3.07436342592592*G0_0_0 + 1.17549189814815*G0_0_1 + 1.17549189814815*G0_1_0 + 3.69440310846559*G0_1_1; A[89] = -1.80414324294532*G0_0_0 + 0.69969755842151*G0_0_1 - 0.350925236992947*G0_1_0 - 1.80414324294532*G0_1_1; A[90] = 0.895612874779541*G0_0_0 - 0.48225308641975*G0_0_1 + 0.232514880952383*G0_1_0 + 0.818107914462077*G0_1_1; A[91] = 0.13132784942681*G0_0_0 + 0.101187031525576*G0_0_1 + 0.101187031525575*G0_1_0 + 0.0710462136243381*G0_1_1; A[92] = -0.297102347883603*G0_0_0 - 0.148551173941805*G0_0_1 - 0.148551173941801*G0_1_0 - 0.0172233245149925*G0_1_1; A[93] = -0.21959738756613*G0_0_0 - 0.062434551366835*G0_0_1 - 0.062434551366842*G0_1_0 - 0.0172233245149881*G0_1_1; A[94] = -0.89561287477954*G0_0_0 - 0.232514880952385*G0_0_1 - 0.232514880952383*G0_1_0 + 0.0710462136243353*G0_1_1; A[95] = 0.111951609347444*G0_0_0 + 0.142092427248677*G0_0_1 + 0.142092427248675*G0_1_0 + 0.172233245149911*G0_1_1; A[96] = -0.111951609347442*G0_0_0 - 0.157162836199293*G0_0_1 - 0.157162836199291*G0_1_0 - 0.219597387566139*G0_1_1; A[97] = 0.103339947089946*G0_0_0 + 0.133480764991184*G0_0_1 + 0.133480764991179*G0_1_0 + 0.266961529982366*G0_1_1; A[98] = -0.0495170579805987*G0_0_0 + 0.529617228835981*G0_0_1 + 0.529617228835978*G0_1_0 + 1.39508928571428*G0_1_1; A[99] = -0.344466490299827*G0_0_0 - 0.447806437389772*G0_0_1 - 0.447806437389773*G0_1_0 - 0.516699735449737*G0_1_1; A[100] = 0.387524801587307*G0_0_0 + 0.859013310185179*G0_0_1 + 0.85901331018519*G0_1_0 + 1.01187031525573*G0_1_1; A[101] = 0.731991291887121*G0_0_0 - 1.30897266313933*G0_0_1 - 1.30897266313933*G0_1_0 - 3.96136463844796*G0_1_1; A[102] = 1.03339947089947*G0_0_0 + 0.374607308201062*G0_0_1 + 0.374607308201053*G0_1_0 + 0.0430583112874783*G0_1_1; A[103] = -3.81066054894178*G0_0_0 - 1.4015480324074*G0_0_1 - 1.4015480324074*G0_1_0 + 1.01187031525572*G0_1_1; A[104] = 2.02374063051145*G0_0_0 + 0.413359788359785*G0_0_1 + 0.413359788359789*G0_1_0 - 0.516699735449728*G0_1_1; A[105] = -0.0379774305555538*G0_0_0 - 0.037977430555554*G0_0_1 - 0.0379774305555549*G0_1_0 - 0.037977430555555*G0_1_1; A[106] = -0.0696683476631382*G0_0_0 + 0.380291005291002*G0_1_0; A[107] = -0.610050154320988*G0_0_1 - 0.0158454585537929*G0_1_1; A[108] = 0.818107914462078*G0_0_0 + 0.232514880952381*G0_0_1 - 0.482253086419752*G0_1_0 + 0.895612874779533*G0_1_1; A[109] = -1.80414324294532*G0_0_0 - 0.350925236992947*G0_0_1 + 0.69969755842151*G0_1_0 - 1.80414324294532*G0_1_1; A[110] = 3.6944031084656*G0_0_0 + 1.17549189814814*G0_0_1 + 1.17549189814814*G0_1_0 + 3.0743634259259*G0_1_1; A[111] = -1.39508928571428*G0_0_0 + 0.79657875881834*G0_0_1 - 0.529617228835976*G0_1_0 - 0.906377452601404*G0_1_1; A[112] = 0.172233245149906*G0_0_0 + 0.14209242724867*G0_0_1 + 0.142092427248673*G0_1_0 + 0.111951609347439*G0_1_1; A[113] = -0.219597387566128*G0_0_0 - 0.157162836199283*G0_0_1 - 0.157162836199291*G0_1_0 - 0.111951609347437*G0_1_1; A[114] = 0.266961529982354*G0_0_0 + 0.133480764991172*G0_0_1 + 0.133480764991179*G0_1_0 + 0.103339947089942*G0_1_1; A[115] = 1.39508928571428*G0_0_0 + 0.529617228835983*G0_0_1 + 0.529617228835977*G0_1_0 - 0.0495170579805959*G0_1_1; A[116] = 0.0710462136243354*G0_0_0 + 0.101187031525572*G0_0_1 + 0.101187031525572*G0_1_0 + 0.131327849426806*G0_1_1; A[117] = -0.0172233245149888*G0_0_0 - 0.148551173941798*G0_0_1 - 0.148551173941797*G0_1_0 - 0.297102347883594*G0_1_1; A[118] = -0.0172233245149926*G0_0_0 - 0.0624345513668466*G0_0_1 - 0.0624345513668439*G0_1_0 - 0.21959738756614*G0_1_1; A[119] = 0.0710462136243387*G0_0_0 - 0.232514880952382*G0_0_1 - 0.232514880952379*G0_1_0 - 0.895612874779535*G0_1_1; A[120] = -0.516699735449724*G0_0_0 - 0.447806437389765*G0_0_1 - 0.447806437389764*G0_1_0 - 0.344466490299821*G0_1_1; A[121] = 0.0430583112874709*G0_0_0 + 0.374607308201058*G0_0_1 + 0.374607308201052*G0_1_0 + 1.03339947089946*G0_1_1; A[122] = -0.516699735449731*G0_0_0 + 0.413359788359793*G0_0_1 + 0.41335978835979*G0_1_0 + 2.02374063051146*G0_1_1; A[123] = 1.01187031525572*G0_0_0 + 0.859013310185172*G0_0_1 + 0.859013310185178*G0_1_0 + 0.387524801587298*G0_1_1; A[124] = 1.01187031525573*G0_0_0 - 1.4015480324074*G0_0_1 - 1.4015480324074*G0_1_0 - 3.81066054894177*G0_1_1; A[125] = -3.96136463844795*G0_0_0 - 1.30897266313932*G0_0_1 - 1.30897266313932*G0_1_0 + 0.731991291887121*G0_1_1; A[126] = -0.040819279100529*G0_0_0 - 0.040819279100529*G0_0_1 - 0.0408192791005282*G0_1_0 - 0.0408192791005283*G0_1_1; A[127] = 0.0408192791005282*G0_0_0 - 0.161554783950616*G0_1_0; A[128] = 0.850315531305113*G0_0_1 + 0.20228794642857*G0_1_1; A[129] = -0.340160659171074*G0_0_0 - 0.0710462136243394*G0_0_1 + 0.329396081349206*G0_1_0 - 0.340160659171072*G0_1_1; A[130] = 0.895612874779541*G0_0_0 + 0.232514880952383*G0_0_1 - 0.48225308641975*G0_1_0 + 0.818107914462077*G0_1_1; A[131] = -1.39508928571428*G0_0_0 - 0.529617228835976*G0_0_1 + 0.79657875881834*G0_1_0 - 0.906377452601404*G0_1_1; A[132] = 2.56196952160493*G0_0_0 + 1.28098476080246*G0_0_1 + 1.28098476080246*G0_1_0 + 1.98929398148147*G0_1_1; A[133] = 0.340160659171078*G0_0_0 + 0.269114445546738*G0_0_1 + 0.269114445546737*G0_1_0 + 0.198068231922396*G0_1_1; A[134] = -0.895612874779545*G0_0_0 - 0.663097993827163*G0_0_1 - 0.66309799382716*G0_1_0 - 0.359536899250439*G0_1_1; A[135] = 1.39508928571429*G0_0_0 + 0.865472056878311*G0_0_1 + 0.865472056878304*G0_1_0 + 0.286337770061729*G0_1_1; A[136] = -2.56196952160493*G0_0_0 - 1.28098476080247*G0_0_1 - 1.28098476080246*G0_1_0 - 0.286337770061728*G0_1_1; A[137] = 0.07104621362434*G0_0_1 + 0.071046213624338*G0_1_0 + 0.142092427248678*G0_1_1; A[138] = 0.0301408179012343*G0_0_1 + 0.0301408179012348*G0_1_0 + 0.131327849426807*G0_1_1; A[139] = 0.0301408179012361*G0_0_1 + 0.0301408179012338*G0_1_0 + 0.172233245149912*G0_1_1; A[140] = 0.0710462136243392*G0_0_1 + 0.0710462136243384*G0_1_0 + 0.340160659171072*G0_1_1; A[141] = -0.262655698853621*G0_0_1 - 0.262655698853615*G0_1_0 - 0.66740382495591*G0_1_1; A[142] = -0.0731991291887108*G0_0_1 - 0.0731991291887092*G0_1_0 - 0.419818535052906*G0_1_1; A[143] = -0.262655698853619*G0_0_1 - 0.262655698853619*G0_1_0 - 0.99034115961199*G0_1_1; A[144] = 0.572675540123462*G0_0_1 + 0.572675540123456*G0_1_0 + 1.35633680555555*G0_1_1; A[145] = 0.572675540123451*G0_0_1 + 0.572675540123453*G0_1_0 + 1.1948681382275*G0_1_1; A[146] = -1.66205081569664*G0_0_1 - 1.66205081569664*G0_1_0 - 2.82031938932979*G0_1_1; A[147] = 0.202287946428571*G0_0_0 + 0.202287946428571*G0_0_1 - 0.64802758487654*G0_1_0 - 0.648027584876541*G0_1_1; A[148] = -0.0408192791005284*G0_0_0; A[149] = 0.161554783950618*G0_0_1 + 0.202374063051146*G0_1_1; A[150] = 0.142092427248674*G0_0_0 + 0.0710462136243363*G0_0_1 + 0.0710462136243362*G0_1_0; A[151] = 0.13132784942681*G0_0_0 + 0.101187031525575*G0_0_1 + 0.101187031525576*G0_1_0 + 0.0710462136243381*G0_1_1; A[152] = 0.172233245149906*G0_0_0 + 0.142092427248673*G0_0_1 + 0.14209242724867*G0_1_0 + 0.111951609347439*G0_1_1; A[153] = 0.340160659171078*G0_0_0 + 0.269114445546737*G0_0_1 + 0.269114445546738*G0_1_0 + 0.198068231922396*G0_1_1; A[154] = 1.98929398148147*G0_0_0 + 0.708309220679007*G0_0_1 + 0.708309220679007*G0_1_0 + 1.98929398148147*G0_1_1; A[155] = -0.906377452601406*G0_0_0 - 1.70295621141974*G0_0_1 - 0.376760223765426*G0_1_0 - 2.56842826829805*G0_1_1; A[156] = 0.818107914462077*G0_0_0 + 1.30036100088183*G0_0_1 + 0.585593033509693*G0_1_0 + 1.96345899470898*G0_1_1; A[157] = -0.340160659171078*G0_0_0 - 0.66955674052028*G0_0_1 - 0.269114445546738*G0_1_0 - 0.938671186067016*G0_1_1; A[158] = -0.286337770061728*G0_0_0 + 0.994646990740736*G0_0_1 + 0.994646990740735*G0_1_0 - 0.286337770061729*G0_1_1; A[159] = 0.286337770061726*G0_0_0 - 0.579134286816575*G0_0_1 - 0.579134286816575*G0_1_0 - 0.049517057980602*G0_1_1; A[160] = -0.359536899250437*G0_0_0 + 0.303561094576719*G0_0_1 + 0.303561094576719*G0_1_0 + 0.0710462136243417*G0_1_1; A[161] = 0.198068231922396*G0_0_0 - 0.0710462136243371*G0_0_1 - 0.0710462136243399*G0_1_0; A[162] = -2.82031938932979*G0_0_0 - 1.15826857363315*G0_0_1 - 1.15826857363315*G0_1_0 + 0.503782242063499*G0_1_1; A[163] = 1.35633680555554*G0_0_0 + 0.783661265432094*G0_0_1 + 0.783661265432094*G0_1_0 + 0.21098572530864*G0_1_1; A[164] = -0.667403824955901*G0_0_0 - 0.404748126102293*G0_0_1 - 0.40474812610229*G0_1_0 - 0.142092427248677*G0_1_1; A[165] = 1.19486813822751*G0_0_0 + 0.622192598104048*G0_0_1 + 0.622192598104048*G0_1_0 + 0.0495170579805897*G0_1_1; A[166] = -0.419818535052911*G0_0_0 - 0.346619405864192*G0_0_1 - 0.346619405864199*G0_1_0 - 0.273420276675483*G0_1_1; A[167] = -0.990341159611982*G0_0_0 - 0.727685460758374*G0_0_1 - 0.727685460758364*G0_1_0 - 0.465029761904753*G0_1_1; A[168] = -0.0158454585537927*G0_0_0 - 0.0158454585537928*G0_0_1 + 0.594204695767193*G0_1_0 + 0.594204695767193*G0_1_1; A[169] = -0.037977430555556*G0_0_0; A[170] = -0.380291005291006*G0_0_1 - 0.449959352954144*G0_1_1; A[171] = 0.131327849426809*G0_0_0 + 0.0301408179012345*G0_0_1 + 0.0301408179012379*G0_1_0; A[172] = -0.297102347883603*G0_0_0 - 0.148551173941801*G0_0_1 - 0.148551173941805*G0_1_0 - 0.0172233245149925*G0_1_1; A[173] = -0.219597387566128*G0_0_0 - 0.157162836199291*G0_0_1 - 0.157162836199283*G0_1_0 - 0.111951609347437*G0_1_1; A[174] = -0.895612874779545*G0_0_0 - 0.66309799382716*G0_0_1 - 0.663097993827163*G0_1_0 - 0.359536899250439*G0_1_1; A[175] = -0.906377452601406*G0_0_0 - 0.376760223765426*G0_0_1 - 1.70295621141974*G0_1_0 - 2.56842826829805*G0_1_1; A[176] = 3.07436342592592*G0_0_0 + 1.89887152777777*G0_0_1 + 1.89887152777777*G0_1_0 + 4.41778273809521*G0_1_1; A[177] = -1.80414324294532*G0_0_0 - 2.50384080136683*G0_0_1 - 1.45321800595237*G0_1_0 - 3.9570588073192*G0_1_1; A[178] = 0.895612874779545*G0_0_0 + 1.37786596119929*G0_0_1 + 0.663097993827163*G0_1_0 + 1.96345899470899*G0_1_1; A[179] = -0.0495170579805976*G0_0_0 - 0.579134286816577*G0_0_1 - 0.579134286816575*G0_1_0 + 0.286337770061727*G0_1_1; A[180] = 0.103339947089946*G0_0_0 - 0.0301408179012345*G0_0_1 - 0.0301408179012339*G0_1_0 + 0.103339947089949*G0_1_1; A[181] = -0.111951609347442*G0_0_0 + 0.0452112268518518*G0_0_1 + 0.0452112268518497*G0_1_0 - 0.0172233245149949*G0_1_1; A[182] = 0.111951609347443*G0_0_0 - 0.0301408179012338*G0_0_1 - 0.0301408179012322*G0_1_0; A[183] = 0.731991291887122*G0_0_0 + 2.04096395502645*G0_0_1 + 2.04096395502644*G0_1_0 - 0.611428020282191*G0_1_1; A[184] = 0.387524801587298*G0_0_0 - 0.471488508597881*G0_0_1 - 0.47148850859788*G0_1_0 - 0.318631503527332*G0_1_1; A[185] = -0.344466490299823*G0_0_0 + 0.103339947089949*G0_0_1 + 0.103339947089945*G0_1_0 + 0.0344466490299834*G0_1_1; A[186] = -3.81066054894178*G0_0_0 - 2.40911251653438*G0_0_1 - 2.40911251653437*G0_1_0 + 0.00430583112875654*G0_1_1; A[187] = 1.03339947089947*G0_0_0 + 0.658792162698407*G0_0_1 + 0.658792162698414*G0_1_0 + 0.327243165784827*G0_1_1; A[188] = 2.02374063051144*G0_0_0 + 1.61038084215166*G0_0_1 + 1.61038084215165*G0_1_0 + 0.680321318342141*G0_1_1; A[189] = -0.069668347663138*G0_0_0 - 0.069668347663138*G0_0_1 - 0.449959352954142*G0_1_0 - 0.449959352954143*G0_1_1; A[190] = -0.0379774305555544*G0_0_0; A[191] = 0.610050154320987*G0_0_1 + 0.594204695767196*G0_1_1; A[192] = 0.172233245149907*G0_0_0 + 0.0301408179012338*G0_0_1 + 0.0301408179012311*G0_1_0; A[193] = -0.219597387566131*G0_0_0 - 0.062434551366842*G0_0_1 - 0.062434551366835*G0_1_0 - 0.0172233245149881*G0_1_1; A[194] = 0.266961529982354*G0_0_0 + 0.133480764991179*G0_0_1 + 0.133480764991172*G0_1_0 + 0.103339947089942*G0_1_1; A[195] = 1.39508928571429*G0_0_0 + 0.865472056878304*G0_0_1 + 0.865472056878311*G0_1_0 + 0.286337770061729*G0_1_1; A[196] = 0.818107914462077*G0_0_0 + 0.585593033509694*G0_0_1 + 1.30036100088183*G0_1_0 + 1.96345899470898*G0_1_1; A[197] = -1.80414324294532*G0_0_0 - 1.45321800595237*G0_0_1 - 2.50384080136683*G0_1_0 - 3.9570588073192*G0_1_1; A[198] = 3.6944031084656*G0_0_0 + 2.51891121031745*G0_0_1 + 2.51891121031745*G0_1_0 + 4.41778273809522*G0_1_1; A[199] = -1.39508928571429*G0_0_0 - 2.19166804453262*G0_0_1 - 0.865472056878312*G0_1_0 - 2.56842826829805*G0_1_1; A[200] = 0.0710462136243353*G0_0_0 + 0.30356109457672*G0_0_1 + 0.303561094576716*G0_1_0 - 0.359536899250439*G0_1_1; A[201] = -0.0172233245149901*G0_0_0 + 0.0452112268518527*G0_0_1 + 0.0452112268518517*G0_1_0 - 0.111951609347445*G0_1_1; A[202] = -0.0172233245149894*G0_0_0 + 0.131327849426811*G0_0_1 + 0.131327849426809*G0_1_0 - 0.017223324514987*G0_1_1; A[203] = 0.0710462136243358*G0_0_0 - 0.0301408179012346*G0_0_1 - 0.0301408179012364*G0_1_0; A[204] = -0.516699735449726*G0_0_0 - 0.93005952380952*G0_0_1 - 0.930059523809516*G0_1_0 + 0.680321318342151*G0_1_1; A[205] = 0.0430583112874713*G0_0_0 - 0.331548996913582*G0_0_1 - 0.33154899691358*G0_1_0 + 0.327243165784829*G0_1_1; A[206] = -0.516699735449729*G0_0_0 - 0.0688932980599681*G0_0_1 - 0.0688932980599629*G0_1_0 + 0.0344466490299786*G0_1_1; A[207] = 1.01187031525573*G0_0_0 + 2.41341834766314*G0_0_1 + 2.41341834766313*G0_1_0 + 0.00430583112874527*G0_1_1; A[208] = 1.01187031525572*G0_0_0 + 0.15285700507055*G0_0_1 + 0.15285700507054*G0_1_0 - 0.318631503527332*G0_1_1; A[209] = -3.96136463844795*G0_0_0 - 2.65239197530864*G0_0_1 - 2.65239197530862*G0_1_0 - 0.611428020282183*G0_1_1; A[210] = 0.0408192791005289*G0_0_0 + 0.0408192791005289*G0_0_1 + 0.202374063051146*G0_1_0 + 0.202374063051146*G0_1_1; A[211] = -0.0408192791005282*G0_0_0; A[212] = -0.850315531305113*G0_0_1 - 0.648027584876543*G0_1_1; A[213] = 0.340160659171074*G0_0_0 + 0.0710462136243393*G0_0_1 + 0.0710462136243409*G0_1_0; A[214] = -0.89561287477954*G0_0_0 - 0.232514880952383*G0_0_1 - 0.232514880952385*G0_1_0 + 0.0710462136243353*G0_1_1; A[215] = 1.39508928571428*G0_0_0 + 0.529617228835977*G0_0_1 + 0.529617228835983*G0_1_0 - 0.0495170579805959*G0_1_1; A[216] = -2.56196952160493*G0_0_0 - 1.28098476080246*G0_0_1 - 1.28098476080247*G0_1_0 - 0.286337770061728*G0_1_1; A[217] = -0.340160659171078*G0_0_0 - 0.269114445546738*G0_0_1 - 0.66955674052028*G0_1_0 - 0.938671186067016*G0_1_1; A[218] = 0.895612874779545*G0_0_0 + 0.663097993827164*G0_0_1 + 1.37786596119929*G0_1_0 + 1.96345899470899*G0_1_1; A[219] = -1.39508928571429*G0_0_0 - 0.865472056878312*G0_0_1 - 2.19166804453262*G0_1_0 - 2.56842826829805*G0_1_1; A[220] = 2.56196952160493*G0_0_0 + 1.28098476080247*G0_0_1 + 1.28098476080247*G0_1_0 + 1.98929398148148*G0_1_1; A[221] = -0.07104621362434*G0_0_1 - 0.0710462136243373*G0_1_0 + 0.198068231922398*G0_1_1; A[222] = -0.0301408179012347*G0_0_1 - 0.0301408179012351*G0_1_0 + 0.111951609347443*G0_1_1; A[223] = -0.030140817901236*G0_0_1 - 0.0301408179012352*G0_1_0 + 0.0710462136243355*G0_1_1; A[224] = -0.071046213624339*G0_0_1 - 0.0710462136243377*G0_1_0; A[225] = 0.262655698853621*G0_0_1 + 0.262655698853613*G0_1_0 - 0.46502976190476*G0_1_1; A[226] = 0.0731991291887117*G0_0_1 + 0.0731991291887132*G0_1_0 - 0.273420276675482*G0_1_1; A[227] = 0.262655698853618*G0_0_1 + 0.262655698853614*G0_1_0 - 0.142092427248673*G0_1_1; A[228] = -0.572675540123461*G0_0_1 - 0.572675540123456*G0_1_0 + 0.0495170579805962*G0_1_1; A[229] = -0.572675540123452*G0_0_1 - 0.572675540123448*G0_1_0 + 0.210985725308638*G0_1_1; A[230] = 1.66205081569664*G0_0_1 + 1.66205081569664*G0_1_0 + 0.503782242063493*G0_1_1; A[231] = -0.64802758487654*G0_0_0 - 0.64802758487654*G0_0_1 + 0.202287946428571*G0_1_0 + 0.202287946428572*G0_1_1; A[232] = 0.202374063051145*G0_0_0 + 0.161554783950616*G0_1_0; A[233] = -0.0408192791005285*G0_1_1; A[234] = 0.198068231922395*G0_0_0 + 0.269114445546735*G0_0_1 + 0.269114445546734*G0_1_0 + 0.340160659171073*G0_1_1; A[235] = 0.111951609347444*G0_0_0 + 0.142092427248675*G0_0_1 + 0.142092427248677*G0_1_0 + 0.172233245149911*G0_1_1; A[236] = 0.0710462136243354*G0_0_0 + 0.101187031525571*G0_0_1 + 0.101187031525572*G0_1_0 + 0.131327849426806*G0_1_1; A[237] = 0.071046213624338*G0_0_1 + 0.07104621362434*G0_1_0 + 0.142092427248678*G0_1_1; A[238] = -0.286337770061728*G0_0_0 + 0.994646990740735*G0_0_1 + 0.994646990740736*G0_1_0 - 0.286337770061729*G0_1_1; A[239] = -0.0495170579805976*G0_0_0 - 0.579134286816575*G0_0_1 - 0.579134286816577*G0_1_0 + 0.286337770061727*G0_1_1; A[240] = 0.0710462136243353*G0_0_0 + 0.303561094576717*G0_0_1 + 0.30356109457672*G0_1_0 - 0.359536899250439*G0_1_1; A[241] = -0.0710462136243373*G0_0_1 - 0.07104621362434*G0_1_0 + 0.198068231922398*G0_1_1; A[242] = 1.98929398148147*G0_0_0 + 0.708309220679006*G0_0_1 + 0.708309220679006*G0_1_0 + 1.98929398148147*G0_1_1; A[243] = -2.56842826829804*G0_0_0 - 0.376760223765429*G0_0_1 - 1.70295621141974*G0_1_0 - 0.906377452601403*G0_1_1; A[244] = 1.96345899470898*G0_0_0 + 0.585593033509695*G0_0_1 + 1.30036100088183*G0_1_0 + 0.818107914462073*G0_1_1; A[245] = -0.938671186067014*G0_0_0 - 0.269114445546736*G0_0_1 - 0.669556740520278*G0_1_0 - 0.340160659171073*G0_1_1; A[246] = 0.503782242063491*G0_0_0 - 1.15826857363315*G0_0_1 - 1.15826857363315*G0_1_0 - 2.82031938932979*G0_1_1; A[247] = 0.0495170579805971*G0_0_0 + 0.622192598104045*G0_0_1 + 0.622192598104045*G0_1_0 + 1.1948681382275*G0_1_1; A[248] = -0.465029761904755*G0_0_0 - 0.727685460758368*G0_0_1 - 0.727685460758368*G0_1_0 - 0.990341159611985*G0_1_1; A[249] = 0.210985725308639*G0_0_0 + 0.783661265432093*G0_0_1 + 0.783661265432096*G0_1_0 + 1.35633680555555*G0_1_1; A[250] = -0.273420276675483*G0_0_0 - 0.346619405864192*G0_0_1 - 0.346619405864195*G0_1_0 - 0.419818535052904*G0_1_1; A[251] = -0.142092427248672*G0_0_0 - 0.404748126102289*G0_0_1 - 0.404748126102292*G0_1_0 - 0.667403824955909*G0_1_1; A[252] = 0.594204695767192*G0_0_0 + 0.594204695767192*G0_0_1 - 0.0158454585537913*G0_1_0 - 0.0158454585537913*G0_1_1; A[253] = -0.449959352954142*G0_0_0 - 0.380291005291001*G0_1_0; A[254] = -0.0379774305555554*G0_1_1; A[255] = -0.359536899250436*G0_0_0 - 0.663097993827155*G0_0_1 - 0.663097993827155*G0_1_0 - 0.895612874779531*G0_1_1; A[256] = -0.111951609347442*G0_0_0 - 0.157162836199291*G0_0_1 - 0.157162836199293*G0_1_0 - 0.219597387566139*G0_1_1; A[257] = -0.0172233245149888*G0_0_0 - 0.148551173941797*G0_0_1 - 0.148551173941798*G0_1_0 - 0.297102347883594*G0_1_1; A[258] = 0.0301408179012348*G0_0_1 + 0.0301408179012343*G0_1_0 + 0.131327849426806*G0_1_1; A[259] = 0.286337770061726*G0_0_0 - 0.579134286816575*G0_0_1 - 0.579134286816576*G0_1_0 - 0.049517057980602*G0_1_1; A[260] = 0.103339947089946*G0_0_0 - 0.0301408179012339*G0_0_1 - 0.0301408179012345*G0_1_0 + 0.103339947089949*G0_1_1; A[261] = -0.0172233245149901*G0_0_0 + 0.0452112268518519*G0_0_1 + 0.0452112268518527*G0_1_0 - 0.111951609347445*G0_1_1; A[262] = -0.0301408179012351*G0_0_1 - 0.0301408179012347*G0_1_0 + 0.111951609347443*G0_1_1; A[263] = -2.56842826829804*G0_0_0 - 1.70295621141974*G0_0_1 - 0.376760223765429*G0_1_0 - 0.906377452601403*G0_1_1; A[264] = 4.41778273809521*G0_0_0 + 1.89887152777776*G0_0_1 + 1.89887152777776*G0_1_0 + 3.0743634259259*G0_1_1; A[265] = -3.9570588073192*G0_0_0 - 1.45321800595237*G0_0_1 - 2.50384080136682*G0_1_0 - 1.80414324294531*G0_1_1; A[266] = 1.96345899470898*G0_0_0 + 0.663097993827155*G0_0_1 + 1.37786596119928*G0_1_0 + 0.895612874779531*G0_1_1; A[267] = -0.611428020282184*G0_0_0 + 2.04096395502644*G0_0_1 + 2.04096395502644*G0_1_0 + 0.731991291887116*G0_1_1; A[268] = 0.00430583112875335*G0_0_0 - 2.40911251653437*G0_0_1 - 2.40911251653437*G0_1_0 - 3.81066054894177*G0_1_1; A[269] = 0.680321318342141*G0_0_0 + 1.61038084215166*G0_0_1 + 1.61038084215166*G0_1_0 + 2.02374063051145*G0_1_1; A[270] = -0.318631503527334*G0_0_0 - 0.471488508597882*G0_0_1 - 0.471488508597882*G0_1_0 + 0.387524801587306*G0_1_1; A[271] = 0.327243165784828*G0_0_0 + 0.658792162698405*G0_0_1 + 0.658792162698409*G0_1_0 + 1.03339947089947*G0_1_1; A[272] = 0.0344466490299804*G0_0_0 + 0.103339947089947*G0_0_1 + 0.103339947089946*G0_1_0 - 0.344466490299824*G0_1_1; A[273] = -0.449959352954142*G0_0_0 - 0.449959352954142*G0_0_1 - 0.0696683476631398*G0_1_0 - 0.0696683476631396*G0_1_1; A[274] = 0.594204695767192*G0_0_0 + 0.610050154320982*G0_1_0; A[275] = -0.0379774305555546*G0_1_1; A[276] = 0.286337770061724*G0_0_0 + 0.8654720568783*G0_0_1 + 0.865472056878298*G0_1_0 + 1.39508928571427*G0_1_1; A[277] = 0.103339947089946*G0_0_0 + 0.133480764991179*G0_0_1 + 0.133480764991184*G0_1_0 + 0.266961529982366*G0_1_1; A[278] = -0.0172233245149927*G0_0_0 - 0.0624345513668439*G0_0_1 - 0.0624345513668466*G0_1_0 - 0.21959738756614*G0_1_1; A[279] = 0.0301408179012337*G0_0_1 + 0.0301408179012361*G0_1_0 + 0.172233245149912*G0_1_1; A[280] = -0.359536899250437*G0_0_0 + 0.303561094576719*G0_0_1 + 0.303561094576719*G0_1_0 + 0.0710462136243417*G0_1_1; A[281] = -0.111951609347442*G0_0_0 + 0.0452112268518497*G0_0_1 + 0.0452112268518518*G0_1_0 - 0.0172233245149949*G0_1_1; A[282] = -0.0172233245149894*G0_0_0 + 0.131327849426809*G0_0_1 + 0.131327849426811*G0_1_0 - 0.017223324514987*G0_1_1; A[283] = -0.0301408179012352*G0_0_1 - 0.030140817901236*G0_1_0 + 0.0710462136243355*G0_1_1; A[284] = 1.96345899470898*G0_0_0 + 1.30036100088183*G0_0_1 + 0.585593033509695*G0_1_0 + 0.818107914462073*G0_1_1; A[285] = -3.9570588073192*G0_0_0 - 2.50384080136682*G0_0_1 - 1.45321800595237*G0_1_0 - 1.80414324294531*G0_1_1; A[286] = 4.41778273809521*G0_0_0 + 2.51891121031744*G0_0_1 + 2.51891121031744*G0_1_0 + 3.69440310846558*G0_1_1; A[287] = -2.56842826829804*G0_0_0 - 0.865472056878301*G0_0_1 - 2.19166804453261*G0_1_0 - 1.39508928571427*G0_1_1; A[288] = 0.680321318342151*G0_0_0 - 0.930059523809514*G0_0_1 - 0.93005952380951*G0_1_0 - 0.516699735449723*G0_1_1; A[289] = 0.00430583112873832*G0_0_0 + 2.41341834766311*G0_0_1 + 2.41341834766311*G0_1_0 + 1.01187031525571*G0_1_1; A[290] = -0.611428020282177*G0_0_0 - 2.65239197530862*G0_0_1 - 2.65239197530862*G0_1_0 - 3.96136463844795*G0_1_1; A[291] = 0.32724316578483*G0_0_0 - 0.331548996913579*G0_0_1 - 0.331548996913577*G0_1_0 + 0.0430583112874745*G0_1_1; A[292] = -0.318631503527333*G0_0_0 + 0.152857005070552*G0_0_1 + 0.152857005070543*G0_1_0 + 1.01187031525573*G0_1_1; A[293] = 0.0344466490299806*G0_0_0 - 0.0688932980599666*G0_0_1 - 0.0688932980599646*G0_1_0 - 0.516699735449736*G0_1_1; A[294] = 0.202374063051145*G0_0_0 + 0.202374063051146*G0_0_1 + 0.0408192791005295*G0_1_0 + 0.0408192791005296*G0_1_1; A[295] = -0.64802758487654*G0_0_0 - 0.85031553130511*G0_1_0; A[296] = -0.0408192791005283*G0_1_1; A[297] = -0.286337770061725*G0_0_0 - 1.28098476080246*G0_0_1 - 1.28098476080246*G0_1_0 - 2.56196952160492*G0_1_1; A[298] = -0.0495170579805987*G0_0_0 + 0.529617228835977*G0_0_1 + 0.529617228835981*G0_1_0 + 1.39508928571428*G0_1_1; A[299] = 0.0710462136243387*G0_0_0 - 0.232514880952379*G0_0_1 - 0.232514880952382*G0_1_0 - 0.895612874779535*G0_1_1; A[300] = 0.0710462136243384*G0_0_1 + 0.0710462136243392*G0_1_0 + 0.340160659171072*G0_1_1; A[301] = 0.198068231922396*G0_0_0 - 0.0710462136243399*G0_0_1 - 0.0710462136243371*G0_1_0; A[302] = 0.111951609347443*G0_0_0 - 0.0301408179012322*G0_0_1 - 0.0301408179012338*G0_1_0; A[303] = 0.0710462136243358*G0_0_0 - 0.0301408179012364*G0_0_1 - 0.0301408179012346*G0_1_0; A[304] = -0.0710462136243377*G0_0_1 - 0.071046213624339*G0_1_0; A[305] = -0.938671186067014*G0_0_0 - 0.669556740520278*G0_0_1 - 0.269114445546736*G0_1_0 - 0.340160659171073*G0_1_1; A[306] = 1.96345899470898*G0_0_0 + 1.37786596119928*G0_0_1 + 0.663097993827155*G0_1_0 + 0.895612874779531*G0_1_1; A[307] = -2.56842826829804*G0_0_0 - 2.19166804453261*G0_0_1 - 0.865472056878301*G0_1_0 - 1.39508928571427*G0_1_1; A[308] = 1.98929398148147*G0_0_0 + 1.28098476080246*G0_0_1 + 1.28098476080246*G0_1_0 + 2.56196952160492*G0_1_1; A[309] = -0.465029761904761*G0_0_0 + 0.262655698853611*G0_0_1 + 0.262655698853609*G0_1_0; A[310] = 0.0495170579806064*G0_0_0 - 0.572675540123445*G0_0_1 - 0.572675540123445*G0_1_0; A[311] = 0.503782242063484*G0_0_0 + 1.66205081569664*G0_0_1 + 1.66205081569663*G0_1_0; A[312] = -0.273420276675487*G0_0_0 + 0.0731991291887106*G0_0_1 + 0.0731991291887092*G0_1_0; A[313] = 0.210985725308642*G0_0_0 - 0.572675540123459*G0_0_1 - 0.572675540123457*G0_1_0; A[314] = -0.142092427248674*G0_0_0 + 0.262655698853619*G0_0_1 + 0.262655698853617*G0_1_0; A[315] = -0.215291556437388*G0_0_0 - 0.215291556437389*G0_0_1 - 0.215291556437391*G0_1_0 - 0.215291556437392*G0_1_1; A[316] = 0.107645778218694*G0_0_0; A[317] = 0.107645778218693*G0_1_1; A[318] = -0.667403824955902*G0_0_0 - 0.262655698853609*G0_0_1 - 0.262655698853613*G0_1_0; A[319] = -0.344466490299827*G0_0_0 - 0.447806437389773*G0_0_1 - 0.447806437389772*G0_1_0 - 0.516699735449737*G0_1_1; A[320] = -0.516699735449724*G0_0_0 - 0.447806437389764*G0_0_1 - 0.447806437389765*G0_1_0 - 0.344466490299821*G0_1_1; A[321] = -0.262655698853615*G0_0_1 - 0.262655698853621*G0_1_0 - 0.66740382495591*G0_1_1; A[322] = -2.82031938932979*G0_0_0 - 1.15826857363315*G0_0_1 - 1.15826857363315*G0_1_0 + 0.503782242063499*G0_1_1; A[323] = 0.731991291887122*G0_0_0 + 2.04096395502644*G0_0_1 + 2.04096395502645*G0_1_0 - 0.61142802028219*G0_1_1; A[324] = -0.516699735449726*G0_0_0 - 0.930059523809516*G0_0_1 - 0.93005952380952*G0_1_0 + 0.680321318342151*G0_1_1; A[325] = 0.262655698853613*G0_0_1 + 0.262655698853621*G0_1_0 - 0.46502976190476*G0_1_1; A[326] = 0.503782242063491*G0_0_0 - 1.15826857363315*G0_0_1 - 1.15826857363315*G0_1_0 - 2.82031938932979*G0_1_1; A[327] = -0.611428020282184*G0_0_0 + 2.04096395502644*G0_0_1 + 2.04096395502644*G0_1_0 + 0.731991291887116*G0_1_1; A[328] = 0.680321318342151*G0_0_0 - 0.93005952380951*G0_0_1 - 0.930059523809514*G0_1_0 - 0.516699735449723*G0_1_1; A[329] = -0.465029761904761*G0_0_0 + 0.262655698853609*G0_0_1 + 0.262655698853611*G0_1_0; A[330] = 7.06156305114633*G0_0_0 + 3.10019841269839*G0_0_1 + 3.10019841269839*G0_1_0 + 7.06156305114637*G0_1_1; A[331] = -6.32957175925921*G0_0_0 - 3.05714010141091*G0_0_1 - 3.05714010141091*G0_1_0 - 1.80844907407406*G0_1_1; A[332] = 2.75573192239856*G0_0_0 + 1.37786596119928*G0_0_1 + 1.37786596119928*G0_1_0 + 1.03339947089946*G0_1_1; A[333] = -1.80844907407406*G0_0_0 - 3.05714010141091*G0_0_1 - 3.05714010141092*G0_1_0 - 6.32957175925924*G0_1_1; A[334] = 1.42092427248677*G0_0_0 + 1.46398258377424*G0_0_1 + 1.46398258377424*G0_1_0 + 1.42092427248676*G0_1_1; A[335] = 1.03339947089945*G0_0_0 + 1.37786596119928*G0_0_1 + 1.37786596119928*G0_1_0 + 2.75573192239858*G0_1_1; A[336] = -0.0538228891093484*G0_0_0 - 0.0538228891093485*G0_0_1 - 0.0538228891093457*G0_1_0 - 0.053822889109346*G0_1_1; A[337] = -0.0538228891093496*G0_0_0; A[338] = 0.107645778218695*G0_1_1; A[339] = 1.35633680555554*G0_0_0 + 0.572675540123445*G0_0_1 + 0.572675540123453*G0_1_0; A[340] = 0.387524801587307*G0_0_0 + 0.85901331018519*G0_0_1 + 0.859013310185178*G0_1_0 + 1.01187031525573*G0_1_1; A[341] = 0.0430583112874709*G0_0_0 + 0.374607308201052*G0_0_1 + 0.374607308201058*G0_1_0 + 1.03339947089946*G0_1_1; A[342] = -0.0731991291887092*G0_0_1 - 0.0731991291887109*G0_1_0 - 0.419818535052906*G0_1_1; A[343] = 1.35633680555554*G0_0_0 + 0.783661265432094*G0_0_1 + 0.783661265432094*G0_1_0 + 0.21098572530864*G0_1_1; A[344] = 0.387524801587298*G0_0_0 - 0.47148850859788*G0_0_1 - 0.471488508597881*G0_1_0 - 0.318631503527332*G0_1_1; A[345] = 0.0430583112874713*G0_0_0 - 0.33154899691358*G0_0_1 - 0.331548996913582*G0_1_0 + 0.327243165784829*G0_1_1; A[346] = 0.073199129188713*G0_0_1 + 0.0731991291887117*G0_1_0 - 0.273420276675482*G0_1_1; A[347] = 0.0495170579805969*G0_0_0 + 0.622192598104045*G0_0_1 + 0.622192598104045*G0_1_0 + 1.1948681382275*G0_1_1; A[348] = 0.00430583112875357*G0_0_0 - 2.40911251653437*G0_0_1 - 2.40911251653437*G0_1_0 - 3.81066054894177*G0_1_1; A[349] = 0.00430583112873832*G0_0_0 + 2.41341834766311*G0_0_1 + 2.41341834766311*G0_1_0 + 1.01187031525571*G0_1_1; A[350] = 0.0495170579806061*G0_0_0 - 0.572675540123445*G0_0_1 - 0.572675540123445*G0_1_0; A[351] = -6.32957175925921*G0_0_0 - 3.05714010141091*G0_0_1 - 3.05714010141091*G0_1_0 - 1.80844907407406*G0_1_1; A[352] = 9.94646990740734*G0_0_0 + 4.97323495370367*G0_0_1 + 4.97323495370367*G0_1_0 + 8.65472056878302*G0_1_1; A[353] = -6.32957175925921*G0_0_0 - 3.2724316578483*G0_0_1 - 3.2724316578483*G0_1_0 - 2.02374063051144*G0_1_1; A[354] = -0.387524801587296*G0_0_0 + 2.55120494378305*G0_0_1 + 2.55120494378306*G0_1_0 - 0.387524801587306*G0_1_1; A[355] = -0.387524801587308*G0_0_0 - 2.93872974537036*G0_0_1 - 2.93872974537035*G0_1_0 - 5.87745949074072*G0_1_1; A[356] = -0.0861166225749424*G0_0_0 - 0.0430583112874729*G0_0_1 - 0.043058311287477*G0_1_0 + 1.42092427248677*G0_1_1; A[357] = 0.107645778218694*G0_0_0 + 0.107645778218695*G0_0_1 + 0.107645778218693*G0_1_0 + 0.107645778218693*G0_1_1; A[358] = -0.215291556437387*G0_0_0; A[359] = 0.107645778218692*G0_1_1; A[360] = -2.82031938932979*G0_0_0 - 1.66205081569663*G0_0_1 - 1.66205081569664*G0_1_0; A[361] = 0.731991291887121*G0_0_0 - 1.30897266313933*G0_0_1 - 1.30897266313933*G0_1_0 - 3.96136463844796*G0_1_1; A[362] = -0.516699735449731*G0_0_0 + 0.41335978835979*G0_0_1 + 0.413359788359793*G0_1_0 + 2.02374063051146*G0_1_1; A[363] = -0.262655698853619*G0_0_1 - 0.262655698853619*G0_1_0 - 0.99034115961199*G0_1_1; A[364] = -0.667403824955901*G0_0_0 - 0.40474812610229*G0_0_1 - 0.404748126102293*G0_1_0 - 0.142092427248677*G0_1_1; A[365] = -0.344466490299823*G0_0_0 + 0.103339947089945*G0_0_1 + 0.103339947089949*G0_1_0 + 0.0344466490299834*G0_1_1; A[366] = -0.516699735449729*G0_0_0 - 0.068893298059963*G0_0_1 - 0.0688932980599681*G0_1_0 + 0.0344466490299786*G0_1_1; A[367] = 0.262655698853614*G0_0_1 + 0.262655698853618*G0_1_0 - 0.142092427248673*G0_1_1; A[368] = -0.465029761904755*G0_0_0 - 0.727685460758368*G0_0_1 - 0.727685460758368*G0_1_0 - 0.990341159611985*G0_1_1; A[369] = 0.680321318342141*G0_0_0 + 1.61038084215166*G0_0_1 + 1.61038084215166*G0_1_0 + 2.02374063051145*G0_1_1; A[370] = -0.611428020282177*G0_0_0 - 2.65239197530862*G0_0_1 - 2.65239197530862*G0_1_0 - 3.96136463844795*G0_1_1; A[371] = 0.503782242063484*G0_0_0 + 1.66205081569663*G0_0_1 + 1.66205081569664*G0_1_0; A[372] = 2.75573192239856*G0_0_0 + 1.37786596119928*G0_0_1 + 1.37786596119928*G0_1_0 + 1.03339947089946*G0_1_1; A[373] = -6.32957175925921*G0_0_0 - 3.2724316578483*G0_0_1 - 3.2724316578483*G0_1_0 - 2.02374063051144*G0_1_1; A[374] = 7.06156305114634*G0_0_0 + 3.96136463844795*G0_0_1 + 3.96136463844795*G0_1_0 + 7.92272927689591*G0_1_1; A[375] = 1.42092427248677*G0_0_0 - 0.0430583112874708*G0_0_1 - 0.0430583112874745*G0_1_0 - 0.086116622574956*G0_1_1; A[376] = -1.80844907407407*G0_0_0 + 1.24869102733686*G0_0_1 + 1.24869102733685*G0_1_0 - 2.02374063051146*G0_1_1; A[377] = 1.03339947089946*G0_0_0 - 0.344466490299824*G0_0_1 - 0.344466490299825*G0_1_0 + 1.03339947089947*G0_1_1; A[378] = -0.0538228891093463*G0_0_0 - 0.0538228891093464*G0_0_1 - 0.0538228891093459*G0_1_0 - 0.0538228891093456*G0_1_1; A[379] = 0.107645778218696*G0_0_0; A[380] = -0.0538228891093447*G0_1_1; A[381] = -0.419818535052911*G0_0_0 - 0.0731991291887099*G0_0_1 - 0.0731991291887145*G0_1_0; A[382] = 1.03339947089947*G0_0_0 + 0.374607308201053*G0_0_1 + 0.374607308201062*G0_1_0 + 0.0430583112874783*G0_1_1; A[383] = 1.01187031525572*G0_0_0 + 0.859013310185178*G0_0_1 + 0.859013310185172*G0_1_0 + 0.387524801587298*G0_1_1; A[384] = 0.572675540123456*G0_0_1 + 0.572675540123462*G0_1_0 + 1.35633680555555*G0_1_1; A[385] = 1.19486813822751*G0_0_0 + 0.622192598104048*G0_0_1 + 0.622192598104048*G0_1_0 + 0.0495170579805897*G0_1_1; A[386] = -3.81066054894178*G0_0_0 - 2.40911251653437*G0_0_1 - 2.40911251653438*G0_1_0 + 0.00430583112875677*G0_1_1; A[387] = 1.01187031525573*G0_0_0 + 2.41341834766313*G0_0_1 + 2.41341834766314*G0_1_0 + 0.00430583112874544*G0_1_1; A[388] = -0.572675540123456*G0_0_1 - 0.572675540123462*G0_1_0 + 0.0495170579805963*G0_1_1; A[389] = 0.210985725308639*G0_0_0 + 0.783661265432096*G0_0_1 + 0.783661265432093*G0_1_0 + 1.35633680555555*G0_1_1; A[390] = -0.318631503527334*G0_0_0 - 0.471488508597882*G0_0_1 - 0.471488508597882*G0_1_0 + 0.387524801587306*G0_1_1; A[391] = 0.32724316578483*G0_0_0 - 0.331548996913577*G0_0_1 - 0.331548996913579*G0_1_0 + 0.0430583112874745*G0_1_1; A[392] = -0.273420276675487*G0_0_0 + 0.0731991291887092*G0_0_1 + 0.0731991291887106*G0_1_0; A[393] = -1.80844907407406*G0_0_0 - 3.05714010141092*G0_0_1 - 3.05714010141091*G0_1_0 - 6.32957175925924*G0_1_1; A[394] = -0.387524801587296*G0_0_0 + 2.55120494378306*G0_0_1 + 2.55120494378305*G0_1_0 - 0.387524801587306*G0_1_1; A[395] = 1.42092427248677*G0_0_0 - 0.0430583112874745*G0_0_1 - 0.043058311287471*G0_1_0 - 0.0861166225749559*G0_1_1; A[396] = 8.65472056878303*G0_0_0 + 4.97323495370368*G0_0_1 + 4.97323495370368*G0_1_0 + 9.94646990740738*G0_1_1; A[397] = -5.87745949074072*G0_0_0 - 2.93872974537036*G0_0_1 - 2.93872974537036*G0_1_0 - 0.387524801587293*G0_1_1; A[398] = -2.02374063051144*G0_0_0 - 3.27243165784831*G0_0_1 - 3.27243165784831*G0_1_0 - 6.32957175925924*G0_1_1; A[399] = 0.107645778218695*G0_0_0 + 0.107645778218695*G0_0_1 + 0.107645778218694*G0_1_0 + 0.107645778218695*G0_1_1; A[400] = -0.0538228891093465*G0_0_0; A[401] = -0.0538228891093471*G0_1_1; A[402] = 1.19486813822751*G0_0_0 + 0.572675540123456*G0_0_1 + 0.572675540123455*G0_1_0; A[403] = -3.81066054894178*G0_0_0 - 1.4015480324074*G0_0_1 - 1.4015480324074*G0_1_0 + 1.01187031525572*G0_1_1; A[404] = 1.01187031525573*G0_0_0 - 1.4015480324074*G0_0_1 - 1.4015480324074*G0_1_0 - 3.81066054894177*G0_1_1; A[405] = 0.572675540123454*G0_0_1 + 0.572675540123451*G0_1_0 + 1.1948681382275*G0_1_1; A[406] = -0.419818535052911*G0_0_0 - 0.346619405864199*G0_0_1 - 0.346619405864192*G0_1_0 - 0.273420276675483*G0_1_1; A[407] = 1.03339947089947*G0_0_0 + 0.658792162698414*G0_0_1 + 0.658792162698407*G0_1_0 + 0.327243165784827*G0_1_1; A[408] = 1.01187031525572*G0_0_0 + 0.15285700507054*G0_0_1 + 0.15285700507055*G0_1_0 - 0.318631503527332*G0_1_1; A[409] = -0.572675540123448*G0_0_1 - 0.572675540123452*G0_1_0 + 0.210985725308638*G0_1_1; A[410] = -0.273420276675483*G0_0_0 - 0.346619405864195*G0_0_1 - 0.346619405864192*G0_1_0 - 0.419818535052904*G0_1_1; A[411] = 0.327243165784828*G0_0_0 + 0.658792162698409*G0_0_1 + 0.658792162698405*G0_1_0 + 1.03339947089947*G0_1_1; A[412] = -0.318631503527333*G0_0_0 + 0.152857005070543*G0_0_1 + 0.152857005070552*G0_1_0 + 1.01187031525573*G0_1_1; A[413] = 0.210985725308642*G0_0_0 - 0.572675540123457*G0_0_1 - 0.572675540123459*G0_1_0; A[414] = 1.42092427248677*G0_0_0 + 1.46398258377424*G0_0_1 + 1.46398258377424*G0_1_0 + 1.42092427248676*G0_1_1; A[415] = -0.387524801587308*G0_0_0 - 2.93872974537035*G0_0_1 - 2.93872974537036*G0_1_0 - 5.87745949074072*G0_1_1; A[416] = -1.80844907407407*G0_0_0 + 1.24869102733685*G0_0_1 + 1.24869102733686*G0_1_0 - 2.02374063051146*G0_1_1; A[417] = -5.87745949074072*G0_0_0 - 2.93872974537036*G0_0_1 - 2.93872974537036*G0_1_0 - 0.387524801587294*G0_1_1; A[418] = 8.65472056878303*G0_0_0 + 3.68148561507935*G0_0_1 + 3.68148561507935*G0_1_0 + 8.65472056878304*G0_1_1; A[419] = -2.02374063051145*G0_0_0 + 1.24869102733686*G0_0_1 + 1.24869102733686*G0_1_0 - 1.80844907407407*G0_1_1; A[420] = 0.107645778218692*G0_0_0 + 0.107645778218692*G0_0_1 + 0.107645778218692*G0_1_0 + 0.107645778218692*G0_1_1; A[421] = 0.107645778218693*G0_0_0; A[422] = -0.21529155643739*G0_1_1; A[423] = -0.990341159611985*G0_0_0 - 0.262655698853615*G0_0_1 - 0.262655698853612*G0_1_0; A[424] = 2.02374063051145*G0_0_0 + 0.413359788359789*G0_0_1 + 0.413359788359785*G0_1_0 - 0.516699735449728*G0_1_1; A[425] = -3.96136463844795*G0_0_0 - 1.30897266313932*G0_0_1 - 1.30897266313932*G0_1_0 + 0.731991291887121*G0_1_1; A[426] = -1.66205081569664*G0_0_1 - 1.66205081569664*G0_1_0 - 2.82031938932979*G0_1_1; A[427] = -0.990341159611981*G0_0_0 - 0.727685460758364*G0_0_1 - 0.727685460758374*G0_1_0 - 0.465029761904753*G0_1_1; A[428] = 2.02374063051144*G0_0_0 + 1.61038084215165*G0_0_1 + 1.61038084215166*G0_1_0 + 0.680321318342141*G0_1_1; A[429] = -3.96136463844795*G0_0_0 - 2.65239197530862*G0_0_1 - 2.65239197530864*G0_1_0 - 0.611428020282183*G0_1_1; A[430] = 1.66205081569664*G0_0_1 + 1.66205081569664*G0_1_0 + 0.503782242063493*G0_1_1; A[431] = -0.142092427248672*G0_0_0 - 0.404748126102292*G0_0_1 - 0.404748126102289*G0_1_0 - 0.667403824955909*G0_1_1; A[432] = 0.0344466490299804*G0_0_0 + 0.103339947089946*G0_0_1 + 0.103339947089947*G0_1_0 - 0.344466490299824*G0_1_1; A[433] = 0.0344466490299806*G0_0_0 - 0.0688932980599646*G0_0_1 - 0.0688932980599665*G0_1_0 - 0.516699735449737*G0_1_1; A[434] = -0.142092427248674*G0_0_0 + 0.262655698853617*G0_0_1 + 0.262655698853618*G0_1_0; A[435] = 1.03339947089945*G0_0_0 + 1.37786596119928*G0_0_1 + 1.37786596119928*G0_1_0 + 2.75573192239858*G0_1_1; A[436] = -0.0861166225749425*G0_0_0 - 0.043058311287477*G0_0_1 - 0.043058311287473*G0_1_0 + 1.42092427248677*G0_1_1; A[437] = 1.03339947089946*G0_0_0 - 0.344466490299825*G0_0_1 - 0.344466490299824*G0_1_0 + 1.03339947089947*G0_1_1; A[438] = -2.02374063051144*G0_0_0 - 3.27243165784831*G0_0_1 - 3.27243165784831*G0_1_0 - 6.32957175925924*G0_1_1; A[439] = -2.02374063051145*G0_0_0 + 1.24869102733686*G0_0_1 + 1.24869102733686*G0_1_0 - 1.80844907407407*G0_1_1; A[440] = 7.9227292768959*G0_0_0 + 3.96136463844795*G0_0_1 + 3.96136463844795*G0_1_0 + 7.06156305114636*G0_1_1; } /// Constructor poisson2d_5_cell_integral_1_otherwise::poisson2d_5_cell_integral_1_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor poisson2d_5_cell_integral_1_otherwise::~poisson2d_5_cell_integral_1_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell void poisson2d_5_cell_integral_1_otherwise::tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 21 // Number of operations (multiply-add pairs) for tensor contraction: 430 // Total number of operations (multiply-add pairs): 454 // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0 = det*w[0][0]*(1.0); const double G0_1 = det*w[0][1]*(1.0); const double G0_2 = det*w[0][2]*(1.0); const double G0_3 = det*w[0][3]*(1.0); const double G0_4 = det*w[0][4]*(1.0); const double G0_5 = det*w[0][5]*(1.0); const double G0_6 = det*w[0][6]*(1.0); const double G0_7 = det*w[0][7]*(1.0); const double G0_8 = det*w[0][8]*(1.0); const double G0_9 = det*w[0][9]*(1.0); const double G0_10 = det*w[0][10]*(1.0); const double G0_11 = det*w[0][11]*(1.0); const double G0_12 = det*w[0][12]*(1.0); const double G0_13 = det*w[0][13]*(1.0); const double G0_14 = det*w[0][14]*(1.0); const double G0_15 = det*w[0][15]*(1.0); const double G0_16 = det*w[0][16]*(1.0); const double G0_17 = det*w[0][17]*(1.0); const double G0_18 = det*w[0][18]*(1.0); const double G0_19 = det*w[0][19]*(1.0); const double G0_20 = det*w[0][20]*(1.0); // Compute element tensor A[0] = 0.00138945256132761*G0_0 + 0.000123877456776765*G0_1 + 0.000123877456776765*G0_2 + 0.000363647010782439*G0_3 + 0.000207201813104596*G0_4 + 0.000207201813104597*G0_5 + 0.000363647010782438*G0_6 + 0.00118136348605102*G0_7 - 0.000958243145743178*G0_8 + 0.000462681126743636*G0_9 - 2.29644326866568e-05*G0_10 + 0.00118136348605102*G0_11 - 0.000958243145743178*G0_12 + 0.000462681126743638*G0_13 - 2.29644326866555e-05*G0_14 + 0.000892481361231364*G0_15 - 0.000974683591871135*G0_16 + 0.000879433388113953*G0_17 - 0.000974683591871131*G0_18 + 0.000649789061247419*G0_19 + 0.000879433388113951*G0_20; A[1] = 0.000123877456776765*G0_0 + 0.00138945256132761*G0_1 + 0.000123877456776766*G0_2 + 0.00118136348605102*G0_3 - 0.000958243145743182*G0_4 + 0.000462681126743644*G0_5 - 2.2964432686658e-05*G0_6 + 0.000363647010782441*G0_7 + 0.000207201813104595*G0_8 + 0.000207201813104599*G0_9 + 0.000363647010782438*G0_10 - 2.29644326866539e-05*G0_11 + 0.000462681126743647*G0_12 - 0.000958243145743182*G0_13 + 0.00118136348605103*G0_14 + 0.000879433388113976*G0_15 - 0.000974683591871122*G0_16 + 0.00089248136123139*G0_17 + 0.000649789061247416*G0_18 - 0.000974683591871126*G0_19 + 0.00087943338811397*G0_20; A[2] = 0.000123877456776765*G0_0 + 0.000123877456776766*G0_1 + 0.00138945256132761*G0_2 - 2.29644326866539e-05*G0_3 + 0.000462681126743638*G0_4 - 0.000958243145743175*G0_5 + 0.00118136348605102*G0_6 - 2.29644326866545e-05*G0_7 + 0.000462681126743639*G0_8 - 0.000958243145743178*G0_9 + 0.00118136348605102*G0_10 + 0.000363647010782442*G0_11 + 0.0002072018131046*G0_12 + 0.000207201813104598*G0_13 + 0.00036364701078244*G0_14 + 0.000879433388113975*G0_15 + 0.000649789061247419*G0_16 + 0.00087943338811397*G0_17 - 0.000974683591871126*G0_18 - 0.00097468359187113*G0_19 + 0.000892481361231379*G0_20; A[3] = 0.000363647010782439*G0_0 + 0.00118136348605102*G0_1 - 2.29644326866539e-05*G0_2 + 0.0147050657033301*G0_3 - 0.00958373625474353*G0_4 + 0.00770482812583532*G0_5 - 0.00396984582097443*G0_6 - 0.000411011153198678*G0_7 - 0.00144832501603339*G0_8 - 4.56679059109682e-05*G0_9 - 0.00248237688558877*G0_10 - 0.00248237688558878*G0_11 + 0.00576068013134009*G0_12 - 0.00735253285166507*G0_13 + 0.00735253285166507*G0_14 + 0.00078287838704508*G0_15 - 0.00381653213684479*G0_16 + 0.0102426588971732*G0_17 - 0.00137003717732889*G0_18 + 9.78597983806315e-05*G0_19 - 0.00280531422024486*G0_20; A[4] = 0.000207201813104596*G0_0 - 0.000958243145743182*G0_1 + 0.000462681126743638*G0_2 - 0.00958373625474353*G0_3 + 0.0220771705146713*G0_4 - 0.0134785562302928*G0_5 + 0.00770482812583534*G0_6 - 0.00144832501603339*G0_7 + 0.00281836219336229*G0_8 - 0.00135698920421147*G0_9 + 0.00576068013134005*G0_10 - 4.56679059109496e-05*G0_11 - 0.00135698920421148*G0_12 + 0.0029488419245365*G0_13 - 0.00735253285166506*G0_14 + 0.00313151354818033*G0_15 - 0.00548014870931554*G0_16 - 0.00143527704291599*G0_17 - 0.000587158790283811*G0_18 + 0.00528442911255429*G0_19 + 0.00508870951579302*G0_20; A[5] = 0.000207201813104597*G0_0 + 0.000462681126743644*G0_1 - 0.000958243145743175*G0_2 + 0.00770482812583532*G0_3 - 0.0134785562302928*G0_4 + 0.0220771705146713*G0_5 - 0.00958373625474352*G0_6 - 4.56679059109687e-05*G0_7 - 0.00135698920421146*G0_8 + 0.00294884192453647*G0_9 - 0.00735253285166504*G0_10 - 0.0014483250160334*G0_11 + 0.00281836219336231*G0_12 - 0.00135698920421148*G0_13 + 0.00576068013134005*G0_14 + 0.00313151354818033*G0_15 - 0.000587158790283832*G0_16 + 0.00508870951579303*G0_17 - 0.00548014870931556*G0_18 + 0.0052844291125543*G0_19 - 0.00143527704291597*G0_20; A[6] = 0.000363647010782438*G0_0 - 2.29644326866579e-05*G0_1 + 0.00118136348605102*G0_2 - 0.00396984582097443*G0_3 + 0.00770482812583534*G0_4 - 0.00958373625474352*G0_5 + 0.0147050657033301*G0_6 - 0.00248237688558878*G0_7 + 0.00576068013134005*G0_8 - 0.00735253285166505*G0_9 + 0.00735253285166505*G0_10 - 0.000411011153198661*G0_11 - 0.0014483250160334*G0_12 - 4.56679059109575e-05*G0_13 - 0.00248237688558878*G0_14 + 0.000782878387045073*G0_15 - 0.00137003717732888*G0_16 - 0.00280531422024488*G0_17 - 0.00381653213684476*G0_18 + 9.7859798380642e-05*G0_19 + 0.0102426588971731*G0_20; A[7] = 0.00118136348605102*G0_0 + 0.000363647010782441*G0_1 - 2.29644326866545e-05*G0_2 - 0.000411011153198678*G0_3 - 0.00144832501603339*G0_4 - 4.56679059109689e-05*G0_5 - 0.00248237688558878*G0_6 + 0.0147050657033301*G0_7 - 0.00958373625474352*G0_8 + 0.00770482812583533*G0_9 - 0.00396984582097444*G0_10 + 0.00735253285166505*G0_11 - 0.00735253285166505*G0_12 + 0.00576068013134006*G0_13 - 0.00248237688558879*G0_14 + 0.0102426588971732*G0_15 - 0.00381653213684478*G0_16 + 0.000782878387045078*G0_17 + 9.78597983806186e-05*G0_18 - 0.00137003717732889*G0_19 - 0.00280531422024487*G0_20; A[8] = -0.000958243145743178*G0_0 + 0.000207201813104595*G0_1 + 0.000462681126743639*G0_2 - 0.00144832501603339*G0_3 + 0.00281836219336229*G0_4 - 0.00135698920421147*G0_5 + 0.00576068013134005*G0_6 - 0.00958373625474352*G0_7 + 0.0220771705146712*G0_8 - 0.0134785562302928*G0_9 + 0.00770482812583534*G0_10 - 0.00735253285166504*G0_11 + 0.00294884192453647*G0_12 - 0.00135698920421148*G0_13 - 4.56679059109633e-05*G0_14 - 0.00143527704291601*G0_15 - 0.00548014870931555*G0_16 + 0.0031315135481803*G0_17 + 0.0052844291125543*G0_18 - 0.000587158790283819*G0_19 + 0.00508870951579298*G0_20; A[9] = 0.000462681126743636*G0_0 + 0.0002072018131046*G0_1 - 0.000958243145743178*G0_2 - 4.56679059109682e-05*G0_3 - 0.00135698920421147*G0_4 + 0.00294884192453647*G0_5 - 0.00735253285166505*G0_6 + 0.00770482812583533*G0_7 - 0.0134785562302928*G0_8 + 0.0220771705146713*G0_9 - 0.00958373625474355*G0_10 + 0.00576068013134005*G0_11 - 0.00135698920421147*G0_12 + 0.0028183621933623*G0_13 - 0.0014483250160334*G0_14 + 0.00508870951579306*G0_15 - 0.000587158790283817*G0_16 + 0.00313151354818034*G0_17 + 0.00528442911255427*G0_18 - 0.00548014870931555*G0_19 - 0.00143527704291596*G0_20; A[10] = -2.29644326866567e-05*G0_0 + 0.000363647010782438*G0_1 + 0.00118136348605102*G0_2 - 0.00248237688558877*G0_3 + 0.00576068013134005*G0_4 - 0.00735253285166504*G0_5 + 0.00735253285166505*G0_6 - 0.00396984582097444*G0_7 + 0.00770482812583534*G0_8 - 0.00958373625474355*G0_9 + 0.0147050657033301*G0_10 - 0.00248237688558878*G0_11 - 4.56679059109584e-05*G0_12 - 0.0014483250160334*G0_13 - 0.000411011153198662*G0_14 - 0.0028053142202449*G0_15 - 0.00137003717732888*G0_16 + 0.000782878387045079*G0_17 + 9.78597983806383e-05*G0_18 - 0.00381653213684477*G0_19 + 0.0102426588971731*G0_20; A[11] = 0.00118136348605102*G0_0 - 2.29644326866539e-05*G0_1 + 0.000363647010782442*G0_2 - 0.00248237688558878*G0_3 - 4.56679059109497e-05*G0_4 - 0.0014483250160334*G0_5 - 0.000411011153198661*G0_6 + 0.00735253285166505*G0_7 - 0.00735253285166504*G0_8 + 0.00576068013134005*G0_9 - 0.00248237688558878*G0_10 + 0.0147050657033301*G0_11 - 0.00958373625474354*G0_12 + 0.00770482812583536*G0_13 - 0.00396984582097444*G0_14 + 0.0102426588971732*G0_15 + 9.7859798380627e-05*G0_16 - 0.00280531422024484*G0_17 - 0.00381653213684478*G0_18 - 0.00137003717732887*G0_19 + 0.000782878387045111*G0_20; A[12] = -0.000958243145743178*G0_0 + 0.000462681126743647*G0_1 + 0.0002072018131046*G0_2 + 0.00576068013134009*G0_3 - 0.00135698920421148*G0_4 + 0.00281836219336231*G0_5 - 0.0014483250160334*G0_6 - 0.00735253285166505*G0_7 + 0.00294884192453647*G0_8 - 0.00135698920421147*G0_9 - 4.56679059109584e-05*G0_10 - 0.00958373625474354*G0_11 + 0.0220771705146713*G0_12 - 0.0134785562302928*G0_13 + 0.00770482812583538*G0_14 - 0.00143527704291595*G0_15 + 0.00528442911255429*G0_16 + 0.00508870951579309*G0_17 - 0.00548014870931556*G0_18 - 0.000587158790283808*G0_19 + 0.00313151354818035*G0_20; A[13] = 0.000462681126743638*G0_0 - 0.000958243145743182*G0_1 + 0.000207201813104598*G0_2 - 0.00735253285166507*G0_3 + 0.0029488419245365*G0_4 - 0.00135698920421148*G0_5 - 4.5667905910958e-05*G0_6 + 0.00576068013134007*G0_7 - 0.00135698920421148*G0_8 + 0.0028183621933623*G0_9 - 0.0014483250160334*G0_10 + 0.00770482812583536*G0_11 - 0.0134785562302928*G0_12 + 0.0220771705146713*G0_13 - 0.00958373625474357*G0_14 + 0.00508870951579306*G0_15 + 0.0052844291125543*G0_16 - 0.00143527704291599*G0_17 - 0.000587158790283811*G0_18 - 0.00548014870931556*G0_19 + 0.00313151354818033*G0_20; A[14] = -2.29644326866554e-05*G0_0 + 0.00118136348605103*G0_1 + 0.00036364701078244*G0_2 + 0.00735253285166507*G0_3 - 0.00735253285166506*G0_4 + 0.00576068013134005*G0_5 - 0.00248237688558878*G0_6 - 0.00248237688558879*G0_7 - 4.56679059109632e-05*G0_8 - 0.0014483250160334*G0_9 - 0.000411011153198661*G0_10 - 0.00396984582097444*G0_11 + 0.00770482812583538*G0_12 - 0.00958373625474357*G0_13 + 0.0147050657033301*G0_14 - 0.00280531422024488*G0_15 + 9.7859798380624e-05*G0_16 + 0.0102426588971732*G0_17 - 0.00137003717732889*G0_18 - 0.00381653213684476*G0_19 + 0.000782878387045086*G0_20; A[15] = 0.000892481361231365*G0_0 + 0.000879433388113976*G0_1 + 0.000879433388113975*G0_2 + 0.00078287838704508*G0_3 + 0.00313151354818033*G0_4 + 0.00313151354818033*G0_5 + 0.000782878387045073*G0_6 + 0.0102426588971732*G0_7 - 0.00143527704291601*G0_8 + 0.00508870951579306*G0_9 - 0.0028053142202449*G0_10 + 0.0102426588971732*G0_11 - 0.00143527704291595*G0_12 + 0.00508870951579306*G0_13 - 0.00280531422024487*G0_14 + 0.0704590548340574*G0_15 - 0.0156575677409016*G0_16 + 0.0117431758056762*G0_17 - 0.0156575677409016*G0_18 + 0.0039143919352254*G0_19 + 0.0117431758056762*G0_20; A[16] = -0.000974683591871135*G0_0 - 0.000974683591871122*G0_1 + 0.000649789061247419*G0_2 - 0.00381653213684479*G0_3 - 0.00548014870931554*G0_4 - 0.000587158790283832*G0_5 - 0.00137003717732888*G0_6 - 0.00381653213684478*G0_7 - 0.00548014870931555*G0_8 - 0.000587158790283815*G0_9 - 0.00137003717732888*G0_10 + 9.78597983806265e-05*G0_11 + 0.00528442911255429*G0_12 + 0.0052844291125543*G0_13 + 9.78597983806244e-05*G0_14 - 0.0156575677409016*G0_15 + 0.0763306427368953*G0_16 - 0.0156575677409016*G0_17 - 0.0117431758056762*G0_18 - 0.0117431758056762*G0_19 + 0.0039143919352254*G0_20; A[17] = 0.000879433388113953*G0_0 + 0.00089248136123139*G0_1 + 0.00087943338811397*G0_2 + 0.0102426588971732*G0_3 - 0.00143527704291599*G0_4 + 0.00508870951579303*G0_5 - 0.00280531422024488*G0_6 + 0.000782878387045078*G0_7 + 0.0031315135481803*G0_8 + 0.00313151354818034*G0_9 + 0.000782878387045079*G0_10 - 0.00280531422024484*G0_11 + 0.00508870951579309*G0_12 - 0.00143527704291599*G0_13 + 0.0102426588971732*G0_14 + 0.0117431758056762*G0_15 - 0.0156575677409016*G0_16 + 0.0704590548340572*G0_17 + 0.00391439193522537*G0_18 - 0.0156575677409016*G0_19 + 0.0117431758056762*G0_20; A[18] = -0.000974683591871131*G0_0 + 0.000649789061247416*G0_1 - 0.000974683591871126*G0_2 - 0.00137003717732889*G0_3 - 0.000587158790283811*G0_4 - 0.00548014870931556*G0_5 - 0.00381653213684476*G0_6 + 9.78597983806186e-05*G0_7 + 0.00528442911255429*G0_8 + 0.00528442911255427*G0_9 + 9.78597983806388e-05*G0_10 - 0.00381653213684478*G0_11 - 0.00548014870931557*G0_12 - 0.00058715879028381*G0_13 - 0.00137003717732889*G0_14 - 0.0156575677409016*G0_15 - 0.0117431758056762*G0_16 + 0.00391439193522537*G0_17 + 0.0763306427368953*G0_18 - 0.0117431758056762*G0_19 - 0.0156575677409016*G0_20; A[19] = 0.000649789061247419*G0_0 - 0.000974683591871126*G0_1 - 0.00097468359187113*G0_2 + 9.78597983806303e-05*G0_3 + 0.00528442911255429*G0_4 + 0.0052844291125543*G0_5 + 9.78597983806421e-05*G0_6 - 0.00137003717732889*G0_7 - 0.000587158790283818*G0_8 - 0.00548014870931555*G0_9 - 0.00381653213684477*G0_10 - 0.00137003717732887*G0_11 - 0.000587158790283809*G0_12 - 0.00548014870931556*G0_13 - 0.00381653213684476*G0_14 + 0.00391439193522541*G0_15 - 0.0117431758056762*G0_16 - 0.0156575677409016*G0_17 - 0.0117431758056762*G0_18 + 0.0763306427368953*G0_19 - 0.0156575677409016*G0_20; A[20] = 0.000879433388113951*G0_0 + 0.00087943338811397*G0_1 + 0.000892481361231379*G0_2 - 0.00280531422024486*G0_3 + 0.00508870951579302*G0_4 - 0.00143527704291597*G0_5 + 0.0102426588971731*G0_6 - 0.00280531422024487*G0_7 + 0.00508870951579298*G0_8 - 0.00143527704291596*G0_9 + 0.0102426588971731*G0_10 + 0.000782878387045111*G0_11 + 0.00313151354818035*G0_12 + 0.00313151354818033*G0_13 + 0.000782878387045086*G0_14 + 0.0117431758056762*G0_15 + 0.0039143919352254*G0_16 + 0.0117431758056762*G0_17 - 0.0156575677409016*G0_18 - 0.0156575677409017*G0_19 + 0.0704590548340572*G0_20; } /// Constructor poisson2d_5_form_0::poisson2d_5_form_0() : ufc::form() { // Do nothing } /// Destructor poisson2d_5_form_0::~poisson2d_5_form_0() { // Do nothing } /// Return a string identifying the form const char* poisson2d_5_form_0::signature() const { return "6a054933ddf3a65a553ded74dcd366870588bf106c1c4fb3d91584c0000fc3fcb7b234179630ea42112ce6c1a8175b19b814a020a4b1883d27746a239b7a5e17"; } /// Return the rank of the global tensor (r) std::size_t poisson2d_5_form_0::rank() const { return 2; } /// Return the number of coefficients (n) std::size_t poisson2d_5_form_0::num_coefficients() const { return 0; } /// Return the number of cell domains std::size_t poisson2d_5_form_0::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson2d_5_form_0::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson2d_5_form_0::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson2d_5_form_0::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson2d_5_form_0::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson2d_5_form_0::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson2d_5_form_0::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson2d_5_form_0::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson2d_5_form_0::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson2d_5_finite_element_0(); break; } case 1: { return new poisson2d_5_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson2d_5_form_0::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson2d_5_dofmap_0(); break; } case 1: { return new poisson2d_5_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson2d_5_form_0::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson2d_5_form_0::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson2d_5_form_0::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson2d_5_form_0::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson2d_5_form_0::create_default_cell_integral() const { return new poisson2d_5_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson2d_5_form_0::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson2d_5_form_0::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson2d_5_form_0::create_default_point_integral() const { return 0; } /// Constructor poisson2d_5_form_1::poisson2d_5_form_1() : ufc::form() { // Do nothing } /// Destructor poisson2d_5_form_1::~poisson2d_5_form_1() { // Do nothing } /// Return a string identifying the form const char* poisson2d_5_form_1::signature() const { return "b1a099be42c9c08580a325df4711f42f1da8ec8de4243336df622cc4a21d9591b9fb4f9a73677e2d648766c283e0f89c8ca7edc17fedb44e8dd6883292e185ab"; } /// Return the rank of the global tensor (r) std::size_t poisson2d_5_form_1::rank() const { return 1; } /// Return the number of coefficients (n) std::size_t poisson2d_5_form_1::num_coefficients() const { return 1; } /// Return the number of cell domains std::size_t poisson2d_5_form_1::num_cell_domains() const { return 0; } /// Return the number of exterior facet domains std::size_t poisson2d_5_form_1::num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains std::size_t poisson2d_5_form_1::num_interior_facet_domains() const { return 0; } /// Return the number of point domains std::size_t poisson2d_5_form_1::num_point_domains() const { return 0; } /// Return whether the form has any cell integrals bool poisson2d_5_form_1::has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals bool poisson2d_5_form_1::has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals bool poisson2d_5_form_1::has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals bool poisson2d_5_form_1::has_point_integrals() const { return false; } /// Create a new finite element for argument function i ufc::finite_element* poisson2d_5_form_1::create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson2d_5_finite_element_0(); break; } case 1: { return new poisson2d_5_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i ufc::dofmap* poisson2d_5_form_1::create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson2d_5_dofmap_0(); break; } case 1: { return new poisson2d_5_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i ufc::cell_integral* poisson2d_5_form_1::create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i ufc::exterior_facet_integral* poisson2d_5_form_1::create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i ufc::interior_facet_integral* poisson2d_5_form_1::create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i ufc::point_integral* poisson2d_5_form_1::create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else ufc::cell_integral* poisson2d_5_form_1::create_default_cell_integral() const { return new poisson2d_5_cell_integral_1_otherwise(); } /// Create a new exterior facet integral on everywhere else ufc::exterior_facet_integral* poisson2d_5_form_1::create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else ufc::interior_facet_integral* poisson2d_5_form_1::create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else ufc::point_integral* poisson2d_5_form_1::create_default_point_integral() const { return 0; } dolfin-1.3.0/bench/fem/jit/0000755000175000017500000000000012263014601015255 5ustar johannrjohannrdolfin-1.3.0/bench/fem/jit/python/0000755000175000017500000000000012263014601016576 5ustar johannrjohannrdolfin-1.3.0/bench/fem/jit/python/bench_fem_jit_python0000755000175000017500000000361312263014601022704 0ustar johannrjohannr#!/usr/bin/env python """This script provides a benchmark for the JIT compiler, in particular the speed of the in-memory cache.""" # Copyright (C) 2008-2010 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2008-09-04 # Last changed: 2010-05-03 from dolfin import * from time import time print "JIT compilation (in memory cache)" # Benchmark parameters NUM_REPS = 10 SIZE = 3 # Create mesh mesh = UnitCube(SIZE, SIZE, SIZE) # Create form (velocity equation for "G2") V = VectorFunctionSpace(mesh, "Lagrange", 1) Q = FunctionSpace(mesh, "Lagrange", 1) DG = FunctionSpace(mesh, "DG", 0) DGv = VectorFunctionSpace(mesh, "DG", 0) v = TestFunction(V) q = TestFunction(Q) u = TrialFunction(V) p = TrialFunction(Q) u0 = Function(V) p1 = Function(Q) W = Function(DGv) nu = Constant(0.1) k = Constant(0.1) h = CellSize(mesh) d1 = h d2 = 2.0*h U = 0.5*(u0 + u) F = (1.0/k)*inner(v, u - u0) + inner(v, grad(U)*W) + nu*inner(grad(v), grad(U)) - div(v)*p1 + \ d1*inner(grad(v)*W, grad(U)*W) + d2*div(v)*div(U) a = lhs(F*dx) # JIT compile once t0 = time() jit(a) t1 = time() - t0 # Then JIT compile some more t0 = time() for i in range(NUM_REPS): jit(a) t2 = (time() - t0) / float(NUM_REPS) print "Disk cache: ", t1 print "In-memory cache:", t2 print "BENCH", t2 dolfin-1.3.0/bench/fem/speedup/0000755000175000017500000000000012263014601016134 5ustar johannrjohannrdolfin-1.3.0/bench/fem/speedup/cpp/0000755000175000017500000000000012263015065016723 5ustar johannrjohannrdolfin-1.3.0/bench/fem/speedup/cpp/solve-poisson.cpp0000644000175000017500000000612212263014601022243 0ustar johannrjohannr// Copyright (C) 2009 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2009-09-15 // Last changed: 2012-12-12 // // Simple Poisson solver #include #include #include "Poisson.h" using namespace dolfin; int main(int argc, char* argv[]) { #ifdef HAS_PETSC //parameters["mesh_partitioner"] = "SCOTCH"; //parameters["linear_algebra_backend"] = "Epetra"; parameters["linear_algebra_backend"] = "PETSc"; // Parse command-line arguments if (argc != 2) { info("Usage: solve-poisson n"); return 1; } int n = atoi(argv[1]); // Create mesh and function space UnitCubeMesh mesh(n, n, n); Poisson::FunctionSpace V(mesh); // Define boundary condition Constant u0(0.0); DomainBoundary boundary; DirichletBC bc(V, u0, boundary); // Define variational problem Poisson::BilinearForm a(V, V); Poisson::LinearForm L(V); Constant f(1.0); L.f = f; Function u(V); // Create preconditioner and linear solver //TrilinosPreconditioner pc("amg_ml"); //EpetraKrylovSolver solver("gmres", pc); //PETScPreconditioner pc("amg_hypre"); //PETScPreconditioner pc("amg_ml"); //PETScKrylovSolver solver("gmres", pc); PETScLUSolver solver; // Assemble matrix and vector, and apply Dirichlet boundary conditions Matrix A; Vector b; assemble(A, a); assemble(b, L); bc.apply(A, b); // Solve linear system dolfin::MPI::barrier(); double t = time(); solver.solve(A, *u.vector(), b); dolfin::MPI::barrier(); t = time() - t; if (dolfin::MPI::process_number() == 0) info("TIME (first time): %.5g", t); // Solve linear system (preconditioner assuming same non-zero pattern) if (solver.parameters.has_key("preconditioner")) solver.parameters("preconditioner")["same_nonzero_pattern"] = true; u.vector()->zero(); dolfin::MPI::barrier(); t = time(); solver.solve(A, *u.vector(), b); dolfin::MPI::barrier(); t = time() - t; if (dolfin::MPI::process_number() == 0) info("TIME (same nonzero pattern): %.5g", t); // Solve linear system (re-use preconditioner) if (solver.parameters.has_key("preconditioner")) solver.parameters("preconditioner")["reuse"] = true; u.vector()->zero(); dolfin::MPI::barrier(); t = time(); solver.solve(A, *u.vector(), b); dolfin::MPI::barrier(); t = time() - t; if (dolfin::MPI::process_number() == 0) info("TIME (re-use preconditioner): %.5g", t); #else error("This benchmark requires PETSc."); #endif return 0; } dolfin-1.3.0/bench/fem/speedup/cpp/assemble-poisson.cpp0000644000175000017500000000336012263014601022707 0ustar johannrjohannr// Copyright (C) 2009 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2009-09-15 // Last changed: 2012-12-12 // // Simple Poisson assembler #include #include #include "Poisson.h" using namespace dolfin; int main(int argc, char* argv[]) { // Parse command-line arguments if (argc != 2) { info("Usage: solve-poisson n"); return 1; } int n = atoi(argv[1]); // Create mesh and function space UnitCubeMesh mesh(n, n, n); Poisson::FunctionSpace V(mesh); // Assemble matrix Poisson::BilinearForm a(V, V); Matrix A; dolfin::MPI::barrier(); double t = time(); Assembler assembler; assembler.assemble(A, a); dolfin::MPI::barrier(); t = time() - t; // Report timing if (dolfin::MPI::process_number() == 0) info("TIME (first assembly): %.5g", t); // Re-assemble matrix dolfin::MPI::barrier(); t = time(); assembler.reset_sparsity = false; assembler.assemble(A, a); dolfin::MPI::barrier(); t = time() - t; // Report timing if (dolfin::MPI::process_number() == 0) info("TIME (second assembly): %.5g", t); return 0; } dolfin-1.3.0/bench/fem/speedup/cpp/README0000644000175000017500000000113512263014601017576 0ustar johannrjohannrThis benchmark tests parallel speedup for assembly and solve. It is organized as follows: assemble-poisson: simple program for assembling Poisson matrix solve-poisson: simple program for solving Poisson's equation submit-bench: script for submitting jobs using dolfin_utils.pjobs analyse-bench: script for analysing output from submit-bench bench: script used on benchbot for simple checking of speedup Possible future improvements: 1. MUMPS vs UMFPACK gives skewed results (MUMPS faster?) 2. Time assemble_cells and apply separately 3. Use barriers between timings dolfin-1.3.0/bench/fem/speedup/cpp/Poisson.ufl0000644000175000017500000000176312263014601021067 0ustar johannrjohannr# Copyright (C) 2009 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2009-09-15 # Last changed: 2009-09-15 # # The bilinear form a(v, u) and linear form L(v) for # Poisson's equation. element = FiniteElement("Lagrange", tetrahedron, 1) v = TestFunction(element) u = TrialFunction(element) f = Coefficient(element) a = inner(grad(v), grad(u))*dx L = v*f*dx dolfin-1.3.0/bench/fem/speedup/cpp/clean.sh0000755000175000017500000000013412263014601020335 0ustar johannrjohannr#!/bin/sh # Clean out old log files rm -f assemble-poisson*.log* rm -f solve-poisson*.log* dolfin-1.3.0/bench/fem/speedup/cpp/analyse-bench0000755000175000017500000000574112263014601021364 0ustar johannrjohannr#!/usr/bin/env python # Copyright (C) 2009 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Johan Hake, 2009. # # First added: 2009-09-15 # Last changed: 2011-01-04 # FIXME: Not checked if working! from dolfin import * from glob import glob from numpy import arange # Size of mesh size = 128 # Number of processes to use # NOTE: Largest number of processors to run is 2^EXP EXP = 6 num_processes = list(2**arange(EXP+1)) # Function for extracting log file def get_filename(pattern): filenames = glob(pattern) if len(filenames) == 0: raise IOError, "Unable to open file: %s" % pattern elif len(filenames) > 1: raise RuntimeError, "More than one data file, don't know which one to pick: " + ", ".join(filenames) filename = filenames[0] print "Reading data from %s..." % filename return filename # Iterate over process range assemble_time = [] assemble_second_time = [] solve_time = [] # Remove run with one processor if 1 in num_processes: num_processes.remove(1) for np in num_processes: # Read timings for assemble benchmark lines = open(get_filename(\ "assemble-poisson_np_%d_size_%d.log*" % (np, size))).readlines() assemble_time.append(float([line for line in lines \ if "TIME (first assembly):" in \ line][0].split("TIME (first assembly): ")[-1])) assemble_second_time.append(float([line for line in lines \ if "TIME (second assembly):" in \ line][0].split("TIME (second assembly): ")[-1])) # Read timings for solve benchmark filename = get_filename("solve-poisson_np_%d_size_%d.log*" % (np, size)) solve_time.append(float([line for line in open(filename).readlines()\ if "TIME:" in line][0].split("TIME: ")[-1])) # Compute speedups scale_assemble = [assemble_time[0] / t for t in assemble_time] scale_second_assemble = [assemble_second_time[0] / t for t in assemble_second_time] scale_solve = [solve_time[0] / t for t in solve_time] # Print results table = Table("Speedup") for i, np in enumerate(num_processes): table.set(str(np), "Assemble (first)", scale_assemble[i]) table.set(str(np), "Assemble (second)", scale_second_assemble[i]) table.set(str(np), "Solve", scale_solve[i]) print "" info(table, True) dolfin-1.3.0/bench/fem/speedup/cpp/bench_fem_speedup_cpp0000755000175000017500000000455112263014601023146 0ustar johannrjohannr#!/usr/bin/env python # Copyright (C) 2010 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Garth N. Wells, 2011. # Modified by Johannes Ring, 2011. # # First added: 2010-05-03 # Last changed: 2011-04-05 import commands # Parameters for benchmark SIZE = 64 NUM_PROCS = 4 print "Assembly/solve speedup running on %s processors" % NUM_PROCS # Function for extracting test name and time from benchmark def get_time(output): lines = [line for line in output.split("\n") if "TIME" in line] timing = [] for line in lines: time = float(line.split(":")[-1]) name = line.split(":")[-2].strip("TIME").strip(None).replace("(", "").replace(")", "") timing.append( (name, time) ) return timing # Serial assembly output = commands.getoutput("./bench_assemble-poisson %d" % SIZE) assembly_t1 = get_time(output) print "Serial assembly:", assembly_t1 # Parallel assembly output = commands.getoutput("mpirun -n %d ./bench_assemble-poisson %d" % (NUM_PROCS, SIZE)) assembly_t2 = get_time(output) print "Parallel assembly:", assembly_t2 # Serial solve output = commands.getoutput("./bench_solve-poisson %d" % SIZE) solve_t1 = get_time(output) print "Serial solve:", solve_t1 # Parallel solve output = commands.getoutput("mpirun -n %d ./bench_solve-poisson %d" % (NUM_PROCS, SIZE)) solve_t2 = get_time(output) print "Parallel solve:", solve_t2 print "assembly" for test1, test2 in zip(assembly_t1, assembly_t2): print " ", test1[0] + ":", test1[1]/test2[1] print "solve" for test1, test2 in zip(solve_t1, solve_t2): print " ", test1[0] + ":", test1[1]/test2[1] print "BENCH assembly", assembly_t1[0][1] / assembly_t2[0][1] + assembly_t1[1][1] / assembly_t2[1][1] print "BENCH solve", solve_t1[0][1] / solve_t2[0][1] dolfin-1.3.0/bench/fem/speedup/cpp/CMakeLists.txt0000644000175000017500000000227612263015065021472 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_fem_speedup_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(bench_solve-poisson solve-poisson.cpp) add_executable(bench_assemble-poisson assemble-poisson.cpp) # Target libraries target_link_libraries(bench_solve-poisson ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) target_link_libraries(bench_assemble-poisson ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/fem/speedup/cpp/Poisson.h0000644000175000017500000023124512263015061020531 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: False #ifndef __POISSON_H #define __POISSON_H #include #include #include #include /// This class defines the interface for a finite element. class poisson_finite_element_0: public ufc::finite_element { public: /// Constructor poisson_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~poisson_finite_element_0() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 4; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 0; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 4; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[3][1]; for (unsigned int row = 0; row < 3; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 2) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[3][3] = {{K[0], K[1], K[2]}, {K[3], K[4], K[5]}, {K[6], K[7], K[8]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[3][3]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 4; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[3]; for (unsigned int r = 0; r < 3; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 4; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[3] = vals[0]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; vertex_values[3] = dof_values[3]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new poisson_finite_element_0(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class poisson_dofmap_0: public ufc::dofmap { public: /// Constructor poisson_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~poisson_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return false; break; } case 3: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 4; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 3; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 0; break; } case 2: { return 0; break; } case 3: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { dofs[0] = c.entity_indices[0][0]; dofs[1] = c.entity_indices[0][1]; dofs[2] = c.entity_indices[0][2]; dofs[3] = c.entity_indices[0][3]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; break; } case 3: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 2; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } case 3: { dofs[0] = 3; break; } } break; } case 1: { break; } case 2: { break; } case 3: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[0][2] = vertex_coordinates[2]; dof_coordinates[1][0] = vertex_coordinates[3]; dof_coordinates[1][1] = vertex_coordinates[4]; dof_coordinates[1][2] = vertex_coordinates[5]; dof_coordinates[2][0] = vertex_coordinates[6]; dof_coordinates[2][1] = vertex_coordinates[7]; dof_coordinates[2][2] = vertex_coordinates[8]; dof_coordinates[3][0] = vertex_coordinates[9]; dof_coordinates[3][1] = vertex_coordinates[10]; dof_coordinates[3][2] = vertex_coordinates[11]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new poisson_dofmap_0(); } }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor poisson_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor virtual ~poisson_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 27 // Number of operations (multiply-add pairs) for tensor contraction: 28 // Total number of operations (multiply-add pairs): 58 // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0_0 = det*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2]); const double G0_0_1 = det*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5]); const double G0_0_2 = det*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8]); const double G0_1_0 = det*(K[3]*K[0] + K[4]*K[1] + K[5]*K[2]); const double G0_1_1 = det*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5]); const double G0_1_2 = det*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8]); const double G0_2_0 = det*(K[6]*K[0] + K[7]*K[1] + K[8]*K[2]); const double G0_2_1 = det*(K[6]*K[3] + K[7]*K[4] + K[8]*K[5]); const double G0_2_2 = det*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8]); // Compute element tensor A[0] = 0.166666666666667*G0_0_0 + 0.166666666666667*G0_0_1 + 0.166666666666667*G0_0_2 + 0.166666666666667*G0_1_0 + 0.166666666666667*G0_1_1 + 0.166666666666667*G0_1_2 + 0.166666666666667*G0_2_0 + 0.166666666666667*G0_2_1 + 0.166666666666667*G0_2_2; A[1] = -0.166666666666667*G0_0_0 - 0.166666666666667*G0_1_0 - 0.166666666666667*G0_2_0; A[2] = -0.166666666666667*G0_0_1 - 0.166666666666667*G0_1_1 - 0.166666666666667*G0_2_1; A[3] = -0.166666666666667*G0_0_2 - 0.166666666666667*G0_1_2 - 0.166666666666667*G0_2_2; A[4] = -0.166666666666667*G0_0_0 - 0.166666666666667*G0_0_1 - 0.166666666666667*G0_0_2; A[5] = 0.166666666666667*G0_0_0; A[6] = 0.166666666666667*G0_0_1; A[7] = 0.166666666666667*G0_0_2; A[8] = -0.166666666666667*G0_1_0 - 0.166666666666667*G0_1_1 - 0.166666666666667*G0_1_2; A[9] = 0.166666666666667*G0_1_0; A[10] = 0.166666666666667*G0_1_1; A[11] = 0.166666666666667*G0_1_2; A[12] = -0.166666666666667*G0_2_0 - 0.166666666666667*G0_2_1 - 0.166666666666667*G0_2_2; A[13] = 0.166666666666667*G0_2_0; A[14] = 0.166666666666667*G0_2_1; A[15] = 0.166666666666667*G0_2_2; } }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson_cell_integral_1_otherwise: public ufc::cell_integral { public: /// Constructor poisson_cell_integral_1_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor virtual ~poisson_cell_integral_1_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 4 // Number of operations (multiply-add pairs) for tensor contraction: 14 // Total number of operations (multiply-add pairs): 21 // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0 = det*w[0][0]*(1.0); const double G0_1 = det*w[0][1]*(1.0); const double G0_2 = det*w[0][2]*(1.0); const double G0_3 = det*w[0][3]*(1.0); // Compute element tensor A[0] = 0.0166666666666666*G0_0 + 0.0083333333333333*G0_1 + 0.0083333333333333*G0_2 + 0.0083333333333333*G0_3; A[1] = 0.0083333333333333*G0_0 + 0.0166666666666667*G0_1 + 0.00833333333333337*G0_2 + 0.00833333333333337*G0_3; A[2] = 0.0083333333333333*G0_0 + 0.00833333333333337*G0_1 + 0.0166666666666667*G0_2 + 0.00833333333333337*G0_3; A[3] = 0.0083333333333333*G0_0 + 0.00833333333333337*G0_1 + 0.00833333333333337*G0_2 + 0.0166666666666667*G0_3; } }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson_form_0: public ufc::form { public: /// Constructor poisson_form_0() : ufc::form() { // Do nothing } /// Destructor virtual ~poisson_form_0() { // Do nothing } /// Return a string identifying the form virtual const char* signature() const { return "b27132efd82ca50147a2cb9a277cccb3a4edce5c9094b8f34dea1203b38077d6b18223923845209093a803366ef20cca85bb5098023d6e8c607e14c9716d8c15"; } /// Return the rank of the global tensor (r) virtual std::size_t rank() const { return 2; } /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const { return 0; } /// Return the number of cell domains virtual std::size_t num_cell_domains() const { return 0; } /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const { return 0; } /// Return the number of point domains virtual std::size_t num_point_domains() const { return 0; } /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals virtual bool has_point_integrals() const { return false; } /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson_finite_element_0(); break; } case 1: { return new poisson_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson_dofmap_0(); break; } case 1: { return new poisson_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const { return new poisson_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const { return 0; } }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson_form_1: public ufc::form { public: /// Constructor poisson_form_1() : ufc::form() { // Do nothing } /// Destructor virtual ~poisson_form_1() { // Do nothing } /// Return a string identifying the form virtual const char* signature() const { return "6007b26564a03b0e5c8d6c8a25dd7d88aa63ea0d4890f2d008eac075de60364073a82d571802c9184e31f0a9b3bdd9232e8627e0bd9ad00029d0e22d61aea813"; } /// Return the rank of the global tensor (r) virtual std::size_t rank() const { return 1; } /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const { return 1; } /// Return the number of cell domains virtual std::size_t num_cell_domains() const { return 0; } /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const { return 0; } /// Return the number of point domains virtual std::size_t num_point_domains() const { return 0; } /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals virtual bool has_point_integrals() const { return false; } /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson_finite_element_0(); break; } case 1: { return new poisson_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson_dofmap_0(); break; } case 1: { return new poisson_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const { return new poisson_cell_integral_1_otherwise(); } /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const { return 0; } }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Poisson { class CoefficientSpace_f: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_f(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_f(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_f(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_f() { } }; class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new poisson_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new poisson_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; class Form_L_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_L_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_L_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_L_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_L_FunctionSpace_0() { } }; typedef CoefficientSpace_f Form_L_FunctionSpace_1; class Form_L: public dolfin::Form { public: // Constructor Form_L(const dolfin::FunctionSpace& V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _ufc_form = boost::shared_ptr(new poisson_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = f; _ufc_form = boost::shared_ptr(new poisson_form_1()); } // Constructor Form_L(const dolfin::FunctionSpace& V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); this->f = *f; _ufc_form = boost::shared_ptr(new poisson_form_1()); } // Constructor Form_L(boost::shared_ptr V0): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; _ufc_form = boost::shared_ptr(new poisson_form_1()); } // Constructor Form_L(boost::shared_ptr V0, const dolfin::GenericFunction& f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = f; _ufc_form = boost::shared_ptr(new poisson_form_1()); } // Constructor Form_L(boost::shared_ptr V0, boost::shared_ptr f): dolfin::Form(1, 1), f(*this, 0) { _function_spaces[0] = V0; this->f = *f; _ufc_form = boost::shared_ptr(new poisson_form_1()); } // Destructor ~Form_L() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { if (name == "f") return 0; dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { switch (i) { case 0: return "f"; } dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return "unnamed"; } // Typedefs typedef Form_L_FunctionSpace_0 TestSpace; typedef Form_L_FunctionSpace_1 CoefficientSpace_f; // Coefficients dolfin::CoefficientAssigner f; }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_L LinearForm; typedef Form_L ResidualForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/speedup/cpp/submit-bench0000755000175000017500000000350412263014601021226 0ustar johannrjohannr#!/usr/bin/env python # # This script submits jobs for measuring parallel speedup. # # Copyright (C) 2009 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Anders Logg, 2009. # # First added: 2009-09-15 # Last changed: 2011-01-04 from dolfin_utils.pjobs import submit from numpy import arange import sys # Parameters for benchmark SIZE = 128 # Number of processes to use # NOTE: Largest number of processors to run is 2^EXP EXP = 6 num_processes = list(2**arange(EXP+1)) # Check command-line arguments dryrun = True if 'dryrun' in sys.argv else False # Iterate over process range for np in num_processes: if np == 1: run_cmd = "" else: run_cmd = "mpirun.openmpi -n %d " % np # Submit assemble benchmark submit("%s./assemble-poisson %d" % (run_cmd, SIZE), nodes=max(1, np/8), ppn=8, # Grab all cores on a node name="assemble-poisson_np_%d_size_%d.log" % (np, SIZE), dryrun=dryrun) # Submit solve benchmark submit("%s./solve-poisson %d" % (run_cmd, SIZE), nodes=max(1, np/8), ppn=8, # Grab all cores on a node name="solve-poisson_np_%d_size_%d.log" % (np, SIZE), dryrun=dryrun) dolfin-1.3.0/bench/fem/speedup/cpp/compile.log0000644000175000017500000001740012263015061021054 0ustar johannrjohannrThis is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Poisson Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, u]' Coefficient names: '[]' Unique elements: 'CG1(?)' Unique sub elements: 'CG1(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 0 quadrature_degree: auto --> 0 quadrature_rule: auto --> default Name: 'L' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 1 Number of coefficients: 1 Arguments: '[v_{-2}]' Coefficients: '[w_0]' Argument names: '[v]' Coefficient names: '[f]' Unique elements: 'CG1(?)' Unique sub elements: 'CG1(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Estimated cost of tensor representation: 1 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 2 quadrature_degree: auto --> 2 quadrature_rule: auto --> default Compiler stage 1 finished in 0.0151069 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 144 entries computed in 0.000649 seconds Shape of reference tensor: (4, 4, 3, 3) Primary multi index: rank = 2 dims = [4, 4] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [1, 0], [1, 1], [1, 2], [1, 3], [2, 0], [2, 1], [2, 2], [2, 3], [3, 0], [3, 1], [3, 2], [3, 3]] Secondary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] External multi index: rank = 1 dims = [3] indices = [[0], [1], [2]] Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 16 entries computed in 0.000588 seconds Shape of reference tensor: (4, 4) Primary multi index: rank = 1 dims = [4] indices = [[0], [1], [2], [3]] Secondary multi index: rank = 1 dims = [4] indices = [[0], [1], [2], [3]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 1 dims = [4] indices = [[0], [1], [2], [3]] External multi index: rank = 0 dims = [] indices = [[]] Computing representation of forms Compiler stage 2 finished in 0.00688004 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.000200987 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 0.050468 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000435829 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Poisson.h. Compiler stage 5 finished in 0.00048089 seconds. FFC finished in 0.073823 seconds. dolfin-1.3.0/bench/fem/assembly/0000755000175000017500000000000012263014601016306 5ustar johannrjohannrdolfin-1.3.0/bench/fem/assembly/cpp/0000755000175000017500000000000012263015065017075 5ustar johannrjohannrdolfin-1.3.0/bench/fem/assembly/cpp/forms/0000755000175000017500000000000012263015064020222 5ustar johannrjohannrdolfin-1.3.0/bench/fem/assembly/cpp/forms/StabStokes2D.h0000644000175000017500000051527012263015064022655 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: False #ifndef __STABSTOKES2D_H #define __STABSTOKES2D_H #include #include #include #include /// This class defines the interface for a finite element. class stabstokes2d_finite_element_0: public ufc::finite_element { public: /// Constructor stabstokes2d_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~stabstokes2d_finite_element_0() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 3; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 0; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 3; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[2][1]; for (unsigned int row = 0; row < 2; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 1) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[2][2] = {{K[0], K[1]}, {K[2], K[3]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[2][2]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 3; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[2]; for (unsigned int r = 0; r < 2; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 3; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[2] = vals[0]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new stabstokes2d_finite_element_0(); } }; /// This class defines the interface for a finite element. class stabstokes2d_finite_element_1: public ufc::finite_element { public: /// Constructor stabstokes2d_finite_element_1() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~stabstokes2d_finite_element_1() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "VectorElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, 2, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 6; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 1; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { switch (i) { case 0: { return 2; break; } } return 0; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Reset values values[0] = 0.0; values[1] = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values[2] = {0.0, 0.0}; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 6; r++) { evaluate_basis(r, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 2; s++) { values[r*2 + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < 2*num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[2][1]; for (unsigned int row = 0; row < 2; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 1) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[2][2] = {{K[0], K[1]}, {K[2], K[3]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[2][2]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 6; r++) { for (unsigned int s = 0; s < 2*num_derivatives; s++) { values[r*2*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[4]; for (unsigned int r = 0; r < 4; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 6; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 2*num_derivatives; s++) { values[r*2*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[2]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[1]; break; } case 4: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[1]; break; } case 5: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[1]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[2]; // Declare variable for physical coordinates double y[2]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[3] = vals[1]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[4] = vals[1]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[5] = vals[1]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[2] = dof_values[1]; vertex_values[4] = dof_values[2]; // Evaluate function and change variables vertex_values[1] = dof_values[3]; vertex_values[3] = dof_values[4]; vertex_values[5] = dof_values[5]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 2; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { switch (i) { case 0: { return new stabstokes2d_finite_element_0(); break; } case 1: { return new stabstokes2d_finite_element_0(); break; } } return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new stabstokes2d_finite_element_1(); } }; /// This class defines the interface for a finite element. class stabstokes2d_finite_element_2: public ufc::finite_element { public: /// Constructor stabstokes2d_finite_element_2() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~stabstokes2d_finite_element_2() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "FiniteElement('Discontinuous Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 0, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 1; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 0; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants // Get coordinates and map to the reference (FIAT) element // Reset values *values = 0.0; // Array of basisvalues double basisvalues[1] = {0.0}; // Declare helper variables // Compute basisvalues basisvalues[0] = 1.0; // Table(s) of coefficients static const double coefficients0[1] = \ {1.0}; // Compute value(s) for (unsigned int r = 0; r < 1; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Element is constant, calling evaluate_basis. evaluate_basis(0, values, x, vertex_coordinates, cell_orientation); } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 0) { return ; } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Element is constant, calling evaluate_basis_derivatives. evaluate_basis_derivatives(0, n, values, x, vertex_coordinates, cell_orientation); } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; y[0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); values[0] = vals[0]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[0]; vertex_values[2] = dof_values[0]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new stabstokes2d_finite_element_2(); } }; /// This class defines the interface for a finite element. class stabstokes2d_finite_element_3: public ufc::finite_element { public: /// Constructor stabstokes2d_finite_element_3() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~stabstokes2d_finite_element_3() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "MixedElement(*[VectorElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, 2, None), FiniteElement('Discontinuous Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 0, None)], **{'value_shape': (3,) })"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 7; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 1; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { switch (i) { case 0: { return 3; break; } } return 0; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Reset values values[0] = 0.0; values[1] = 0.0; values[2] = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[1] = {0.0}; // Declare helper variables // Compute basisvalues basisvalues[0] = 1.0; // Table(s) of coefficients static const double coefficients0[1] = \ {1.0}; // Compute value(s) for (unsigned int r = 0; r < 1; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values[3] = {0.0, 0.0, 0.0}; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 7; r++) { evaluate_basis(r, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 3; s++) { values[r*3 + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < 3*num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[2][1]; for (unsigned int row = 0; row < 2; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 1) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[2][2] = {{K[0], K[1]}, {K[2], K[3]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[2][2]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[1] = {0.0}; // Declare helper variables // Compute basisvalues basisvalues[0] = 1.0; // Table(s) of coefficients static const double coefficients0[1] = \ {1.0}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[1][1] = \ {{0.0}}; static const double dmats1[1][1] = \ {{0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[1][1] = \ {{1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[1][1] = \ {{1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 1; t++) { for (unsigned int u = 0; u < 1; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 1; t++) { for (unsigned int u = 0; u < 1; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 1; t++) { for (unsigned int u = 0; u < 1; u++) { for (unsigned int tu = 0; tu < 1; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 1; t++) { for (unsigned int u = 0; u < 1; u++) { for (unsigned int tu = 0; tu < 1; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 1; s++) { for (unsigned int t = 0; t < 1; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 7; r++) { for (unsigned int s = 0; s < 3*num_derivatives; s++) { values[r*3*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[6]; for (unsigned int r = 0; r < 6; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 7; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 3*num_derivatives; s++) { values[r*3*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[3]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[1]; break; } case 4: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[1]; break; } case 5: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[1]; break; } case 6: { y[0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[2]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[3]; // Declare variable for physical coordinates double y[2]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[3] = vals[1]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[4] = vals[1]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[5] = vals[1]; y[0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); values[6] = vals[2]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[3] = dof_values[1]; vertex_values[6] = dof_values[2]; // Evaluate function and change variables vertex_values[1] = dof_values[3]; vertex_values[4] = dof_values[4]; vertex_values[7] = dof_values[5]; // Evaluate function and change variables vertex_values[2] = dof_values[6]; vertex_values[5] = dof_values[6]; vertex_values[8] = dof_values[6]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 2; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { switch (i) { case 0: { return new stabstokes2d_finite_element_1(); break; } case 1: { return new stabstokes2d_finite_element_2(); break; } } return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new stabstokes2d_finite_element_3(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class stabstokes2d_dofmap_0: public ufc::dofmap { public: /// Constructor stabstokes2d_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~stabstokes2d_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 3; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 2; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 0; break; } case 2: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { dofs[0] = c.entity_indices[0][0]; dofs[1] = c.entity_indices[0][1]; dofs[2] = c.entity_indices[0][2]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; break; } case 1: { dofs[0] = 0; dofs[1] = 2; break; } case 2: { dofs[0] = 0; dofs[1] = 1; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } } break; } case 1: { break; } case 2: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[1][0] = vertex_coordinates[2]; dof_coordinates[1][1] = vertex_coordinates[3]; dof_coordinates[2][0] = vertex_coordinates[4]; dof_coordinates[2][1] = vertex_coordinates[5]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new stabstokes2d_dofmap_0(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class stabstokes2d_dofmap_1: public ufc::dofmap { public: /// Constructor stabstokes2d_dofmap_1() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~stabstokes2d_dofmap_1() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for VectorElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, 2, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return 2*num_global_entities[0]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 6; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 4; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 2; break; } case 1: { return 0; break; } case 2: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; dofs[3] = offset + c.entity_indices[0][0]; dofs[4] = offset + c.entity_indices[0][1]; dofs[5] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 4; dofs[3] = 5; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; dofs[3] = 5; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; dofs[3] = 4; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 0; dofs[1] = 3; break; } case 1: { dofs[0] = 1; dofs[1] = 4; break; } case 2: { dofs[0] = 2; dofs[1] = 5; break; } } break; } case 1: { break; } case 2: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[1][0] = vertex_coordinates[2]; dof_coordinates[1][1] = vertex_coordinates[3]; dof_coordinates[2][0] = vertex_coordinates[4]; dof_coordinates[2][1] = vertex_coordinates[5]; dof_coordinates[3][0] = vertex_coordinates[0]; dof_coordinates[3][1] = vertex_coordinates[1]; dof_coordinates[4][0] = vertex_coordinates[2]; dof_coordinates[4][1] = vertex_coordinates[3]; dof_coordinates[5][0] = vertex_coordinates[4]; dof_coordinates[5][1] = vertex_coordinates[5]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 2; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { switch (i) { case 0: { return new stabstokes2d_dofmap_0(); break; } case 1: { return new stabstokes2d_dofmap_0(); break; } } return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new stabstokes2d_dofmap_1(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class stabstokes2d_dofmap_2: public ufc::dofmap { public: /// Constructor stabstokes2d_dofmap_2() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~stabstokes2d_dofmap_2() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for FiniteElement('Discontinuous Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 0, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return false; break; } case 1: { return false; break; } case 2: { return true; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return num_global_entities[2]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 1; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 0; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 0; break; } case 1: { return 0; break; } case 2: { return 1; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { dofs[0] = c.entity_indices[2][0]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { break; } case 1: { break; } case 2: { break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { break; } case 1: { break; } case 2: { if (i > 0) { throw std::runtime_error("i is larger than number of entities (0)"); } dofs[0] = 0; break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; dof_coordinates[0][1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new stabstokes2d_dofmap_2(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class stabstokes2d_dofmap_3: public ufc::dofmap { public: /// Constructor stabstokes2d_dofmap_3() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~stabstokes2d_dofmap_3() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for MixedElement(*[VectorElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, 2, None), FiniteElement('Discontinuous Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 0, None)], **{'value_shape': (3,) })"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return true; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return 2*num_global_entities[0] + num_global_entities[2]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 7; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 4; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 2; break; } case 1: { return 0; break; } case 2: { return 1; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; dofs[3] = offset + c.entity_indices[0][0]; dofs[4] = offset + c.entity_indices[0][1]; dofs[5] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; dofs[6] = offset + c.entity_indices[2][0]; offset += num_global_entities[2]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 4; dofs[3] = 5; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; dofs[3] = 5; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; dofs[3] = 4; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 0; dofs[1] = 3; break; } case 1: { dofs[0] = 1; dofs[1] = 4; break; } case 2: { dofs[0] = 2; dofs[1] = 5; break; } } break; } case 1: { break; } case 2: { if (i > 0) { throw std::runtime_error("i is larger than number of entities (0)"); } dofs[0] = 6; break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[1][0] = vertex_coordinates[2]; dof_coordinates[1][1] = vertex_coordinates[3]; dof_coordinates[2][0] = vertex_coordinates[4]; dof_coordinates[2][1] = vertex_coordinates[5]; dof_coordinates[3][0] = vertex_coordinates[0]; dof_coordinates[3][1] = vertex_coordinates[1]; dof_coordinates[4][0] = vertex_coordinates[2]; dof_coordinates[4][1] = vertex_coordinates[3]; dof_coordinates[5][0] = vertex_coordinates[4]; dof_coordinates[5][1] = vertex_coordinates[5]; dof_coordinates[6][0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; dof_coordinates[6][1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 2; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { switch (i) { case 0: { return new stabstokes2d_dofmap_1(); break; } case 1: { return new stabstokes2d_dofmap_2(); break; } } return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new stabstokes2d_dofmap_3(); } }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class stabstokes2d_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor stabstokes2d_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor virtual ~stabstokes2d_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Cell volume // Compute circumradius of triangle in 2D // Array of quadrature weights. static const double W1 = 0.5; // Quadrature points on the UFC reference element: (0.333333333333333, 0.333333333333333) // Value of basis functions at quadrature points. static const double FE1_C0_D01[1][2] = \ {{-1.0, 1.0}}; // Array of non-zero columns static const unsigned int nzc5[2] = {3, 4}; // Array of non-zero columns static const unsigned int nzc4[2] = {3, 5}; // Array of non-zero columns static const unsigned int nzc1[2] = {0, 2}; // Array of non-zero columns static const unsigned int nzc2[2] = {0, 1}; // Reset values in the element tensor. for (unsigned int r = 0; r < 49; r++) { A[r] = 0.0; }// end loop over 'r' // Number of operations to compute geometry constants: 31. double G[11]; G[0] = - K[2]*W1*det; G[1] = - K[0]*W1*det; G[2] = - K[3]*W1*det; G[3] = - K[1]*W1*det; G[4] = W1*det*(K[2]*K[2] + K[3]*K[3]); G[5] = W1*det*(K[0]*K[2] + K[1]*K[3]); G[6] = W1*det*(K[0]*K[0] + K[1]*K[1]); G[7] = K[2]*W1*det; G[8] = K[0]*W1*det; G[9] = K[3]*W1*det; G[10] = K[1]*W1*det; // Compute element tensor using UFL quadrature representation // Optimisations: ('eliminate zeros', True), ('ignore ones', True), ('ignore zero tables', True), ('optimisation', 'simplify_expressions'), ('remove zero terms', True) // Loop quadrature points for integral. // Number of operations to compute element tensor for following IP loop = 128 // Only 1 integration point, omitting IP loop. // Number of operations for primary indices: 96 for (unsigned int j = 0; j < 2; j++) { for (unsigned int k = 0; k < 2; k++) { // Number of operations to compute entry: 3 A[nzc1[j]*7 + nzc1[k]] += FE1_C0_D01[0][j]*FE1_C0_D01[0][k]*G[4]; // Number of operations to compute entry: 3 A[nzc1[j]*7 + nzc2[k]] += FE1_C0_D01[0][j]*FE1_C0_D01[0][k]*G[5]; // Number of operations to compute entry: 3 A[nzc2[j]*7 + nzc1[k]] += FE1_C0_D01[0][j]*FE1_C0_D01[0][k]*G[5]; // Number of operations to compute entry: 3 A[nzc2[j]*7 + nzc2[k]] += FE1_C0_D01[0][j]*FE1_C0_D01[0][k]*G[6]; // Number of operations to compute entry: 3 A[nzc4[j]*7 + nzc4[k]] += FE1_C0_D01[0][j]*FE1_C0_D01[0][k]*G[4]; // Number of operations to compute entry: 3 A[nzc4[j]*7 + nzc5[k]] += FE1_C0_D01[0][j]*FE1_C0_D01[0][k]*G[5]; // Number of operations to compute entry: 3 A[nzc5[j]*7 + nzc4[k]] += FE1_C0_D01[0][j]*FE1_C0_D01[0][k]*G[5]; // Number of operations to compute entry: 3 A[nzc5[j]*7 + nzc5[k]] += FE1_C0_D01[0][j]*FE1_C0_D01[0][k]*G[6]; }// end loop over 'k' }// end loop over 'j' // Number of operations for primary indices: 16 for (unsigned int j = 0; j < 2; j++) { // Number of operations to compute entry: 2 A[nzc1[j]*7 + 6] += FE1_C0_D01[0][j]*G[0]; // Number of operations to compute entry: 2 A[nzc2[j]*7 + 6] += FE1_C0_D01[0][j]*G[1]; // Number of operations to compute entry: 2 A[nzc4[j]*7 + 6] += FE1_C0_D01[0][j]*G[2]; // Number of operations to compute entry: 2 A[nzc5[j]*7 + 6] += FE1_C0_D01[0][j]*G[3]; }// end loop over 'j' // Number of operations for primary indices: 16 for (unsigned int k = 0; k < 2; k++) { // Number of operations to compute entry: 2 A[6*7 + nzc1[k]] += FE1_C0_D01[0][k]*G[7]; // Number of operations to compute entry: 2 A[6*7 + nzc2[k]] += FE1_C0_D01[0][k]*G[8]; // Number of operations to compute entry: 2 A[6*7 + nzc4[k]] += FE1_C0_D01[0][k]*G[9]; // Number of operations to compute entry: 2 A[6*7 + nzc5[k]] += FE1_C0_D01[0][k]*G[10]; }// end loop over 'k' } }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class stabstokes2d_form_0: public ufc::form { public: /// Constructor stabstokes2d_form_0() : ufc::form() { // Do nothing } /// Destructor virtual ~stabstokes2d_form_0() { // Do nothing } /// Return a string identifying the form virtual const char* signature() const { return "322b45e928b3760ab666c9f39c9f68ad1c8d439af99ea66cbc0d038f1247779a4a8f308784dc62776863a98f3a21a7aa070288d1f71622c58f51c57f124ac9d5"; } /// Return the rank of the global tensor (r) virtual std::size_t rank() const { return 2; } /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const { return 1; } /// Return the number of cell domains virtual std::size_t num_cell_domains() const { return 0; } /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const { return 0; } /// Return the number of point domains virtual std::size_t num_point_domains() const { return 0; } /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals virtual bool has_point_integrals() const { return false; } /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const { switch (i) { case 0: { return new stabstokes2d_finite_element_3(); break; } case 1: { return new stabstokes2d_finite_element_3(); break; } case 2: { return new stabstokes2d_finite_element_2(); break; } } return 0; } /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const { switch (i) { case 0: { return new stabstokes2d_dofmap_3(); break; } case 1: { return new stabstokes2d_dofmap_3(); break; } case 2: { return new stabstokes2d_dofmap_2(); break; } } return 0; } /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const { return new stabstokes2d_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const { return 0; } }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace StabStokes2D { class CoefficientSpace_h: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_h(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_2()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_h(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_2()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_h(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_2()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_h(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_2()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_h(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_2()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_h(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_2()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_2()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_h() { } }; class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_3()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_3()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_3()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_3()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_3()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_3()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_3()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_3()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_3()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_3()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_3()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new stabstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new stabstokes2d_dofmap_3()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; typedef CoefficientSpace_h Form_a_FunctionSpace_2; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 1), h(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new stabstokes2d_form_0()); } // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0, const dolfin::GenericFunction& h): dolfin::Form(2, 1), h(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); this->h = h; _ufc_form = boost::shared_ptr(new stabstokes2d_form_0()); } // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0, boost::shared_ptr h): dolfin::Form(2, 1), h(*this, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); this->h = *h; _ufc_form = boost::shared_ptr(new stabstokes2d_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 1), h(*this, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new stabstokes2d_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0, const dolfin::GenericFunction& h): dolfin::Form(2, 1), h(*this, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; this->h = h; _ufc_form = boost::shared_ptr(new stabstokes2d_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0, boost::shared_ptr h): dolfin::Form(2, 1), h(*this, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; this->h = *h; _ufc_form = boost::shared_ptr(new stabstokes2d_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { if (name == "h") return 0; dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { switch (i) { case 0: return "h"; } dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; typedef Form_a_FunctionSpace_2 CoefficientSpace_h; // Coefficients dolfin::CoefficientAssigner h; }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/assembly/cpp/forms/Poisson2DP1.ufl0000644000175000017500000000020512263014601022744 0ustar johannrjohannrelement = FiniteElement("Lagrange", triangle, 1) v = TestFunction(element) u = TrialFunction(element) a = dot(grad(v), grad(u))*dx dolfin-1.3.0/bench/fem/assembly/cpp/forms/Elasticity3D.ufl0000644000175000017500000000055012263014601023227 0ustar johannrjohannrelement = VectorElement("Lagrange", tetrahedron, 1) v = TestFunction(element) u = TrialFunction(element) E = 10.0 nu = 0.3 mu = E / (2*(1 + nu)) lmbda = E*nu / ((1 + nu)*(1 - 2*nu)) def epsilon(v): return 0.5*(grad(v) + (grad(v)).T) def sigma(v): return 2*mu*epsilon(v) + lmbda*tr(epsilon(v))*Identity(len(v)) a = inner(grad(v), sigma(u))*dx dolfin-1.3.0/bench/fem/assembly/cpp/forms/Poisson2DP1.h0000644000175000017500000013627212263015062022425 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: False #ifndef __POISSON2DP1_H #define __POISSON2DP1_H #include #include #include #include /// This class defines the interface for a finite element. class poisson2dp1_finite_element_0: public ufc::finite_element { public: /// Constructor poisson2dp1_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~poisson2dp1_finite_element_0() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 3; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 0; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 3; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[2][1]; for (unsigned int row = 0; row < 2; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 1) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[2][2] = {{K[0], K[1]}, {K[2], K[3]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[2][2]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 3; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[2]; for (unsigned int r = 0; r < 2; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 3; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[2] = vals[0]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new poisson2dp1_finite_element_0(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class poisson2dp1_dofmap_0: public ufc::dofmap { public: /// Constructor poisson2dp1_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~poisson2dp1_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 3; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 2; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 0; break; } case 2: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { dofs[0] = c.entity_indices[0][0]; dofs[1] = c.entity_indices[0][1]; dofs[2] = c.entity_indices[0][2]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; break; } case 1: { dofs[0] = 0; dofs[1] = 2; break; } case 2: { dofs[0] = 0; dofs[1] = 1; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } } break; } case 1: { break; } case 2: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[1][0] = vertex_coordinates[2]; dof_coordinates[1][1] = vertex_coordinates[3]; dof_coordinates[2][0] = vertex_coordinates[4]; dof_coordinates[2][1] = vertex_coordinates[5]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new poisson2dp1_dofmap_0(); } }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson2dp1_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor poisson2dp1_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor virtual ~poisson2dp1_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 8 // Number of operations (multiply-add pairs) for tensor contraction: 11 // Total number of operations (multiply-add pairs): 22 // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0_0 = det*(K[0]*K[0] + K[1]*K[1]); const double G0_0_1 = det*(K[0]*K[2] + K[1]*K[3]); const double G0_1_0 = det*(K[2]*K[0] + K[3]*K[1]); const double G0_1_1 = det*(K[2]*K[2] + K[3]*K[3]); // Compute element tensor A[0] = 0.5*G0_0_0 + 0.5*G0_0_1 + 0.5*G0_1_0 + 0.5*G0_1_1; A[1] = -0.5*G0_0_0 - 0.5*G0_1_0; A[2] = -0.5*G0_0_1 - 0.5*G0_1_1; A[3] = -0.5*G0_0_0 - 0.5*G0_0_1; A[4] = 0.5*G0_0_0; A[5] = 0.5*G0_0_1; A[6] = -0.5*G0_1_0 - 0.5*G0_1_1; A[7] = 0.5*G0_1_0; A[8] = 0.5*G0_1_1; } }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson2dp1_form_0: public ufc::form { public: /// Constructor poisson2dp1_form_0() : ufc::form() { // Do nothing } /// Destructor virtual ~poisson2dp1_form_0() { // Do nothing } /// Return a string identifying the form virtual const char* signature() const { return "4735d5ecb250f7cb5eb2c4a460a6060fec9965dfc06aab62023d570aed34b266324e4f5d9dbd5cc7029943d7b3013506b20e39617d12530d0c6e281e1b325ac3"; } /// Return the rank of the global tensor (r) virtual std::size_t rank() const { return 2; } /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const { return 0; } /// Return the number of cell domains virtual std::size_t num_cell_domains() const { return 0; } /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const { return 0; } /// Return the number of point domains virtual std::size_t num_point_domains() const { return 0; } /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals virtual bool has_point_integrals() const { return false; } /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson2dp1_finite_element_0(); break; } case 1: { return new poisson2dp1_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson2dp1_dofmap_0(); break; } case 1: { return new poisson2dp1_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const { return new poisson2dp1_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const { return 0; } }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Poisson2DP1 { class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp1_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp1_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp1_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp1_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp1_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp1_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp1_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp1_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp1_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp1_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp1_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp1_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp1_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new poisson2dp1_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new poisson2dp1_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/assembly/cpp/forms/NSEMomentum3D.h0000644000175000017500000073553112263015063022746 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: False #ifndef __NSEMOMENTUM3D_H #define __NSEMOMENTUM3D_H #include #include #include #include /// This class defines the interface for a finite element. class nsemomentum3d_finite_element_0: public ufc::finite_element { public: /// Constructor nsemomentum3d_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~nsemomentum3d_finite_element_0() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "FiniteElement('Discontinuous Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 0, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 1; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 0; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants // Compute subdeterminants // Get coordinates and map to the reference (FIAT) element // Reset values *values = 0.0; // Array of basisvalues double basisvalues[1] = {0.0}; // Declare helper variables // Compute basisvalues basisvalues[0] = 1.0; // Table(s) of coefficients static const double coefficients0[1] = \ {1.0}; // Compute value(s) for (unsigned int r = 0; r < 1; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Element is constant, calling evaluate_basis. evaluate_basis(0, values, x, vertex_coordinates, cell_orientation); } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 0) { return ; } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Element is constant, calling evaluate_basis_derivatives. evaluate_basis_derivatives(0, n, values, x, vertex_coordinates, cell_orientation); } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); values[0] = vals[0]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[0]; vertex_values[2] = dof_values[0]; vertex_values[3] = dof_values[0]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new nsemomentum3d_finite_element_0(); } }; /// This class defines the interface for a finite element. class nsemomentum3d_finite_element_1: public ufc::finite_element { public: /// Constructor nsemomentum3d_finite_element_1() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~nsemomentum3d_finite_element_1() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "VectorElement('Discontinuous Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 0, 3, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 3; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 1; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { switch (i) { case 0: { return 3; break; } } return 0; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants // Compute subdeterminants // Get coordinates and map to the reference (FIAT) element // Reset values values[0] = 0.0; values[1] = 0.0; values[2] = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[1] = {0.0}; // Declare helper variables // Compute basisvalues basisvalues[0] = 1.0; // Table(s) of coefficients static const double coefficients0[1] = \ {1.0}; // Compute value(s) for (unsigned int r = 0; r < 1; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[1] = {0.0}; // Declare helper variables // Compute basisvalues basisvalues[0] = 1.0; // Table(s) of coefficients static const double coefficients0[1] = \ {1.0}; // Compute value(s) for (unsigned int r = 0; r < 1; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[1] = {0.0}; // Declare helper variables // Compute basisvalues basisvalues[0] = 1.0; // Table(s) of coefficients static const double coefficients0[1] = \ {1.0}; // Compute value(s) for (unsigned int r = 0; r < 1; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values[3] = {0.0, 0.0, 0.0}; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 3; r++) { evaluate_basis(r, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 3; s++) { values[r*3 + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < 3*num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 0) { return ; } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 3; r++) { for (unsigned int s = 0; s < 3*num_derivatives; s++) { values[r*3*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 0) { return ; } // Helper variable to hold values of a single dof. double dof_values[3]; for (unsigned int r = 0; r < 3; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 3; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 3*num_derivatives; s++) { values[r*3*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[3]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[1]; break; } case 2: { y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[2]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[3]; // Declare variable for physical coordinates double y[3]; y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); values[1] = vals[1]; y[0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; y[1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; y[2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; f.evaluate(vals, y, c); values[2] = vals[2]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[3] = dof_values[0]; vertex_values[6] = dof_values[0]; vertex_values[9] = dof_values[0]; // Evaluate function and change variables vertex_values[1] = dof_values[1]; vertex_values[4] = dof_values[1]; vertex_values[7] = dof_values[1]; vertex_values[10] = dof_values[1]; // Evaluate function and change variables vertex_values[2] = dof_values[2]; vertex_values[5] = dof_values[2]; vertex_values[8] = dof_values[2]; vertex_values[11] = dof_values[2]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 3; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { switch (i) { case 0: { return new nsemomentum3d_finite_element_0(); break; } case 1: { return new nsemomentum3d_finite_element_0(); break; } case 2: { return new nsemomentum3d_finite_element_0(); break; } } return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new nsemomentum3d_finite_element_1(); } }; /// This class defines the interface for a finite element. class nsemomentum3d_finite_element_2: public ufc::finite_element { public: /// Constructor nsemomentum3d_finite_element_2() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~nsemomentum3d_finite_element_2() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 4; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 0; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 4; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[3][1]; for (unsigned int row = 0; row < 3; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 2) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[3][3] = {{K[0], K[1], K[2]}, {K[3], K[4], K[5]}, {K[6], K[7], K[8]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[3][3]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 4; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[3]; for (unsigned int r = 0; r < 3; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 4; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[3] = vals[0]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; vertex_values[3] = dof_values[3]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new nsemomentum3d_finite_element_2(); } }; /// This class defines the interface for a finite element. class nsemomentum3d_finite_element_3: public ufc::finite_element { public: /// Constructor nsemomentum3d_finite_element_3() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~nsemomentum3d_finite_element_3() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "VectorElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, 3, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 12; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 1; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { switch (i) { case 0: { return 3; break; } } return 0; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Reset values values[0] = 0.0; values[1] = 0.0; values[2] = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values[3] = {0.0, 0.0, 0.0}; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 12; r++) { evaluate_basis(r, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 3; s++) { values[r*3 + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < 3*num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[3][1]; for (unsigned int row = 0; row < 3; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 2) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[3][3] = {{K[0], K[1], K[2]}, {K[3], K[4], K[5]}, {K[6], K[7], K[8]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[3][3]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 12; r++) { for (unsigned int s = 0; s < 3*num_derivatives; s++) { values[r*3*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[9]; for (unsigned int r = 0; r < 9; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 12; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 3*num_derivatives; s++) { values[r*3*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[3]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[1]; break; } case 5: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[1]; break; } case 6: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[1]; break; } case 7: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[1]; break; } case 8: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[2]; break; } case 9: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[2]; break; } case 10: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[2]; break; } case 11: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[2]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[3]; // Declare variable for physical coordinates double y[3]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[4] = vals[1]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[5] = vals[1]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[6] = vals[1]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[7] = vals[1]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[8] = vals[2]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[9] = vals[2]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[10] = vals[2]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[11] = vals[2]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[3] = dof_values[1]; vertex_values[6] = dof_values[2]; vertex_values[9] = dof_values[3]; // Evaluate function and change variables vertex_values[1] = dof_values[4]; vertex_values[4] = dof_values[5]; vertex_values[7] = dof_values[6]; vertex_values[10] = dof_values[7]; // Evaluate function and change variables vertex_values[2] = dof_values[8]; vertex_values[5] = dof_values[9]; vertex_values[8] = dof_values[10]; vertex_values[11] = dof_values[11]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 3; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { switch (i) { case 0: { return new nsemomentum3d_finite_element_2(); break; } case 1: { return new nsemomentum3d_finite_element_2(); break; } case 2: { return new nsemomentum3d_finite_element_2(); break; } } return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new nsemomentum3d_finite_element_3(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class nsemomentum3d_dofmap_0: public ufc::dofmap { public: /// Constructor nsemomentum3d_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~nsemomentum3d_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for FiniteElement('Discontinuous Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 0, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return false; break; } case 1: { return false; break; } case 2: { return false; break; } case 3: { return true; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return num_global_entities[3]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 1; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 0; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 0; break; } case 1: { return 0; break; } case 2: { return 0; break; } case 3: { return 1; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { dofs[0] = c.entity_indices[3][0]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { break; } case 1: { break; } case 2: { break; } case 3: { break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { break; } case 1: { break; } case 2: { break; } case 3: { if (i > 0) { throw std::runtime_error("i is larger than number of entities (0)"); } dofs[0] = 0; break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; dof_coordinates[0][1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; dof_coordinates[0][2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new nsemomentum3d_dofmap_0(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class nsemomentum3d_dofmap_1: public ufc::dofmap { public: /// Constructor nsemomentum3d_dofmap_1() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~nsemomentum3d_dofmap_1() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for VectorElement('Discontinuous Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 0, 3, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return false; break; } case 1: { return false; break; } case 2: { return false; break; } case 3: { return true; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return 3*num_global_entities[3]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 3; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 0; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 0; break; } case 1: { return 0; break; } case 2: { return 0; break; } case 3: { return 3; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[3][0]; offset += num_global_entities[3]; dofs[1] = offset + c.entity_indices[3][0]; offset += num_global_entities[3]; dofs[2] = offset + c.entity_indices[3][0]; offset += num_global_entities[3]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { break; } case 1: { break; } case 2: { break; } case 3: { break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { break; } case 1: { break; } case 2: { break; } case 3: { if (i > 0) { throw std::runtime_error("i is larger than number of entities (0)"); } dofs[0] = 0; dofs[1] = 1; dofs[2] = 2; break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; dof_coordinates[0][1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; dof_coordinates[0][2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; dof_coordinates[1][0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; dof_coordinates[1][1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; dof_coordinates[1][2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; dof_coordinates[2][0] = 0.25*vertex_coordinates[0] + 0.25*vertex_coordinates[3] + 0.25*vertex_coordinates[6] + 0.25*vertex_coordinates[9]; dof_coordinates[2][1] = 0.25*vertex_coordinates[1] + 0.25*vertex_coordinates[4] + 0.25*vertex_coordinates[7] + 0.25*vertex_coordinates[10]; dof_coordinates[2][2] = 0.25*vertex_coordinates[2] + 0.25*vertex_coordinates[5] + 0.25*vertex_coordinates[8] + 0.25*vertex_coordinates[11]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 3; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { switch (i) { case 0: { return new nsemomentum3d_dofmap_0(); break; } case 1: { return new nsemomentum3d_dofmap_0(); break; } case 2: { return new nsemomentum3d_dofmap_0(); break; } } return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new nsemomentum3d_dofmap_1(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class nsemomentum3d_dofmap_2: public ufc::dofmap { public: /// Constructor nsemomentum3d_dofmap_2() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~nsemomentum3d_dofmap_2() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return false; break; } case 3: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 4; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 3; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 0; break; } case 2: { return 0; break; } case 3: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { dofs[0] = c.entity_indices[0][0]; dofs[1] = c.entity_indices[0][1]; dofs[2] = c.entity_indices[0][2]; dofs[3] = c.entity_indices[0][3]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; break; } case 3: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 2; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } case 3: { dofs[0] = 3; break; } } break; } case 1: { break; } case 2: { break; } case 3: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[0][2] = vertex_coordinates[2]; dof_coordinates[1][0] = vertex_coordinates[3]; dof_coordinates[1][1] = vertex_coordinates[4]; dof_coordinates[1][2] = vertex_coordinates[5]; dof_coordinates[2][0] = vertex_coordinates[6]; dof_coordinates[2][1] = vertex_coordinates[7]; dof_coordinates[2][2] = vertex_coordinates[8]; dof_coordinates[3][0] = vertex_coordinates[9]; dof_coordinates[3][1] = vertex_coordinates[10]; dof_coordinates[3][2] = vertex_coordinates[11]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new nsemomentum3d_dofmap_2(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class nsemomentum3d_dofmap_3: public ufc::dofmap { public: /// Constructor nsemomentum3d_dofmap_3() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~nsemomentum3d_dofmap_3() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for VectorElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, 3, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return false; break; } case 3: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return 3*num_global_entities[0]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 12; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 9; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 3; break; } case 1: { return 0; break; } case 2: { return 0; break; } case 3: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; dofs[3] = offset + c.entity_indices[0][3]; offset += num_global_entities[0]; dofs[4] = offset + c.entity_indices[0][0]; dofs[5] = offset + c.entity_indices[0][1]; dofs[6] = offset + c.entity_indices[0][2]; dofs[7] = offset + c.entity_indices[0][3]; offset += num_global_entities[0]; dofs[8] = offset + c.entity_indices[0][0]; dofs[9] = offset + c.entity_indices[0][1]; dofs[10] = offset + c.entity_indices[0][2]; dofs[11] = offset + c.entity_indices[0][3]; offset += num_global_entities[0]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; dofs[3] = 5; dofs[4] = 6; dofs[5] = 7; dofs[6] = 9; dofs[7] = 10; dofs[8] = 11; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; dofs[3] = 4; dofs[4] = 6; dofs[5] = 7; dofs[6] = 8; dofs[7] = 10; dofs[8] = 11; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; dofs[3] = 4; dofs[4] = 5; dofs[5] = 7; dofs[6] = 8; dofs[7] = 9; dofs[8] = 11; break; } case 3: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 2; dofs[3] = 4; dofs[4] = 5; dofs[5] = 6; dofs[6] = 8; dofs[7] = 9; dofs[8] = 10; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 0; dofs[1] = 4; dofs[2] = 8; break; } case 1: { dofs[0] = 1; dofs[1] = 5; dofs[2] = 9; break; } case 2: { dofs[0] = 2; dofs[1] = 6; dofs[2] = 10; break; } case 3: { dofs[0] = 3; dofs[1] = 7; dofs[2] = 11; break; } } break; } case 1: { break; } case 2: { break; } case 3: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[0][2] = vertex_coordinates[2]; dof_coordinates[1][0] = vertex_coordinates[3]; dof_coordinates[1][1] = vertex_coordinates[4]; dof_coordinates[1][2] = vertex_coordinates[5]; dof_coordinates[2][0] = vertex_coordinates[6]; dof_coordinates[2][1] = vertex_coordinates[7]; dof_coordinates[2][2] = vertex_coordinates[8]; dof_coordinates[3][0] = vertex_coordinates[9]; dof_coordinates[3][1] = vertex_coordinates[10]; dof_coordinates[3][2] = vertex_coordinates[11]; dof_coordinates[4][0] = vertex_coordinates[0]; dof_coordinates[4][1] = vertex_coordinates[1]; dof_coordinates[4][2] = vertex_coordinates[2]; dof_coordinates[5][0] = vertex_coordinates[3]; dof_coordinates[5][1] = vertex_coordinates[4]; dof_coordinates[5][2] = vertex_coordinates[5]; dof_coordinates[6][0] = vertex_coordinates[6]; dof_coordinates[6][1] = vertex_coordinates[7]; dof_coordinates[6][2] = vertex_coordinates[8]; dof_coordinates[7][0] = vertex_coordinates[9]; dof_coordinates[7][1] = vertex_coordinates[10]; dof_coordinates[7][2] = vertex_coordinates[11]; dof_coordinates[8][0] = vertex_coordinates[0]; dof_coordinates[8][1] = vertex_coordinates[1]; dof_coordinates[8][2] = vertex_coordinates[2]; dof_coordinates[9][0] = vertex_coordinates[3]; dof_coordinates[9][1] = vertex_coordinates[4]; dof_coordinates[9][2] = vertex_coordinates[5]; dof_coordinates[10][0] = vertex_coordinates[6]; dof_coordinates[10][1] = vertex_coordinates[7]; dof_coordinates[10][2] = vertex_coordinates[8]; dof_coordinates[11][0] = vertex_coordinates[9]; dof_coordinates[11][1] = vertex_coordinates[10]; dof_coordinates[11][2] = vertex_coordinates[11]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 3; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { switch (i) { case 0: { return new nsemomentum3d_dofmap_2(); break; } case 1: { return new nsemomentum3d_dofmap_2(); break; } case 2: { return new nsemomentum3d_dofmap_2(); break; } } return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new nsemomentum3d_dofmap_3(); } }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class nsemomentum3d_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor nsemomentum3d_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor virtual ~nsemomentum3d_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Cell volume // Compute circumradius // Array of quadrature weights. static const double W4[4] = {0.0416666666666667, 0.0416666666666667, 0.0416666666666667, 0.0416666666666667}; // Quadrature points on the UFC reference element: (0.585410196624969, 0.138196601125011, 0.138196601125011), (0.138196601125011, 0.585410196624969, 0.138196601125011), (0.138196601125011, 0.138196601125011, 0.585410196624969), (0.138196601125011, 0.138196601125011, 0.138196601125011) // Value of basis functions at quadrature points. static const double FE2_C0[4][4] = \ {{0.138196601125009, 0.585410196624969, 0.138196601125011, 0.138196601125011}, {0.138196601125009, 0.138196601125011, 0.585410196624969, 0.138196601125011}, {0.138196601125009, 0.138196601125011, 0.138196601125011, 0.585410196624969}, {0.585410196624967, 0.138196601125011, 0.138196601125011, 0.138196601125011}}; // Array of non-zero columns static const unsigned int nzc7[4] = {4, 5, 6, 7}; // Array of non-zero columns static const unsigned int nzc3[4] = {0, 1, 2, 3}; // Array of non-zero columns static const unsigned int nzc11[4] = {8, 9, 10, 11}; static const double FE2_C0_D001[4][2] = \ {{-1.0, 1.0}, {-1.0, 1.0}, {-1.0, 1.0}, {-1.0, 1.0}}; // Array of non-zero columns static const unsigned int nzc10[2] = {4, 5}; // Array of non-zero columns static const unsigned int nzc6[2] = {0, 1}; // Array of non-zero columns static const unsigned int nzc14[2] = {8, 9}; // Array of non-zero columns static const unsigned int nzc4[2] = {0, 3}; // Array of non-zero columns static const unsigned int nzc12[2] = {8, 11}; // Array of non-zero columns static const unsigned int nzc13[2] = {8, 10}; // Array of non-zero columns static const unsigned int nzc8[2] = {4, 7}; // Array of non-zero columns static const unsigned int nzc5[2] = {0, 2}; // Array of non-zero columns static const unsigned int nzc9[2] = {4, 6}; // Reset values in the element tensor. for (unsigned int r = 0; r < 144; r++) { A[r] = 0.0; }// end loop over 'r' // Number of operations to compute geometry constants: 864. double G[72]; G[0] = 0.5*det*w[3][0]*(K[1]*K[1]*w[2][0] + w[0][1]*w[0][1]*w[1][0]*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2]) + w[4][0]*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2])); G[1] = 0.5*det*w[3][0]*(K[1]*K[8]*w[2][0] + w[0][1]*w[0][2]*w[1][0]*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8])); G[2] = 0.5*det*w[3][0]*(K[1]*K[5]*w[2][0] + w[0][1]*w[0][2]*w[1][0]*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5])); G[3] = 0.5*det*w[3][0]*(K[1]*K[2]*w[2][0] + w[0][1]*w[0][2]*w[1][0]*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2])); G[4] = 0.5*det*w[3][0]*(K[1]*K[6]*w[2][0] + w[0][0]*w[0][1]*w[1][0]*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8])); G[5] = 0.5*det*w[3][0]*(K[1]*K[3]*w[2][0] + w[0][0]*w[0][1]*w[1][0]*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5])); G[6] = 0.5*det*w[3][0]*(K[0]*K[1]*w[2][0] + w[0][0]*w[0][1]*w[1][0]*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2])); G[7] = 0.5*det*w[3][0]*(K[1]*K[7]*w[2][0] + w[0][1]*w[0][1]*w[1][0]*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8]) + w[4][0]*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8])); G[8] = 0.5*det*w[3][0]*(K[1]*K[4]*w[2][0] + w[0][1]*w[0][1]*w[1][0]*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5]) + w[4][0]*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5])); G[9] = 0.5*det*w[3][0]*(K[8]*K[8]*w[2][0] + w[0][2]*w[0][2]*w[1][0]*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8]) + w[4][0]*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8])); G[10] = 0.5*det*w[3][0]*(K[5]*K[8]*w[2][0] + w[0][2]*w[0][2]*w[1][0]*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8]) + w[4][0]*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8])); G[11] = 0.5*det*w[3][0]*(K[2]*K[8]*w[2][0] + w[0][2]*w[0][2]*w[1][0]*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8]) + w[4][0]*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8])); G[12] = 0.5*det*w[3][0]*(K[6]*K[8]*w[2][0] + w[0][0]*w[0][2]*w[1][0]*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8])); G[13] = 0.5*det*w[3][0]*(K[3]*K[8]*w[2][0] + w[0][0]*w[0][2]*w[1][0]*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8])); G[14] = 0.5*det*w[3][0]*(K[0]*K[8]*w[2][0] + w[0][0]*w[0][2]*w[1][0]*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8])); G[15] = 0.5*det*w[3][0]*(K[7]*K[8]*w[2][0] + w[0][1]*w[0][2]*w[1][0]*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8])); G[16] = 0.5*det*w[3][0]*(K[4]*K[8]*w[2][0] + w[0][1]*w[0][2]*w[1][0]*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8])); G[17] = 0.5*det*w[3][0]*(K[5]*K[5]*w[2][0] + w[0][2]*w[0][2]*w[1][0]*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5]) + w[4][0]*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5])); G[18] = 0.5*det*w[3][0]*(K[2]*K[5]*w[2][0] + w[0][2]*w[0][2]*w[1][0]*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5]) + w[4][0]*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5])); G[19] = 0.5*det*w[3][0]*(K[5]*K[6]*w[2][0] + w[0][0]*w[0][2]*w[1][0]*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8])); G[20] = 0.5*det*w[3][0]*(K[3]*K[5]*w[2][0] + w[0][0]*w[0][2]*w[1][0]*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5])); G[21] = 0.5*det*w[3][0]*(K[0]*K[5]*w[2][0] + w[0][0]*w[0][2]*w[1][0]*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5])); G[22] = 0.5*det*w[3][0]*(K[5]*K[7]*w[2][0] + w[0][1]*w[0][2]*w[1][0]*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8])); G[23] = 0.5*det*w[3][0]*(K[4]*K[5]*w[2][0] + w[0][1]*w[0][2]*w[1][0]*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5])); G[24] = 0.5*det*w[3][0]*(K[2]*K[2]*w[2][0] + w[0][2]*w[0][2]*w[1][0]*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2]) + w[4][0]*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2])); G[25] = 0.5*det*w[3][0]*(K[2]*K[6]*w[2][0] + w[0][0]*w[0][2]*w[1][0]*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8])); G[26] = 0.5*det*w[3][0]*(K[2]*K[3]*w[2][0] + w[0][0]*w[0][2]*w[1][0]*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5])); G[27] = 0.5*det*w[3][0]*(K[0]*K[2]*w[2][0] + w[0][0]*w[0][2]*w[1][0]*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2])); G[28] = 0.5*det*w[3][0]*(K[2]*K[7]*w[2][0] + w[0][1]*w[0][2]*w[1][0]*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8])); G[29] = 0.5*det*w[3][0]*(K[2]*K[4]*w[2][0] + w[0][1]*w[0][2]*w[1][0]*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5])); G[30] = 0.5*det*w[3][0]*(K[6]*K[6]*w[2][0] + w[0][0]*w[0][0]*w[1][0]*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8]) + w[4][0]*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8])); G[31] = 0.5*det*w[3][0]*(K[3]*K[6]*w[2][0] + w[0][0]*w[0][0]*w[1][0]*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8]) + w[4][0]*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8])); G[32] = 0.5*det*w[3][0]*(K[0]*K[6]*w[2][0] + w[0][0]*w[0][0]*w[1][0]*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8]) + w[4][0]*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8])); G[33] = 0.5*det*w[3][0]*(K[6]*K[7]*w[2][0] + w[0][0]*w[0][1]*w[1][0]*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8])); G[34] = 0.5*det*w[3][0]*(K[4]*K[6]*w[2][0] + w[0][0]*w[0][1]*w[1][0]*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8])); G[35] = 0.5*det*w[3][0]*(K[3]*K[3]*w[2][0] + w[0][0]*w[0][0]*w[1][0]*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5]) + w[4][0]*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5])); G[36] = 0.5*det*w[3][0]*(K[0]*K[3]*w[2][0] + w[0][0]*w[0][0]*w[1][0]*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5]) + w[4][0]*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5])); G[37] = 0.5*det*w[3][0]*(K[3]*K[7]*w[2][0] + w[0][0]*w[0][1]*w[1][0]*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8])); G[38] = 0.5*det*w[3][0]*(K[3]*K[4]*w[2][0] + w[0][0]*w[0][1]*w[1][0]*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5])); G[39] = 0.5*det*w[3][0]*(K[0]*K[0]*w[2][0] + w[0][0]*w[0][0]*w[1][0]*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2]) + w[4][0]*(K[0]*K[0] + K[1]*K[1] + K[2]*K[2])); G[40] = 0.5*det*w[3][0]*(K[0]*K[7]*w[2][0] + w[0][0]*w[0][1]*w[1][0]*(K[0]*K[6] + K[1]*K[7] + K[2]*K[8])); G[41] = 0.5*det*w[3][0]*(K[0]*K[4]*w[2][0] + w[0][0]*w[0][1]*w[1][0]*(K[0]*K[3] + K[1]*K[4] + K[2]*K[5])); G[42] = 0.5*det*w[3][0]*(K[7]*K[7]*w[2][0] + w[0][1]*w[0][1]*w[1][0]*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8]) + w[4][0]*(K[6]*K[6] + K[7]*K[7] + K[8]*K[8])); G[43] = 0.5*det*w[3][0]*(K[4]*K[7]*w[2][0] + w[0][1]*w[0][1]*w[1][0]*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8]) + w[4][0]*(K[3]*K[6] + K[4]*K[7] + K[5]*K[8])); G[44] = 0.5*det*w[3][0]*(K[4]*K[4]*w[2][0] + w[0][1]*w[0][1]*w[1][0]*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5]) + w[4][0]*(K[3]*K[3] + K[4]*K[4] + K[5]*K[5])); G[45] = 0.5*K[2]*det*w[0][1]*w[3][0]; G[46] = 0.5*K[8]*det*w[0][2]*w[3][0]; G[47] = 0.5*K[5]*det*w[0][2]*w[3][0]; G[48] = 0.5*K[2]*det*w[0][2]*w[3][0]; G[49] = 0.5*K[8]*det*w[0][0]*w[3][0]; G[50] = 0.5*K[5]*det*w[0][0]*w[3][0]; G[51] = 0.5*K[2]*det*w[0][0]*w[3][0]; G[52] = 0.5*K[8]*det*w[0][1]*w[3][0]; G[53] = 0.5*K[5]*det*w[0][1]*w[3][0]; G[54] = 0.5*K[0]*det*w[0][1]*w[3][0]; G[55] = 0.5*K[6]*det*w[0][2]*w[3][0]; G[56] = 0.5*K[3]*det*w[0][2]*w[3][0]; G[57] = 0.5*K[0]*det*w[0][2]*w[3][0]; G[58] = 0.5*K[6]*det*w[0][0]*w[3][0]; G[59] = 0.5*K[3]*det*w[0][0]*w[3][0]; G[60] = 0.5*K[0]*det*w[0][0]*w[3][0]; G[61] = 0.5*K[6]*det*w[0][1]*w[3][0]; G[62] = 0.5*K[3]*det*w[0][1]*w[3][0]; G[63] = 0.5*K[1]*det*w[0][1]*w[3][0]; G[64] = 0.5*K[7]*det*w[0][2]*w[3][0]; G[65] = 0.5*K[4]*det*w[0][2]*w[3][0]; G[66] = 0.5*K[1]*det*w[0][2]*w[3][0]; G[67] = 0.5*K[7]*det*w[0][0]*w[3][0]; G[68] = 0.5*K[4]*det*w[0][0]*w[3][0]; G[69] = 0.5*K[1]*det*w[0][0]*w[3][0]; G[70] = 0.5*K[7]*det*w[0][1]*w[3][0]; G[71] = 0.5*K[4]*det*w[0][1]*w[3][0]; // Compute element tensor using UFL quadrature representation // Optimisations: ('eliminate zeros', True), ('ignore ones', True), ('ignore zero tables', True), ('optimisation', 'simplify_expressions'), ('remove zero terms', True) // Loop quadrature points for integral. // Number of operations to compute element tensor for following IP loop = 7348 for (unsigned int ip = 0; ip < 4; ip++) { // Number of operations to compute ip constants: 73 double I[73]; // Number of operations: 1 I[0] = G[0]*W4[ip]; // Number of operations: 1 I[1] = G[1]*W4[ip]; // Number of operations: 1 I[2] = G[2]*W4[ip]; // Number of operations: 1 I[3] = G[3]*W4[ip]; // Number of operations: 1 I[4] = G[4]*W4[ip]; // Number of operations: 1 I[5] = G[5]*W4[ip]; // Number of operations: 1 I[6] = G[6]*W4[ip]; // Number of operations: 1 I[7] = G[7]*W4[ip]; // Number of operations: 1 I[8] = G[8]*W4[ip]; // Number of operations: 1 I[9] = G[9]*W4[ip]; // Number of operations: 1 I[10] = G[10]*W4[ip]; // Number of operations: 1 I[11] = G[11]*W4[ip]; // Number of operations: 1 I[12] = G[12]*W4[ip]; // Number of operations: 1 I[13] = G[13]*W4[ip]; // Number of operations: 1 I[14] = G[14]*W4[ip]; // Number of operations: 1 I[15] = G[15]*W4[ip]; // Number of operations: 1 I[16] = G[16]*W4[ip]; // Number of operations: 1 I[17] = G[17]*W4[ip]; // Number of operations: 1 I[18] = G[18]*W4[ip]; // Number of operations: 1 I[19] = G[19]*W4[ip]; // Number of operations: 1 I[20] = G[20]*W4[ip]; // Number of operations: 1 I[21] = G[21]*W4[ip]; // Number of operations: 1 I[22] = G[22]*W4[ip]; // Number of operations: 1 I[23] = G[23]*W4[ip]; // Number of operations: 1 I[24] = G[24]*W4[ip]; // Number of operations: 1 I[25] = G[25]*W4[ip]; // Number of operations: 1 I[26] = G[26]*W4[ip]; // Number of operations: 1 I[27] = G[27]*W4[ip]; // Number of operations: 1 I[28] = G[28]*W4[ip]; // Number of operations: 1 I[29] = G[29]*W4[ip]; // Number of operations: 1 I[30] = G[30]*W4[ip]; // Number of operations: 1 I[31] = G[31]*W4[ip]; // Number of operations: 1 I[32] = G[32]*W4[ip]; // Number of operations: 1 I[33] = G[33]*W4[ip]; // Number of operations: 1 I[34] = G[34]*W4[ip]; // Number of operations: 1 I[35] = G[35]*W4[ip]; // Number of operations: 1 I[36] = G[36]*W4[ip]; // Number of operations: 1 I[37] = G[37]*W4[ip]; // Number of operations: 1 I[38] = G[38]*W4[ip]; // Number of operations: 1 I[39] = G[39]*W4[ip]; // Number of operations: 1 I[40] = G[40]*W4[ip]; // Number of operations: 1 I[41] = G[41]*W4[ip]; // Number of operations: 1 I[42] = G[42]*W4[ip]; // Number of operations: 1 I[43] = G[43]*W4[ip]; // Number of operations: 1 I[44] = G[44]*W4[ip]; // Number of operations: 1 I[45] = G[45]*W4[ip]; // Number of operations: 1 I[46] = G[46]*W4[ip]; // Number of operations: 1 I[47] = G[47]*W4[ip]; // Number of operations: 1 I[48] = G[48]*W4[ip]; // Number of operations: 1 I[49] = G[49]*W4[ip]; // Number of operations: 1 I[50] = G[50]*W4[ip]; // Number of operations: 1 I[51] = G[51]*W4[ip]; // Number of operations: 1 I[52] = G[52]*W4[ip]; // Number of operations: 1 I[53] = G[53]*W4[ip]; // Number of operations: 1 I[54] = G[54]*W4[ip]; // Number of operations: 1 I[55] = G[55]*W4[ip]; // Number of operations: 1 I[56] = G[56]*W4[ip]; // Number of operations: 1 I[57] = G[57]*W4[ip]; // Number of operations: 1 I[58] = G[58]*W4[ip]; // Number of operations: 1 I[59] = G[59]*W4[ip]; // Number of operations: 1 I[60] = G[60]*W4[ip]; // Number of operations: 1 I[61] = G[61]*W4[ip]; // Number of operations: 1 I[62] = G[62]*W4[ip]; // Number of operations: 1 I[63] = G[63]*W4[ip]; // Number of operations: 1 I[64] = G[64]*W4[ip]; // Number of operations: 1 I[65] = G[65]*W4[ip]; // Number of operations: 1 I[66] = G[66]*W4[ip]; // Number of operations: 1 I[67] = G[67]*W4[ip]; // Number of operations: 1 I[68] = G[68]*W4[ip]; // Number of operations: 1 I[69] = G[69]*W4[ip]; // Number of operations: 1 I[70] = G[70]*W4[ip]; // Number of operations: 1 I[71] = G[71]*W4[ip]; // Number of operations: 1 I[72] = W4[ip]*det; // Number of operations for primary indices: 648 for (unsigned int j = 0; j < 4; j++) { for (unsigned int k = 0; k < 2; k++) { // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc10[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[45]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc12[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[46]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc13[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[47]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc14[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[48]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc4[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[49]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc5[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[50]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc6[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[51]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc8[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[52]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc9[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[53]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc10[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[54]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc12[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[55]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc13[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[56]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc14[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[57]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc4[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[58]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc5[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[59]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc6[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[60]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc8[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[61]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc9[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[62]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc10[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[63]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc12[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[64]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc13[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[65]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc14[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[66]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc4[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[67]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc5[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[68]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc6[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[69]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc8[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[70]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc9[k]] += FE2_C0[ip][j]*FE2_C0_D001[ip][k]*I[71]; }// end loop over 'k' }// end loop over 'j' // Number of operations for primary indices: 972 for (unsigned int j = 0; j < 2; j++) { for (unsigned int k = 0; k < 2; k++) { // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc10[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[0]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc12[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[1]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc13[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[2]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc14[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[3]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc4[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[4]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc5[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[5]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc6[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[6]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc8[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[7]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc9[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[8]; // Number of operations to compute entry: 3 A[nzc12[j]*12 + nzc10[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[1]; // Number of operations to compute entry: 3 A[nzc12[j]*12 + nzc12[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[9]; // Number of operations to compute entry: 3 A[nzc12[j]*12 + nzc13[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[10]; // Number of operations to compute entry: 3 A[nzc12[j]*12 + nzc14[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[11]; // Number of operations to compute entry: 3 A[nzc12[j]*12 + nzc4[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[12]; // Number of operations to compute entry: 3 A[nzc12[j]*12 + nzc5[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[13]; // Number of operations to compute entry: 3 A[nzc12[j]*12 + nzc6[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[14]; // Number of operations to compute entry: 3 A[nzc12[j]*12 + nzc8[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[15]; // Number of operations to compute entry: 3 A[nzc12[j]*12 + nzc9[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[16]; // Number of operations to compute entry: 3 A[nzc13[j]*12 + nzc10[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[2]; // Number of operations to compute entry: 3 A[nzc13[j]*12 + nzc12[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[10]; // Number of operations to compute entry: 3 A[nzc13[j]*12 + nzc13[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[17]; // Number of operations to compute entry: 3 A[nzc13[j]*12 + nzc14[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[18]; // Number of operations to compute entry: 3 A[nzc13[j]*12 + nzc4[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[19]; // Number of operations to compute entry: 3 A[nzc13[j]*12 + nzc5[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[20]; // Number of operations to compute entry: 3 A[nzc13[j]*12 + nzc6[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[21]; // Number of operations to compute entry: 3 A[nzc13[j]*12 + nzc8[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[22]; // Number of operations to compute entry: 3 A[nzc13[j]*12 + nzc9[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[23]; // Number of operations to compute entry: 3 A[nzc14[j]*12 + nzc10[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[3]; // Number of operations to compute entry: 3 A[nzc14[j]*12 + nzc12[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[11]; // Number of operations to compute entry: 3 A[nzc14[j]*12 + nzc13[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[18]; // Number of operations to compute entry: 3 A[nzc14[j]*12 + nzc14[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[24]; // Number of operations to compute entry: 3 A[nzc14[j]*12 + nzc4[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[25]; // Number of operations to compute entry: 3 A[nzc14[j]*12 + nzc5[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[26]; // Number of operations to compute entry: 3 A[nzc14[j]*12 + nzc6[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[27]; // Number of operations to compute entry: 3 A[nzc14[j]*12 + nzc8[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[28]; // Number of operations to compute entry: 3 A[nzc14[j]*12 + nzc9[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[29]; // Number of operations to compute entry: 3 A[nzc4[j]*12 + nzc10[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[4]; // Number of operations to compute entry: 3 A[nzc4[j]*12 + nzc12[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[12]; // Number of operations to compute entry: 3 A[nzc4[j]*12 + nzc13[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[19]; // Number of operations to compute entry: 3 A[nzc4[j]*12 + nzc14[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[25]; // Number of operations to compute entry: 3 A[nzc4[j]*12 + nzc4[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[30]; // Number of operations to compute entry: 3 A[nzc4[j]*12 + nzc5[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[31]; // Number of operations to compute entry: 3 A[nzc4[j]*12 + nzc6[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[32]; // Number of operations to compute entry: 3 A[nzc4[j]*12 + nzc8[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[33]; // Number of operations to compute entry: 3 A[nzc4[j]*12 + nzc9[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[34]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc10[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[5]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc12[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[13]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc13[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[20]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc14[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[26]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc4[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[31]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc5[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[35]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc6[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[36]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc8[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[37]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc9[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[38]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc10[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[6]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc12[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[14]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc13[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[21]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc14[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[27]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc4[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[32]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc5[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[36]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc6[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[39]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc8[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[40]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc9[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[41]; // Number of operations to compute entry: 3 A[nzc8[j]*12 + nzc10[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[7]; // Number of operations to compute entry: 3 A[nzc8[j]*12 + nzc12[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[15]; // Number of operations to compute entry: 3 A[nzc8[j]*12 + nzc13[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[22]; // Number of operations to compute entry: 3 A[nzc8[j]*12 + nzc14[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[28]; // Number of operations to compute entry: 3 A[nzc8[j]*12 + nzc4[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[33]; // Number of operations to compute entry: 3 A[nzc8[j]*12 + nzc5[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[37]; // Number of operations to compute entry: 3 A[nzc8[j]*12 + nzc6[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[40]; // Number of operations to compute entry: 3 A[nzc8[j]*12 + nzc8[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[42]; // Number of operations to compute entry: 3 A[nzc8[j]*12 + nzc9[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[43]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc10[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[8]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc12[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[16]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc13[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[23]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc14[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[29]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc4[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[34]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc5[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[38]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc6[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[41]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc8[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[43]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc9[k]] += FE2_C0_D001[ip][j]*FE2_C0_D001[ip][k]*I[44]; }// end loop over 'k' }// end loop over 'j' // Number of operations for primary indices: 144 for (unsigned int j = 0; j < 4; j++) { for (unsigned int k = 0; k < 4; k++) { // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc11[k]] += FE2_C0[ip][j]*FE2_C0[ip][k]*I[72]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc3[k]] += FE2_C0[ip][j]*FE2_C0[ip][k]*I[72]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc7[k]] += FE2_C0[ip][j]*FE2_C0[ip][k]*I[72]; }// end loop over 'k' }// end loop over 'j' }// end loop over 'ip' } }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class nsemomentum3d_form_0: public ufc::form { public: /// Constructor nsemomentum3d_form_0() : ufc::form() { // Do nothing } /// Destructor virtual ~nsemomentum3d_form_0() { // Do nothing } /// Return a string identifying the form virtual const char* signature() const { return "03aa76bf9272709960b4fa3100e2d3adec003d7ea6049f0983c4960f830cb52d7158c7447e1a8b0dc549e17877cbf21e2f2e380d466b512932b4d38b4e3458db"; } /// Return the rank of the global tensor (r) virtual std::size_t rank() const { return 2; } /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const { return 5; } /// Return the number of cell domains virtual std::size_t num_cell_domains() const { return 0; } /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const { return 0; } /// Return the number of point domains virtual std::size_t num_point_domains() const { return 0; } /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals virtual bool has_point_integrals() const { return false; } /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const { switch (i) { case 0: { return new nsemomentum3d_finite_element_3(); break; } case 1: { return new nsemomentum3d_finite_element_3(); break; } case 2: { return new nsemomentum3d_finite_element_1(); break; } case 3: { return new nsemomentum3d_finite_element_0(); break; } case 4: { return new nsemomentum3d_finite_element_0(); break; } case 5: { return new nsemomentum3d_finite_element_0(); break; } case 6: { return new nsemomentum3d_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const { switch (i) { case 0: { return new nsemomentum3d_dofmap_3(); break; } case 1: { return new nsemomentum3d_dofmap_3(); break; } case 2: { return new nsemomentum3d_dofmap_1(); break; } case 3: { return new nsemomentum3d_dofmap_0(); break; } case 4: { return new nsemomentum3d_dofmap_0(); break; } case 5: { return new nsemomentum3d_dofmap_0(); break; } case 6: { return new nsemomentum3d_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const { return new nsemomentum3d_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const { return 0; } }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace NSEMomentum3D { class CoefficientSpace_d1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_d1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_d1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_d1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_d1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_d1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_d1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_d1() { } }; class CoefficientSpace_d2: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_d2(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_d2(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_d2(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_d2(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_d2(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_d2(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_d2() { } }; class CoefficientSpace_k: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_k(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_k(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_k(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_k(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_k(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_k(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_k() { } }; class CoefficientSpace_nu: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_nu(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_nu(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_nu(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_nu(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_nu(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_nu(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_nu() { } }; class CoefficientSpace_w: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_w(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_1()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_w(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_1()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) CoefficientSpace_w(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_1()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) CoefficientSpace_w(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_1()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) CoefficientSpace_w(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_1()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) CoefficientSpace_w(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_1()), restriction))) { // Do nothing } // Copy constructor ~CoefficientSpace_w() { } }; class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_3()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_3()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_3()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_3()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_3()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_3()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_3()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_3()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_3()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_3()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_3()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new nsemomentum3d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new nsemomentum3d_dofmap_3()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; typedef CoefficientSpace_w Form_a_FunctionSpace_2; typedef CoefficientSpace_d1 Form_a_FunctionSpace_3; typedef CoefficientSpace_d2 Form_a_FunctionSpace_4; typedef CoefficientSpace_k Form_a_FunctionSpace_5; typedef CoefficientSpace_nu Form_a_FunctionSpace_6; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 5), w(*this, 0), d1(*this, 1), d2(*this, 2), k(*this, 3), nu(*this, 4) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new nsemomentum3d_form_0()); } // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0, const dolfin::GenericFunction& w, const dolfin::GenericFunction& d1, const dolfin::GenericFunction& d2, const dolfin::GenericFunction& k, const dolfin::GenericFunction& nu): dolfin::Form(2, 5), w(*this, 0), d1(*this, 1), d2(*this, 2), k(*this, 3), nu(*this, 4) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); this->w = w; this->d1 = d1; this->d2 = d2; this->k = k; this->nu = nu; _ufc_form = boost::shared_ptr(new nsemomentum3d_form_0()); } // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0, boost::shared_ptr w, boost::shared_ptr d1, boost::shared_ptr d2, boost::shared_ptr k, boost::shared_ptr nu): dolfin::Form(2, 5), w(*this, 0), d1(*this, 1), d2(*this, 2), k(*this, 3), nu(*this, 4) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); this->w = *w; this->d1 = *d1; this->d2 = *d2; this->k = *k; this->nu = *nu; _ufc_form = boost::shared_ptr(new nsemomentum3d_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 5), w(*this, 0), d1(*this, 1), d2(*this, 2), k(*this, 3), nu(*this, 4) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new nsemomentum3d_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0, const dolfin::GenericFunction& w, const dolfin::GenericFunction& d1, const dolfin::GenericFunction& d2, const dolfin::GenericFunction& k, const dolfin::GenericFunction& nu): dolfin::Form(2, 5), w(*this, 0), d1(*this, 1), d2(*this, 2), k(*this, 3), nu(*this, 4) { _function_spaces[0] = V0; _function_spaces[1] = V1; this->w = w; this->d1 = d1; this->d2 = d2; this->k = k; this->nu = nu; _ufc_form = boost::shared_ptr(new nsemomentum3d_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0, boost::shared_ptr w, boost::shared_ptr d1, boost::shared_ptr d2, boost::shared_ptr k, boost::shared_ptr nu): dolfin::Form(2, 5), w(*this, 0), d1(*this, 1), d2(*this, 2), k(*this, 3), nu(*this, 4) { _function_spaces[0] = V0; _function_spaces[1] = V1; this->w = *w; this->d1 = *d1; this->d2 = *d2; this->k = *k; this->nu = *nu; _ufc_form = boost::shared_ptr(new nsemomentum3d_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { if (name == "w") return 0; else if (name == "d1") return 1; else if (name == "d2") return 2; else if (name == "k") return 3; else if (name == "nu") return 4; dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { switch (i) { case 0: return "w"; case 1: return "d1"; case 2: return "d2"; case 3: return "k"; case 4: return "nu"; } dolfin::dolfin_error("generated code for class Form", "access coefficient data", "Invalid coefficient"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; typedef Form_a_FunctionSpace_2 CoefficientSpace_w; typedef Form_a_FunctionSpace_3 CoefficientSpace_d1; typedef Form_a_FunctionSpace_4 CoefficientSpace_d2; typedef Form_a_FunctionSpace_5 CoefficientSpace_k; typedef Form_a_FunctionSpace_6 CoefficientSpace_nu; // Coefficients dolfin::CoefficientAssigner w; dolfin::CoefficientAssigner d1; dolfin::CoefficientAssigner d2; dolfin::CoefficientAssigner k; dolfin::CoefficientAssigner nu; }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/assembly/cpp/forms/NSEMomentum3D.ufl0000644000175000017500000000116112263014601023263 0ustar johannrjohannrelement = VectorElement("Lagrange", tetrahedron, 1) v = TestFunction(element) u = TrialFunction(element) constant_scalar = FiniteElement("Discontinuous Lagrange", tetrahedron, 0) constant_vector = VectorElement("Discontinuous Lagrange", tetrahedron, 0) w = Coefficient(constant_vector) d1 = Coefficient(constant_scalar) d2 = Coefficient(constant_scalar) k = Coefficient(constant_scalar) nu = Coefficient(constant_scalar) G_a = inner(v, u)*dx + 0.5*k*nu*inner(grad(v), grad(u))*dx + 0.5*k*inner(v, dot(w, grad(u)))*dx SD_a = d1*0.5*k*dot(dot(w, grad(v)), dot(w, grad(u)))*dx + d2*0.5*k*div(v)*div(u)*dx a = G_a + SD_a dolfin-1.3.0/bench/fem/assembly/cpp/forms/Poisson2DP3.h0000644000175000017500000042502712263015063022427 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: False #ifndef __POISSON2DP3_H #define __POISSON2DP3_H #include #include #include #include /// This class defines the interface for a finite element. class poisson2dp3_finite_element_0: public ufc::finite_element { public: /// Constructor poisson2dp3_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~poisson2dp3_finite_element_0() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 3, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 10; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 0; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.0471404520791031, -0.0288675134594813, -0.0166666666666666, 0.0782460796435952, 0.0606091526731326, 0.0349927106111883, -0.0601337794302955, -0.0508223195384204, -0.0393667994375868, -0.0227284322524248}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.0471404520791032, 0.0288675134594813, -0.0166666666666666, 0.0782460796435952, -0.0606091526731327, 0.0349927106111883, 0.0601337794302955, -0.0508223195384204, 0.0393667994375868, -0.0227284322524248}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.0471404520791031, 0.0, 0.0333333333333333, 0.0, 0.0, 0.104978131833565, 0.0, 0.0, 0.0, 0.0909137290096989}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.259807621135332, -0.15, 0.117369119465393, 0.0606091526731326, -0.0787335988751736, 0.0, 0.101644639076841, -0.131222664791956, 0.090913729009699}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.0, 0.3, 0.0, 0.151522881682832, 0.0262445329583912, 0.0, 0.0, 0.131222664791956, -0.136370593514548}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, -0.259807621135332, -0.15, 0.117369119465393, -0.0606091526731326, -0.0787335988751736, 0.0, 0.101644639076841, 0.131222664791956, 0.090913729009699}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.0, 0.3, 0.0, -0.151522881682832, 0.0262445329583912, 0.0, 0.0, -0.131222664791956, -0.136370593514548}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, -0.259807621135332, -0.15, -0.0782460796435952, 0.090913729009699, 0.0962299541807677, 0.180401338290886, 0.0508223195384204, -0.0131222664791956, -0.0227284322524247}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.259807621135332, -0.15, -0.0782460796435952, -0.090913729009699, 0.0962299541807678, -0.180401338290886, 0.0508223195384204, 0.0131222664791956, -0.0227284322524248}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.636396103067893, 0.0, 0.0, -0.234738238930785, 0.0, -0.262445329583912, 0.0, -0.203289278153682, 0.0, 0.090913729009699}; // Compute value(s) for (unsigned int r = 0; r < 10; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 10; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 3) { return ; } // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[8][3]; for (unsigned int row = 0; row < 8; row++) { for (unsigned int col = 0; col < 3; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 1) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[2][2] = {{K[0], K[1]}, {K[2], K[3]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[8][8]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.0471404520791031, -0.0288675134594813, -0.0166666666666666, 0.0782460796435952, 0.0606091526731326, 0.0349927106111883, -0.0601337794302955, -0.0508223195384204, -0.0393667994375868, -0.0227284322524248}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.0471404520791032, 0.0288675134594813, -0.0166666666666666, 0.0782460796435952, -0.0606091526731327, 0.0349927106111883, 0.0601337794302955, -0.0508223195384204, 0.0393667994375868, -0.0227284322524248}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.0471404520791031, 0.0, 0.0333333333333333, 0.0, 0.0, 0.104978131833565, 0.0, 0.0, 0.0, 0.0909137290096989}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.259807621135332, -0.15, 0.117369119465393, 0.0606091526731326, -0.0787335988751736, 0.0, 0.101644639076841, -0.131222664791956, 0.090913729009699}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.0, 0.3, 0.0, 0.151522881682832, 0.0262445329583912, 0.0, 0.0, 0.131222664791956, -0.136370593514548}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, -0.259807621135332, -0.15, 0.117369119465393, -0.0606091526731326, -0.0787335988751736, 0.0, 0.101644639076841, 0.131222664791956, 0.090913729009699}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.0, 0.3, 0.0, -0.151522881682832, 0.0262445329583912, 0.0, 0.0, -0.131222664791956, -0.136370593514548}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, -0.259807621135332, -0.15, -0.0782460796435952, 0.090913729009699, 0.0962299541807677, 0.180401338290886, 0.0508223195384204, -0.0131222664791956, -0.0227284322524247}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.106066017177982, 0.259807621135332, -0.15, -0.0782460796435952, -0.090913729009699, 0.0962299541807678, -0.180401338290886, 0.0508223195384204, 0.0131222664791956, -0.0227284322524248}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[10] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[6] = basisvalues[3]*1.66666666666667*tmp0 - basisvalues[1]*0.666666666666667*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[7] = basisvalues[3]*(2.5 + 3.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[9] = basisvalues[5]*(0.05 + Y*1.75) - basisvalues[2]*0.7; basisvalues[8] = basisvalues[4]*(0.54 + Y*2.1) - basisvalues[1]*0.56; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[9] *= std::sqrt(2.0); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[8] *= std::sqrt(6.0); basisvalues[3] *= std::sqrt(7.5); basisvalues[7] *= std::sqrt(10.0); basisvalues[6] *= std::sqrt(14.0); // Table(s) of coefficients static const double coefficients0[10] = \ {0.636396103067893, 0.0, 0.0, -0.234738238930785, 0.0, -0.262445329583912, 0.0, -0.203289278153682, 0.0, 0.090913729009699}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050513, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {5.29150262212918, 0.0, -2.99332590941915, 13.6626010212795, 0.0, 0.611010092660778, 0.0, 0.0, 0.0, 0.0}, {0.0, 4.38178046004133, 0.0, 0.0, 12.5219806739988, 0.0, 0.0, 0.0, 0.0, 0.0}, {3.46410161513775, 0.0, 7.83836717690617, 0.0, 0.0, 8.4, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[10][10] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175277, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2, 6.12372435695794, 3.53553390593274, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.64575131106459, 5.18459255872628, -1.49666295470957, 6.83130051063973, -1.05830052442584, 0.305505046330389, 0.0, 0.0, 0.0, 0.0}, {2.23606797749979, 2.19089023002067, 2.52982212813471, 8.08290376865476, 6.26099033699941, -1.80739222823013, 0.0, 0.0, 0.0, 0.0}, {1.73205080756887, -5.09116882454314, 3.91918358845309, 0.0, 9.69948452238571, 4.2, 0.0, 0.0, 0.0, 0.0}, {5, 0.0, -2.82842712474619, 0.0, 0.0, 12.1243556529821, 0.0, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[8]; for (unsigned int r = 0; r < 8; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[10][10] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 10; t++) { for (unsigned int u = 0; u < 10; u++) { for (unsigned int tu = 0; tu < 10; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 10; s++) { for (unsigned int t = 0; t < 10; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 10; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 3) { return ; } // Helper variable to hold values of a single dof. double dof_values[8]; for (unsigned int r = 0; r < 8; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 10; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = 0.666666666666667*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.666666666666667*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = 0.333333333333333*vertex_coordinates[2] + 0.666666666666667*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[3] + 0.666666666666667*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 5: { y[0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 6: { y[0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 7: { y[0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2]; y[1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 8: { y[0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[2]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 9: { y[0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = 0.666666666666667*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.666666666666667*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[2] + 0.666666666666667*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[3] + 0.666666666666667*vertex_coordinates[5]; f.evaluate(vals, y, c); values[4] = vals[0]; y[0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); values[5] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[5]; f.evaluate(vals, y, c); values[6] = vals[0]; y[0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2]; y[1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3]; f.evaluate(vals, y, c); values[7] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[2]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[3]; f.evaluate(vals, y, c); values[8] = vals[0]; y[0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; y[1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; f.evaluate(vals, y, c); values[9] = vals[0]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new poisson2dp3_finite_element_0(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class poisson2dp3_dofmap_0: public ufc::dofmap { public: /// Constructor poisson2dp3_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~poisson2dp3_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 3, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return true; break; } case 2: { return true; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0] + 2*num_global_entities[1] + num_global_entities[2]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 10; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 4; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 2; break; } case 2: { return 1; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; dofs[3] = offset + 2*c.entity_indices[1][0]; dofs[4] = offset + 2*c.entity_indices[1][0] + 1; dofs[5] = offset + 2*c.entity_indices[1][1]; dofs[6] = offset + 2*c.entity_indices[1][1] + 1; dofs[7] = offset + 2*c.entity_indices[1][2]; dofs[8] = offset + 2*c.entity_indices[1][2] + 1; offset += 2*num_global_entities[1]; dofs[9] = offset + c.entity_indices[2][0]; offset += num_global_entities[2]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; dofs[3] = 4; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 5; dofs[3] = 6; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 7; dofs[3] = 8; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } } break; } case 1: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 3; dofs[1] = 4; break; } case 1: { dofs[0] = 5; dofs[1] = 6; break; } case 2: { dofs[0] = 7; dofs[1] = 8; break; } } break; } case 2: { if (i > 0) { throw std::runtime_error("i is larger than number of entities (0)"); } dofs[0] = 9; break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[1][0] = vertex_coordinates[2]; dof_coordinates[1][1] = vertex_coordinates[3]; dof_coordinates[2][0] = vertex_coordinates[4]; dof_coordinates[2][1] = vertex_coordinates[5]; dof_coordinates[3][0] = 0.666666666666667*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; dof_coordinates[3][1] = 0.666666666666667*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; dof_coordinates[4][0] = 0.333333333333333*vertex_coordinates[2] + 0.666666666666667*vertex_coordinates[4]; dof_coordinates[4][1] = 0.333333333333333*vertex_coordinates[3] + 0.666666666666667*vertex_coordinates[5]; dof_coordinates[5][0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[4]; dof_coordinates[5][1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[5]; dof_coordinates[6][0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[4]; dof_coordinates[6][1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[5]; dof_coordinates[7][0] = 0.666666666666667*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2]; dof_coordinates[7][1] = 0.666666666666667*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3]; dof_coordinates[8][0] = 0.333333333333333*vertex_coordinates[0] + 0.666666666666667*vertex_coordinates[2]; dof_coordinates[8][1] = 0.333333333333333*vertex_coordinates[1] + 0.666666666666667*vertex_coordinates[3]; dof_coordinates[9][0] = 0.333333333333333*vertex_coordinates[0] + 0.333333333333333*vertex_coordinates[2] + 0.333333333333333*vertex_coordinates[4]; dof_coordinates[9][1] = 0.333333333333333*vertex_coordinates[1] + 0.333333333333333*vertex_coordinates[3] + 0.333333333333333*vertex_coordinates[5]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new poisson2dp3_dofmap_0(); } }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson2dp3_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor poisson2dp3_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor virtual ~poisson2dp3_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 8 // Number of operations (multiply-add pairs) for tensor contraction: 205 // Total number of operations (multiply-add pairs): 216 // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0_0 = det*(K[0]*K[0] + K[1]*K[1]); const double G0_0_1 = det*(K[0]*K[2] + K[1]*K[3]); const double G0_1_0 = det*(K[2]*K[0] + K[3]*K[1]); const double G0_1_1 = det*(K[2]*K[2] + K[3]*K[3]); // Compute element tensor A[0] = 0.424999999999999*G0_0_0 + 0.424999999999999*G0_0_1 + 0.424999999999999*G0_1_0 + 0.424999999999999*G0_1_1; A[1] = -0.0875000000000006*G0_0_0 - 0.0875000000000005*G0_1_0; A[2] = -0.0875000000000005*G0_0_1 - 0.0875000000000006*G0_1_1; A[3] = -0.0375000000000006*G0_0_0 - 0.0375000000000018*G0_0_1 - 0.0375000000000006*G0_1_0 - 0.0375000000000017*G0_1_1; A[4] = -0.0375000000000017*G0_0_0 - 0.0375000000000007*G0_0_1 - 0.0375000000000017*G0_1_0 - 0.0375000000000007*G0_1_1; A[5] = 0.0374999999999997*G0_0_0 - 0.674999999999998*G0_0_1 + 0.0374999999999996*G0_1_0 - 0.674999999999998*G0_1_1; A[6] = 0.0375000000000017*G0_0_0 + 0.3375*G0_0_1 + 0.0375000000000017*G0_1_0 + 0.3375*G0_1_1; A[7] = -0.674999999999998*G0_0_0 + 0.0374999999999994*G0_0_1 - 0.674999999999998*G0_1_0 + 0.0374999999999994*G0_1_1; A[8] = 0.3375*G0_0_0 + 0.037500000000002*G0_0_1 + 0.3375*G0_1_0 + 0.0375000000000018*G0_1_1; A[9] = 0.0; A[10] = -0.0875000000000006*G0_0_0 - 0.0875000000000005*G0_0_1; A[11] = 0.425000000000002*G0_0_0; A[12] = 0.0874999999999996*G0_0_1; A[13] = 0.0375000000000018*G0_0_0 + 0.712500000000003*G0_0_1; A[14] = 0.0374999999999996*G0_0_0 - 0.3*G0_0_1; A[15] = -0.0375000000000001*G0_0_0; A[16] = -0.0374999999999996*G0_0_0; A[17] = 0.337500000000003*G0_0_0 + 0.300000000000003*G0_0_1; A[18] = -0.675000000000004*G0_0_0 - 0.712500000000003*G0_0_1; A[19] = 0.0; A[20] = -0.0875000000000005*G0_1_0 - 0.0875000000000006*G0_1_1; A[21] = 0.0874999999999996*G0_1_0; A[22] = 0.425000000000002*G0_1_1; A[23] = -0.3*G0_1_0 + 0.0374999999999994*G0_1_1; A[24] = 0.712500000000004*G0_1_0 + 0.0375000000000025*G0_1_1; A[25] = 0.300000000000003*G0_1_0 + 0.337500000000003*G0_1_1; A[26] = -0.712500000000004*G0_1_0 - 0.675000000000005*G0_1_1; A[27] = -0.0374999999999996*G0_1_1; A[28] = -0.0374999999999994*G0_1_1; A[29] = 0.0; A[30] = -0.0375000000000006*G0_0_0 - 0.0375000000000006*G0_0_1 - 0.0375000000000018*G0_1_0 - 0.0375000000000017*G0_1_1; A[31] = 0.0375000000000018*G0_0_0 + 0.712500000000003*G0_1_0; A[32] = -0.3*G0_0_1 + 0.0374999999999994*G0_1_1; A[33] = 1.6875*G0_0_0 + 0.843750000000001*G0_0_1 + 0.843750000000001*G0_1_0 + 1.6875*G0_1_1; A[34] = -0.3375*G0_0_0 + 0.843749999999998*G0_0_1 - 0.168750000000001*G0_1_0 - 0.3375*G0_1_1; A[35] = 0.337500000000001*G0_0_0 + 0.16875*G0_0_1 + 0.16875*G0_1_0; A[36] = 0.3375*G0_0_0 + 0.168750000000001*G0_0_1 + 0.168750000000001*G0_1_0; A[37] = 0.168750000000004*G0_0_1 + 0.168750000000007*G0_1_0 + 0.337500000000006*G0_1_1; A[38] = -0.843750000000002*G0_0_1 - 0.843750000000008*G0_1_0 - 1.68750000000001*G0_1_1; A[39] = -2.025*G0_0_0 - 1.0125*G0_0_1 - 1.0125*G0_1_0; A[40] = -0.0375000000000017*G0_0_0 - 0.0375000000000017*G0_0_1 - 0.0375000000000007*G0_1_0 - 0.0375000000000007*G0_1_1; A[41] = 0.0374999999999996*G0_0_0 - 0.3*G0_1_0; A[42] = 0.712500000000004*G0_0_1 + 0.0375000000000024*G0_1_1; A[43] = -0.3375*G0_0_0 - 0.168750000000001*G0_0_1 + 0.843749999999998*G0_1_0 - 0.3375*G0_1_1; A[44] = 1.68750000000001*G0_0_0 + 0.843750000000003*G0_0_1 + 0.843750000000003*G0_1_0 + 1.6875*G0_1_1; A[45] = 0.337500000000007*G0_0_0 + 0.168750000000007*G0_0_1 + 0.168750000000005*G0_1_0; A[46] = -1.68750000000001*G0_0_0 - 0.84375000000001*G0_0_1 - 0.843750000000004*G0_1_0; A[47] = 0.168750000000001*G0_0_1 + 0.168750000000001*G0_1_0 + 0.337500000000002*G0_1_1; A[48] = 0.168750000000001*G0_0_1 + 0.168749999999999*G0_1_0 + 0.337500000000001*G0_1_1; A[49] = -1.0125*G0_0_1 - 1.0125*G0_1_0 - 2.025*G0_1_1; A[50] = 0.0374999999999997*G0_0_0 + 0.0374999999999996*G0_0_1 - 0.674999999999998*G0_1_0 - 0.674999999999998*G0_1_1; A[51] = -0.0375000000000001*G0_0_0; A[52] = 0.300000000000003*G0_0_1 + 0.337500000000003*G0_1_1; A[53] = 0.337500000000001*G0_0_0 + 0.16875*G0_0_1 + 0.16875*G0_1_0; A[54] = 0.337500000000007*G0_0_0 + 0.168750000000004*G0_0_1 + 0.168750000000007*G0_1_0; A[55] = 1.6875*G0_0_0 + 0.843750000000003*G0_0_1 + 0.843750000000003*G0_1_0 + 1.6875*G0_1_1; A[56] = -0.337500000000007*G0_0_0 - 1.18125000000001*G0_0_1 - 0.168750000000007*G0_1_0 - 1.35*G0_1_1; A[57] = 0.84375*G0_0_1 + 0.843749999999995*G0_1_0; A[58] = -0.16875*G0_0_1 - 0.168749999999997*G0_1_0; A[59] = -2.025*G0_0_0 - 1.0125*G0_0_1 - 1.0125*G0_1_0; A[60] = 0.0375000000000017*G0_0_0 + 0.0375000000000017*G0_0_1 + 0.3375*G0_1_0 + 0.3375*G0_1_1; A[61] = -0.0374999999999996*G0_0_0; A[62] = -0.712500000000004*G0_0_1 - 0.675000000000005*G0_1_1; A[63] = 0.3375*G0_0_0 + 0.168750000000001*G0_0_1 + 0.168750000000001*G0_1_0; A[64] = -1.68750000000001*G0_0_0 - 0.843750000000004*G0_0_1 - 0.84375000000001*G0_1_0; A[65] = -0.337500000000007*G0_0_0 - 0.168750000000007*G0_0_1 - 1.18125000000001*G0_1_0 - 1.35*G0_1_1; A[66] = 1.68750000000001*G0_0_0 + 0.84375000000001*G0_0_1 + 0.843750000000011*G0_1_0 + 1.68750000000001*G0_1_1; A[67] = -0.168750000000001*G0_0_1 - 0.168749999999997*G0_1_0; A[68] = -0.168750000000001*G0_0_1 - 0.168750000000004*G0_1_0; A[69] = 1.01250000000001*G0_0_1 + 1.01250000000001*G0_1_0; A[70] = -0.674999999999998*G0_0_0 - 0.674999999999998*G0_0_1 + 0.0374999999999994*G0_1_0 + 0.0374999999999994*G0_1_1; A[71] = 0.337500000000003*G0_0_0 + 0.300000000000003*G0_1_0; A[72] = -0.0374999999999996*G0_1_1; A[73] = 0.168750000000007*G0_0_1 + 0.168750000000004*G0_1_0 + 0.337500000000006*G0_1_1; A[74] = 0.168750000000001*G0_0_1 + 0.168750000000001*G0_1_0 + 0.337500000000002*G0_1_1; A[75] = 0.843749999999995*G0_0_1 + 0.84375*G0_1_0; A[76] = -0.168749999999997*G0_0_1 - 0.168750000000001*G0_1_0; A[77] = 1.6875*G0_0_0 + 0.843750000000002*G0_0_1 + 0.843750000000002*G0_1_0 + 1.6875*G0_1_1; A[78] = -1.35*G0_0_0 - 0.168750000000007*G0_0_1 - 1.18125000000001*G0_1_0 - 0.337500000000006*G0_1_1; A[79] = -1.0125*G0_0_1 - 1.0125*G0_1_0 - 2.025*G0_1_1; A[80] = 0.3375*G0_0_0 + 0.3375*G0_0_1 + 0.037500000000002*G0_1_0 + 0.0375000000000018*G0_1_1; A[81] = -0.675000000000004*G0_0_0 - 0.712500000000003*G0_1_0; A[82] = -0.0374999999999994*G0_1_1; A[83] = -0.843750000000008*G0_0_1 - 0.843750000000002*G0_1_0 - 1.68750000000001*G0_1_1; A[84] = 0.168749999999999*G0_0_1 + 0.168750000000001*G0_1_0 + 0.337500000000001*G0_1_1; A[85] = -0.168749999999997*G0_0_1 - 0.16875*G0_1_0; A[86] = -0.168750000000004*G0_0_1 - 0.168750000000001*G0_1_0; A[87] = -1.35*G0_0_0 - 1.18125*G0_0_1 - 0.168750000000007*G0_1_0 - 0.337500000000006*G0_1_1; A[88] = 1.68750000000001*G0_0_0 + 0.843750000000009*G0_0_1 + 0.843750000000009*G0_1_0 + 1.68750000000001*G0_1_1; A[89] = 1.01250000000001*G0_0_1 + 1.0125*G0_1_0; A[90] = 0.0; A[91] = 0.0; A[92] = 0.0; A[93] = -2.025*G0_0_0 - 1.0125*G0_0_1 - 1.0125*G0_1_0; A[94] = -1.0125*G0_0_1 - 1.0125*G0_1_0 - 2.025*G0_1_1; A[95] = -2.025*G0_0_0 - 1.0125*G0_0_1 - 1.0125*G0_1_0; A[96] = 1.01250000000001*G0_0_1 + 1.01250000000001*G0_1_0; A[97] = -1.0125*G0_0_1 - 1.0125*G0_1_0 - 2.025*G0_1_1; A[98] = 1.0125*G0_0_1 + 1.01250000000001*G0_1_0; A[99] = 4.05*G0_0_0 + 2.025*G0_0_1 + 2.025*G0_1_0 + 4.05000000000001*G0_1_1; } }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson2dp3_form_0: public ufc::form { public: /// Constructor poisson2dp3_form_0() : ufc::form() { // Do nothing } /// Destructor virtual ~poisson2dp3_form_0() { // Do nothing } /// Return a string identifying the form virtual const char* signature() const { return "5ad7bfc888357fbbccbf1994738b74b7da2c739654520118ec4379d436d2e4eee4d70635a82080a5ddb386ed2308afd7497905102ca0f207d2f6319916ea642d"; } /// Return the rank of the global tensor (r) virtual std::size_t rank() const { return 2; } /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const { return 0; } /// Return the number of cell domains virtual std::size_t num_cell_domains() const { return 0; } /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const { return 0; } /// Return the number of point domains virtual std::size_t num_point_domains() const { return 0; } /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals virtual bool has_point_integrals() const { return false; } /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson2dp3_finite_element_0(); break; } case 1: { return new poisson2dp3_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson2dp3_dofmap_0(); break; } case 1: { return new poisson2dp3_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const { return new poisson2dp3_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const { return 0; } }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Poisson2DP3 { class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp3_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp3_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp3_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp3_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp3_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp3_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp3_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp3_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp3_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp3_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp3_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp3_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp3_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new poisson2dp3_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new poisson2dp3_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/assembly/cpp/forms/Poisson2DP2.ufl0000644000175000017500000000020512263014601022745 0ustar johannrjohannrelement = FiniteElement("Lagrange", triangle, 2) v = TestFunction(element) u = TrialFunction(element) a = dot(grad(v), grad(u))*dx dolfin-1.3.0/bench/fem/assembly/cpp/forms/Poisson2DP3.ufl0000644000175000017500000000020512263014601022746 0ustar johannrjohannrelement = FiniteElement("Lagrange", triangle, 3) v = TestFunction(element) u = TrialFunction(element) a = dot(grad(v), grad(u))*dx dolfin-1.3.0/bench/fem/assembly/cpp/forms/THStokes2D.h0000644000175000017500000122430412263015064022273 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: False #ifndef __THSTOKES2D_H #define __THSTOKES2D_H #include #include #include #include /// This class defines the interface for a finite element. class thstokes2d_finite_element_0: public ufc::finite_element { public: /// Constructor thstokes2d_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~thstokes2d_finite_element_0() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 2, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 6; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 0; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, -0.173205080756888, -0.1, 0.121716123890037, 0.0942809041582063, 0.0544331053951817}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.173205080756888, -0.1, 0.121716123890037, -0.0942809041582064, 0.0544331053951818}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.0, 0.2, 0.0, 0.0, 0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.23094010767585, 0.133333333333333, 0.0, 0.188561808316413, -0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, -0.23094010767585, 0.133333333333333, 0.0, -0.188561808316413, -0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.0, -0.266666666666667, -0.243432247780074, 0.0, 0.0544331053951817}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 6; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 2) { return ; } // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[4][2]; for (unsigned int row = 0; row < 4; row++) { for (unsigned int col = 0; col < 2; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 1) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[2][2] = {{K[0], K[1]}, {K[2], K[3]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[4][4]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, -0.173205080756888, -0.1, 0.121716123890037, 0.0942809041582063, 0.0544331053951817}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.173205080756888, -0.1, 0.121716123890037, -0.0942809041582064, 0.0544331053951818}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.0, 0.2, 0.0, 0.0, 0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.23094010767585, 0.133333333333333, 0.0, 0.188561808316413, -0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, -0.23094010767585, 0.133333333333333, 0.0, -0.188561808316413, -0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.0, -0.266666666666667, -0.243432247780074, 0.0, 0.0544331053951817}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 6; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 2) { return ; } // Helper variable to hold values of a single dof. double dof_values[4]; for (unsigned int r = 0; r < 4; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 6; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 5: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[4] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); values[5] = vals[0]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new thstokes2d_finite_element_0(); } }; /// This class defines the interface for a finite element. class thstokes2d_finite_element_1: public ufc::finite_element { public: /// Constructor thstokes2d_finite_element_1() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~thstokes2d_finite_element_1() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "VectorElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 2, 2, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 12; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 1; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { switch (i) { case 0: { return 2; break; } } return 0; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Reset values values[0] = 0.0; values[1] = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, -0.173205080756888, -0.1, 0.121716123890037, 0.0942809041582063, 0.0544331053951817}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.173205080756888, -0.1, 0.121716123890037, -0.0942809041582064, 0.0544331053951818}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.0, 0.2, 0.0, 0.0, 0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.23094010767585, 0.133333333333333, 0.0, 0.188561808316413, -0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, -0.23094010767585, 0.133333333333333, 0.0, -0.188561808316413, -0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.0, -0.266666666666667, -0.243432247780074, 0.0, 0.0544331053951817}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, -0.173205080756888, -0.1, 0.121716123890037, 0.0942809041582063, 0.0544331053951817}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.173205080756888, -0.1, 0.121716123890037, -0.0942809041582064, 0.0544331053951818}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.0, 0.2, 0.0, 0.0, 0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.23094010767585, 0.133333333333333, 0.0, 0.188561808316413, -0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, -0.23094010767585, 0.133333333333333, 0.0, -0.188561808316413, -0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.0, -0.266666666666667, -0.243432247780074, 0.0, 0.0544331053951817}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values[2] = {0.0, 0.0}; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 12; r++) { evaluate_basis(r, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 2; s++) { values[r*2 + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < 2*num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 2) { return ; } // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[4][2]; for (unsigned int row = 0; row < 4; row++) { for (unsigned int col = 0; col < 2; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 1) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[2][2] = {{K[0], K[1]}, {K[2], K[3]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[4][4]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, -0.173205080756888, -0.1, 0.121716123890037, 0.0942809041582063, 0.0544331053951817}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.173205080756888, -0.1, 0.121716123890037, -0.0942809041582064, 0.0544331053951818}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.0, 0.2, 0.0, 0.0, 0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.23094010767585, 0.133333333333333, 0.0, 0.188561808316413, -0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, -0.23094010767585, 0.133333333333333, 0.0, -0.188561808316413, -0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.0, -0.266666666666667, -0.243432247780074, 0.0, 0.0544331053951817}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, -0.173205080756888, -0.1, 0.121716123890037, 0.0942809041582063, 0.0544331053951817}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.173205080756888, -0.1, 0.121716123890037, -0.0942809041582064, 0.0544331053951818}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.0, 0.2, 0.0, 0.0, 0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.23094010767585, 0.133333333333333, 0.0, 0.188561808316413, -0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, -0.23094010767585, 0.133333333333333, 0.0, -0.188561808316413, -0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.0, -0.266666666666667, -0.243432247780074, 0.0, 0.0544331053951817}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 12; r++) { for (unsigned int s = 0; s < 2*num_derivatives; s++) { values[r*2*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 2) { return ; } // Helper variable to hold values of a single dof. double dof_values[8]; for (unsigned int r = 0; r < 8; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 12; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 2*num_derivatives; s++) { values[r*2*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[2]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 5: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 6: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[1]; break; } case 7: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[1]; break; } case 8: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[1]; break; } case 9: { y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[1]; break; } case 10: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[1]; break; } case 11: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[1]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[2]; // Declare variable for physical coordinates double y[2]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[4] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); values[5] = vals[0]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[6] = vals[1]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[7] = vals[1]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[8] = vals[1]; y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[9] = vals[1]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[10] = vals[1]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); values[11] = vals[1]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[2] = dof_values[1]; vertex_values[4] = dof_values[2]; // Evaluate function and change variables vertex_values[1] = dof_values[6]; vertex_values[3] = dof_values[7]; vertex_values[5] = dof_values[8]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 2; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { switch (i) { case 0: { return new thstokes2d_finite_element_0(); break; } case 1: { return new thstokes2d_finite_element_0(); break; } } return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new thstokes2d_finite_element_1(); } }; /// This class defines the interface for a finite element. class thstokes2d_finite_element_2: public ufc::finite_element { public: /// Constructor thstokes2d_finite_element_2() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~thstokes2d_finite_element_2() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 3; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 0; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 3; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[2][1]; for (unsigned int row = 0; row < 2; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 1) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[2][2] = {{K[0], K[1]}, {K[2], K[3]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[2][2]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[2]; for (unsigned int r = 0; r < 2; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 3; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[2]; for (unsigned int r = 0; r < 2; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 3; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[2] = vals[0]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new thstokes2d_finite_element_2(); } }; /// This class defines the interface for a finite element. class thstokes2d_finite_element_3: public ufc::finite_element { public: /// Constructor thstokes2d_finite_element_3() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~thstokes2d_finite_element_3() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "MixedElement(*[VectorElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 2, 2, None), FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, None)], **{'value_shape': (3,) })"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 15; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 1; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { switch (i) { case 0: { return 3; break; } } return 0; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Reset values values[0] = 0.0; values[1] = 0.0; values[2] = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, -0.173205080756888, -0.1, 0.121716123890037, 0.0942809041582063, 0.0544331053951817}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.173205080756888, -0.1, 0.121716123890037, -0.0942809041582064, 0.0544331053951818}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.0, 0.2, 0.0, 0.0, 0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.23094010767585, 0.133333333333333, 0.0, 0.188561808316413, -0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, -0.23094010767585, 0.133333333333333, 0.0, -0.188561808316413, -0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.0, -0.266666666666667, -0.243432247780074, 0.0, 0.0544331053951817}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, -0.173205080756888, -0.1, 0.121716123890037, 0.0942809041582063, 0.0544331053951817}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.173205080756888, -0.1, 0.121716123890037, -0.0942809041582064, 0.0544331053951818}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.0, 0.2, 0.0, 0.0, 0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.23094010767585, 0.133333333333333, 0.0, 0.188561808316413, -0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, -0.23094010767585, 0.133333333333333, 0.0, -0.188561808316413, -0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.0, -0.266666666666667, -0.243432247780074, 0.0, 0.0544331053951817}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 12: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 13: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 14: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Compute value(s) for (unsigned int r = 0; r < 3; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values[3] = {0.0, 0.0, 0.0}; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 15; r++) { evaluate_basis(r, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 3; s++) { values[r*3 + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < 3*num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 2) { return ; } // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[4][2]; for (unsigned int row = 0; row < 4; row++) { for (unsigned int col = 0; col < 2; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 1) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[2][2] = {{K[0], K[1]}, {K[2], K[3]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[4][4]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, -0.173205080756888, -0.1, 0.121716123890037, 0.0942809041582063, 0.0544331053951817}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.173205080756888, -0.1, 0.121716123890037, -0.0942809041582064, 0.0544331053951818}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.0, 0.2, 0.0, 0.0, 0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.23094010767585, 0.133333333333333, 0.0, 0.188561808316413, -0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, -0.23094010767585, 0.133333333333333, 0.0, -0.188561808316413, -0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.0, -0.266666666666667, -0.243432247780074, 0.0, 0.0544331053951817}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, -0.173205080756888, -0.1, 0.121716123890037, 0.0942809041582063, 0.0544331053951817}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.173205080756888, -0.1, 0.121716123890037, -0.0942809041582064, 0.0544331053951818}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.0, 0.2, 0.0, 0.0, 0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.23094010767585, 0.133333333333333, 0.0, 0.188561808316413, -0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, -0.23094010767585, 0.133333333333333, 0.0, -0.188561808316413, -0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.0, -0.266666666666667, -0.243432247780074, 0.0, 0.0544331053951817}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 12: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, -0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 13: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.288675134594813, -0.166666666666667}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 14: { // Array of basisvalues double basisvalues[3] = {0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[1] *= std::sqrt(3.0); // Table(s) of coefficients static const double coefficients0[3] = \ {0.471404520791032, 0.0, 0.333333333333333}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[3][3] = \ {{0.0, 0.0, 0.0}, {4.89897948556636, 0.0, 0.0}, {0.0, 0.0, 0.0}}; static const double dmats1[3][3] = \ {{0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[3][3] = \ {{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 3; t++) { for (unsigned int u = 0; u < 3; u++) { for (unsigned int tu = 0; tu < 3; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 3; s++) { for (unsigned int t = 0; t < 3; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 15; r++) { for (unsigned int s = 0; s < 3*num_derivatives; s++) { values[r*3*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 2) { return ; } // Helper variable to hold values of a single dof. double dof_values[12]; for (unsigned int r = 0; r < 12; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 15; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 3*num_derivatives; s++) { values[r*3*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[3]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 5: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 6: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[1]; break; } case 7: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[1]; break; } case 8: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[1]; break; } case 9: { y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[1]; break; } case 10: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[1]; break; } case 11: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[1]; break; } case 12: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[2]; break; } case 13: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[2]; break; } case 14: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[2]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[3]; // Declare variable for physical coordinates double y[2]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[4] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); values[5] = vals[0]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[6] = vals[1]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[7] = vals[1]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[8] = vals[1]; y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[9] = vals[1]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[10] = vals[1]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); values[11] = vals[1]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[12] = vals[2]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[13] = vals[2]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[14] = vals[2]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[3] = dof_values[1]; vertex_values[6] = dof_values[2]; // Evaluate function and change variables vertex_values[1] = dof_values[6]; vertex_values[4] = dof_values[7]; vertex_values[7] = dof_values[8]; // Evaluate function and change variables vertex_values[2] = dof_values[12]; vertex_values[5] = dof_values[13]; vertex_values[8] = dof_values[14]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 2; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { switch (i) { case 0: { return new thstokes2d_finite_element_1(); break; } case 1: { return new thstokes2d_finite_element_2(); break; } } return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new thstokes2d_finite_element_3(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class thstokes2d_dofmap_0: public ufc::dofmap { public: /// Constructor thstokes2d_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~thstokes2d_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 2, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return true; break; } case 2: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0] + num_global_entities[1]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 6; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 3; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 1; break; } case 2: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; dofs[3] = offset + c.entity_indices[1][0]; dofs[4] = offset + c.entity_indices[1][1]; dofs[5] = offset + c.entity_indices[1][2]; offset += num_global_entities[1]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 4; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 5; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } } break; } case 1: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 3; break; } case 1: { dofs[0] = 4; break; } case 2: { dofs[0] = 5; break; } } break; } case 2: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[1][0] = vertex_coordinates[2]; dof_coordinates[1][1] = vertex_coordinates[3]; dof_coordinates[2][0] = vertex_coordinates[4]; dof_coordinates[2][1] = vertex_coordinates[5]; dof_coordinates[3][0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; dof_coordinates[3][1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; dof_coordinates[4][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; dof_coordinates[4][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; dof_coordinates[5][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; dof_coordinates[5][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new thstokes2d_dofmap_0(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class thstokes2d_dofmap_1: public ufc::dofmap { public: /// Constructor thstokes2d_dofmap_1() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~thstokes2d_dofmap_1() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for VectorElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 2, 2, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return true; break; } case 2: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return 2*num_global_entities[0] + 2*num_global_entities[1]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 12; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 6; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 2; break; } case 1: { return 2; break; } case 2: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; dofs[3] = offset + c.entity_indices[1][0]; dofs[4] = offset + c.entity_indices[1][1]; dofs[5] = offset + c.entity_indices[1][2]; offset += num_global_entities[1]; dofs[6] = offset + c.entity_indices[0][0]; dofs[7] = offset + c.entity_indices[0][1]; dofs[8] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; dofs[9] = offset + c.entity_indices[1][0]; dofs[10] = offset + c.entity_indices[1][1]; dofs[11] = offset + c.entity_indices[1][2]; offset += num_global_entities[1]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; dofs[3] = 7; dofs[4] = 8; dofs[5] = 9; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 4; dofs[3] = 6; dofs[4] = 8; dofs[5] = 10; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 5; dofs[3] = 6; dofs[4] = 7; dofs[5] = 11; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 0; dofs[1] = 6; break; } case 1: { dofs[0] = 1; dofs[1] = 7; break; } case 2: { dofs[0] = 2; dofs[1] = 8; break; } } break; } case 1: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 3; dofs[1] = 9; break; } case 1: { dofs[0] = 4; dofs[1] = 10; break; } case 2: { dofs[0] = 5; dofs[1] = 11; break; } } break; } case 2: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[1][0] = vertex_coordinates[2]; dof_coordinates[1][1] = vertex_coordinates[3]; dof_coordinates[2][0] = vertex_coordinates[4]; dof_coordinates[2][1] = vertex_coordinates[5]; dof_coordinates[3][0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; dof_coordinates[3][1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; dof_coordinates[4][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; dof_coordinates[4][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; dof_coordinates[5][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; dof_coordinates[5][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; dof_coordinates[6][0] = vertex_coordinates[0]; dof_coordinates[6][1] = vertex_coordinates[1]; dof_coordinates[7][0] = vertex_coordinates[2]; dof_coordinates[7][1] = vertex_coordinates[3]; dof_coordinates[8][0] = vertex_coordinates[4]; dof_coordinates[8][1] = vertex_coordinates[5]; dof_coordinates[9][0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; dof_coordinates[9][1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; dof_coordinates[10][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; dof_coordinates[10][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; dof_coordinates[11][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; dof_coordinates[11][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 2; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { switch (i) { case 0: { return new thstokes2d_dofmap_0(); break; } case 1: { return new thstokes2d_dofmap_0(); break; } } return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new thstokes2d_dofmap_1(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class thstokes2d_dofmap_2: public ufc::dofmap { public: /// Constructor thstokes2d_dofmap_2() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~thstokes2d_dofmap_2() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 3; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 2; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 0; break; } case 2: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { dofs[0] = c.entity_indices[0][0]; dofs[1] = c.entity_indices[0][1]; dofs[2] = c.entity_indices[0][2]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; break; } case 1: { dofs[0] = 0; dofs[1] = 2; break; } case 2: { dofs[0] = 0; dofs[1] = 1; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } } break; } case 1: { break; } case 2: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[1][0] = vertex_coordinates[2]; dof_coordinates[1][1] = vertex_coordinates[3]; dof_coordinates[2][0] = vertex_coordinates[4]; dof_coordinates[2][1] = vertex_coordinates[5]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new thstokes2d_dofmap_2(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class thstokes2d_dofmap_3: public ufc::dofmap { public: /// Constructor thstokes2d_dofmap_3() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~thstokes2d_dofmap_3() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for MixedElement(*[VectorElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 2, 2, None), FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, None)], **{'value_shape': (3,) })"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return true; break; } case 2: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return 3*num_global_entities[0] + 2*num_global_entities[1]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 15; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 8; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 3; break; } case 1: { return 2; break; } case 2: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; dofs[3] = offset + c.entity_indices[1][0]; dofs[4] = offset + c.entity_indices[1][1]; dofs[5] = offset + c.entity_indices[1][2]; offset += num_global_entities[1]; dofs[6] = offset + c.entity_indices[0][0]; dofs[7] = offset + c.entity_indices[0][1]; dofs[8] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; dofs[9] = offset + c.entity_indices[1][0]; dofs[10] = offset + c.entity_indices[1][1]; dofs[11] = offset + c.entity_indices[1][2]; offset += num_global_entities[1]; dofs[12] = offset + c.entity_indices[0][0]; dofs[13] = offset + c.entity_indices[0][1]; dofs[14] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; dofs[3] = 7; dofs[4] = 8; dofs[5] = 9; dofs[6] = 13; dofs[7] = 14; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 4; dofs[3] = 6; dofs[4] = 8; dofs[5] = 10; dofs[6] = 12; dofs[7] = 14; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 5; dofs[3] = 6; dofs[4] = 7; dofs[5] = 11; dofs[6] = 12; dofs[7] = 13; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 0; dofs[1] = 6; dofs[2] = 12; break; } case 1: { dofs[0] = 1; dofs[1] = 7; dofs[2] = 13; break; } case 2: { dofs[0] = 2; dofs[1] = 8; dofs[2] = 14; break; } } break; } case 1: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 3; dofs[1] = 9; break; } case 1: { dofs[0] = 4; dofs[1] = 10; break; } case 2: { dofs[0] = 5; dofs[1] = 11; break; } } break; } case 2: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[1][0] = vertex_coordinates[2]; dof_coordinates[1][1] = vertex_coordinates[3]; dof_coordinates[2][0] = vertex_coordinates[4]; dof_coordinates[2][1] = vertex_coordinates[5]; dof_coordinates[3][0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; dof_coordinates[3][1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; dof_coordinates[4][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; dof_coordinates[4][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; dof_coordinates[5][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; dof_coordinates[5][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; dof_coordinates[6][0] = vertex_coordinates[0]; dof_coordinates[6][1] = vertex_coordinates[1]; dof_coordinates[7][0] = vertex_coordinates[2]; dof_coordinates[7][1] = vertex_coordinates[3]; dof_coordinates[8][0] = vertex_coordinates[4]; dof_coordinates[8][1] = vertex_coordinates[5]; dof_coordinates[9][0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; dof_coordinates[9][1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; dof_coordinates[10][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; dof_coordinates[10][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; dof_coordinates[11][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; dof_coordinates[11][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; dof_coordinates[12][0] = vertex_coordinates[0]; dof_coordinates[12][1] = vertex_coordinates[1]; dof_coordinates[13][0] = vertex_coordinates[2]; dof_coordinates[13][1] = vertex_coordinates[3]; dof_coordinates[14][0] = vertex_coordinates[4]; dof_coordinates[14][1] = vertex_coordinates[5]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 2; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { switch (i) { case 0: { return new thstokes2d_dofmap_1(); break; } case 1: { return new thstokes2d_dofmap_2(); break; } } return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new thstokes2d_dofmap_3(); } }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class thstokes2d_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor thstokes2d_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor virtual ~thstokes2d_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 32 // Number of operations (multiply-add pairs) for tensor contraction: 282 // Total number of operations (multiply-add pairs): 317 // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0 = det*K[0]*(1.0); const double G0_1 = det*K[2]*(1.0); const double G1_0 = det*K[1]*(1.0); const double G1_1 = det*K[3]*(1.0); const double G2_0 = det*K[0]*(1.0); const double G2_1 = det*K[2]*(1.0); const double G3_0 = det*K[1]*(1.0); const double G3_1 = det*K[3]*(1.0); const double G4_0_0 = det*K[0]*K[0]*(1.0); const double G4_0_1 = det*K[0]*K[2]*(1.0); const double G4_1_0 = det*K[2]*K[0]*(1.0); const double G4_1_1 = det*K[2]*K[2]*(1.0); const double G5_0_0 = det*K[0]*K[0]*(1.0); const double G5_0_1 = det*K[0]*K[2]*(1.0); const double G5_1_0 = det*K[2]*K[0]*(1.0); const double G5_1_1 = det*K[2]*K[2]*(1.0); const double G6_0_0 = det*K[1]*K[1]*(1.0); const double G6_0_1 = det*K[1]*K[3]*(1.0); const double G6_1_0 = det*K[3]*K[1]*(1.0); const double G6_1_1 = det*K[3]*K[3]*(1.0); const double G7_0_0 = det*K[1]*K[1]*(1.0); const double G7_0_1 = det*K[1]*K[3]*(1.0); const double G7_1_0 = det*K[3]*K[1]*(1.0); const double G7_1_1 = det*K[3]*K[3]*(1.0); // Compute element tensor A[0] = 0.5*G4_0_0 + 0.5*G4_0_1 + 0.5*G4_1_0 + 0.5*G4_1_1 + 0.5*G6_0_0 + 0.5*G6_0_1 + 0.5*G6_1_0 + 0.5*G6_1_1; A[1] = 0.166666666666667*G4_0_0 + 0.166666666666667*G4_1_0 + 0.166666666666667*G6_0_0 + 0.166666666666667*G6_1_0; A[2] = 0.166666666666666*G4_0_1 + 0.166666666666666*G4_1_1 + 0.166666666666666*G6_0_1 + 0.166666666666666*G6_1_1; A[3] = 0.0; A[4] = -0.666666666666666*G4_0_1 - 0.666666666666666*G4_1_1 - 0.666666666666666*G6_0_1 - 0.666666666666666*G6_1_1; A[5] = -0.666666666666666*G4_0_0 - 0.666666666666666*G4_1_0 - 0.666666666666666*G6_0_0 - 0.666666666666666*G6_1_0; A[6] = 0.0; A[7] = 0.0; A[8] = 0.0; A[9] = 0.0; A[10] = 0.0; A[11] = 0.0; A[12] = 0.166666666666666*G2_0 + 0.166666666666666*G2_1; A[13] = 0.0; A[14] = 0.0; A[15] = 0.166666666666667*G4_0_0 + 0.166666666666667*G4_0_1 + 0.166666666666667*G6_0_0 + 0.166666666666667*G6_0_1; A[16] = 0.5*G4_0_0 + 0.5*G6_0_0; A[17] = -0.166666666666666*G4_0_1 - 0.166666666666666*G6_0_1; A[18] = 0.666666666666666*G4_0_1 + 0.666666666666666*G6_0_1; A[19] = 0.0; A[20] = -0.666666666666666*G4_0_0 - 0.666666666666666*G4_0_1 - 0.666666666666666*G6_0_0 - 0.666666666666666*G6_0_1; A[21] = 0.0; A[22] = 0.0; A[23] = 0.0; A[24] = 0.0; A[25] = 0.0; A[26] = 0.0; A[27] = 0.0; A[28] = -0.166666666666667*G2_0; A[29] = 0.0; A[30] = 0.166666666666666*G4_1_0 + 0.166666666666666*G4_1_1 + 0.166666666666666*G6_1_0 + 0.166666666666666*G6_1_1; A[31] = -0.166666666666666*G4_1_0 - 0.166666666666666*G6_1_0; A[32] = 0.5*G4_1_1 + 0.5*G6_1_1; A[33] = 0.666666666666666*G4_1_0 + 0.666666666666666*G6_1_0; A[34] = -0.666666666666666*G4_1_0 - 0.666666666666666*G4_1_1 - 0.666666666666666*G6_1_0 - 0.666666666666666*G6_1_1; A[35] = 0.0; A[36] = 0.0; A[37] = 0.0; A[38] = 0.0; A[39] = 0.0; A[40] = 0.0; A[41] = 0.0; A[42] = 0.0; A[43] = 0.0; A[44] = -0.166666666666666*G2_1; A[45] = 0.0; A[46] = 0.666666666666666*G4_1_0 + 0.666666666666666*G6_1_0; A[47] = 0.666666666666666*G4_0_1 + 0.666666666666666*G6_0_1; A[48] = 1.33333333333333*G4_0_0 + 0.666666666666665*G4_0_1 + 0.666666666666665*G4_1_0 + 1.33333333333333*G4_1_1 + 1.33333333333333*G6_0_0 + 0.666666666666665*G6_0_1 + 0.666666666666665*G6_1_0 + 1.33333333333333*G6_1_1; A[49] = -1.33333333333333*G4_0_0 - 0.666666666666666*G4_0_1 - 0.666666666666665*G4_1_0 - 1.33333333333333*G6_0_0 - 0.666666666666666*G6_0_1 - 0.666666666666665*G6_1_0; A[50] = -0.666666666666666*G4_0_1 - 0.666666666666666*G4_1_0 - 1.33333333333333*G4_1_1 - 0.666666666666666*G6_0_1 - 0.666666666666666*G6_1_0 - 1.33333333333333*G6_1_1; A[51] = 0.0; A[52] = 0.0; A[53] = 0.0; A[54] = 0.0; A[55] = 0.0; A[56] = 0.0; A[57] = -0.166666666666667*G2_0 - 0.166666666666667*G2_1; A[58] = -0.166666666666667*G2_0 - 0.333333333333333*G2_1; A[59] = -0.333333333333333*G2_0 - 0.166666666666667*G2_1; A[60] = -0.666666666666666*G4_1_0 - 0.666666666666666*G4_1_1 - 0.666666666666666*G6_1_0 - 0.666666666666666*G6_1_1; A[61] = 0.0; A[62] = -0.666666666666666*G4_0_1 - 0.666666666666666*G4_1_1 - 0.666666666666666*G6_0_1 - 0.666666666666666*G6_1_1; A[63] = -1.33333333333333*G4_0_0 - 0.666666666666665*G4_0_1 - 0.666666666666666*G4_1_0 - 1.33333333333333*G6_0_0 - 0.666666666666665*G6_0_1 - 0.666666666666666*G6_1_0; A[64] = 1.33333333333333*G4_0_0 + 0.666666666666666*G4_0_1 + 0.666666666666666*G4_1_0 + 1.33333333333333*G4_1_1 + 1.33333333333333*G6_0_0 + 0.666666666666666*G6_0_1 + 0.666666666666666*G6_1_0 + 1.33333333333333*G6_1_1; A[65] = 0.666666666666666*G4_0_1 + 0.666666666666666*G4_1_0 + 0.666666666666666*G6_0_1 + 0.666666666666666*G6_1_0; A[66] = 0.0; A[67] = 0.0; A[68] = 0.0; A[69] = 0.0; A[70] = 0.0; A[71] = 0.0; A[72] = 0.166666666666667*G2_0 - 0.166666666666666*G2_1; A[73] = 0.166666666666667*G2_0; A[74] = 0.333333333333333*G2_0 + 0.166666666666666*G2_1; A[75] = -0.666666666666666*G4_0_0 - 0.666666666666666*G4_0_1 - 0.666666666666666*G6_0_0 - 0.666666666666666*G6_0_1; A[76] = -0.666666666666666*G4_0_0 - 0.666666666666666*G4_1_0 - 0.666666666666666*G6_0_0 - 0.666666666666666*G6_1_0; A[77] = 0.0; A[78] = -0.666666666666666*G4_0_1 - 0.666666666666666*G4_1_0 - 1.33333333333333*G4_1_1 - 0.666666666666666*G6_0_1 - 0.666666666666666*G6_1_0 - 1.33333333333333*G6_1_1; A[79] = 0.666666666666666*G4_0_1 + 0.666666666666666*G4_1_0 + 0.666666666666666*G6_0_1 + 0.666666666666666*G6_1_0; A[80] = 1.33333333333333*G4_0_0 + 0.666666666666667*G4_0_1 + 0.666666666666667*G4_1_0 + 1.33333333333333*G4_1_1 + 1.33333333333333*G6_0_0 + 0.666666666666667*G6_0_1 + 0.666666666666667*G6_1_0 + 1.33333333333333*G6_1_1; A[81] = 0.0; A[82] = 0.0; A[83] = 0.0; A[84] = 0.0; A[85] = 0.0; A[86] = 0.0; A[87] = -0.166666666666666*G2_0 + 0.166666666666667*G2_1; A[88] = 0.166666666666667*G2_0 + 0.333333333333333*G2_1; A[89] = 0.166666666666667*G2_1; A[90] = 0.0; A[91] = 0.0; A[92] = 0.0; A[93] = 0.0; A[94] = 0.0; A[95] = 0.0; A[96] = 0.5*G5_0_0 + 0.5*G5_0_1 + 0.5*G5_1_0 + 0.5*G5_1_1 + 0.5*G7_0_0 + 0.5*G7_0_1 + 0.5*G7_1_0 + 0.5*G7_1_1; A[97] = 0.166666666666667*G5_0_0 + 0.166666666666667*G5_1_0 + 0.166666666666667*G7_0_0 + 0.166666666666667*G7_1_0; A[98] = 0.166666666666666*G5_0_1 + 0.166666666666666*G5_1_1 + 0.166666666666666*G7_0_1 + 0.166666666666666*G7_1_1; A[99] = 0.0; A[100] = -0.666666666666666*G5_0_1 - 0.666666666666666*G5_1_1 - 0.666666666666666*G7_0_1 - 0.666666666666666*G7_1_1; A[101] = -0.666666666666666*G5_0_0 - 0.666666666666666*G5_1_0 - 0.666666666666666*G7_0_0 - 0.666666666666666*G7_1_0; A[102] = 0.166666666666666*G3_0 + 0.166666666666666*G3_1; A[103] = 0.0; A[104] = 0.0; A[105] = 0.0; A[106] = 0.0; A[107] = 0.0; A[108] = 0.0; A[109] = 0.0; A[110] = 0.0; A[111] = 0.166666666666667*G5_0_0 + 0.166666666666667*G5_0_1 + 0.166666666666667*G7_0_0 + 0.166666666666667*G7_0_1; A[112] = 0.5*G5_0_0 + 0.5*G7_0_0; A[113] = -0.166666666666666*G5_0_1 - 0.166666666666666*G7_0_1; A[114] = 0.666666666666666*G5_0_1 + 0.666666666666666*G7_0_1; A[115] = 0.0; A[116] = -0.666666666666666*G5_0_0 - 0.666666666666666*G5_0_1 - 0.666666666666666*G7_0_0 - 0.666666666666666*G7_0_1; A[117] = 0.0; A[118] = -0.166666666666667*G3_0; A[119] = 0.0; A[120] = 0.0; A[121] = 0.0; A[122] = 0.0; A[123] = 0.0; A[124] = 0.0; A[125] = 0.0; A[126] = 0.166666666666666*G5_1_0 + 0.166666666666666*G5_1_1 + 0.166666666666666*G7_1_0 + 0.166666666666666*G7_1_1; A[127] = -0.166666666666666*G5_1_0 - 0.166666666666666*G7_1_0; A[128] = 0.5*G5_1_1 + 0.5*G7_1_1; A[129] = 0.666666666666666*G5_1_0 + 0.666666666666666*G7_1_0; A[130] = -0.666666666666666*G5_1_0 - 0.666666666666666*G5_1_1 - 0.666666666666666*G7_1_0 - 0.666666666666666*G7_1_1; A[131] = 0.0; A[132] = 0.0; A[133] = 0.0; A[134] = -0.166666666666666*G3_1; A[135] = 0.0; A[136] = 0.0; A[137] = 0.0; A[138] = 0.0; A[139] = 0.0; A[140] = 0.0; A[141] = 0.0; A[142] = 0.666666666666666*G5_1_0 + 0.666666666666666*G7_1_0; A[143] = 0.666666666666666*G5_0_1 + 0.666666666666666*G7_0_1; A[144] = 1.33333333333333*G5_0_0 + 0.666666666666665*G5_0_1 + 0.666666666666665*G5_1_0 + 1.33333333333333*G5_1_1 + 1.33333333333333*G7_0_0 + 0.666666666666665*G7_0_1 + 0.666666666666665*G7_1_0 + 1.33333333333333*G7_1_1; A[145] = -1.33333333333333*G5_0_0 - 0.666666666666666*G5_0_1 - 0.666666666666665*G5_1_0 - 1.33333333333333*G7_0_0 - 0.666666666666666*G7_0_1 - 0.666666666666665*G7_1_0; A[146] = -0.666666666666666*G5_0_1 - 0.666666666666666*G5_1_0 - 1.33333333333333*G5_1_1 - 0.666666666666666*G7_0_1 - 0.666666666666666*G7_1_0 - 1.33333333333333*G7_1_1; A[147] = -0.166666666666667*G3_0 - 0.166666666666667*G3_1; A[148] = -0.166666666666667*G3_0 - 0.333333333333333*G3_1; A[149] = -0.333333333333333*G3_0 - 0.166666666666667*G3_1; A[150] = 0.0; A[151] = 0.0; A[152] = 0.0; A[153] = 0.0; A[154] = 0.0; A[155] = 0.0; A[156] = -0.666666666666666*G5_1_0 - 0.666666666666666*G5_1_1 - 0.666666666666666*G7_1_0 - 0.666666666666666*G7_1_1; A[157] = 0.0; A[158] = -0.666666666666666*G5_0_1 - 0.666666666666666*G5_1_1 - 0.666666666666666*G7_0_1 - 0.666666666666666*G7_1_1; A[159] = -1.33333333333333*G5_0_0 - 0.666666666666665*G5_0_1 - 0.666666666666666*G5_1_0 - 1.33333333333333*G7_0_0 - 0.666666666666665*G7_0_1 - 0.666666666666666*G7_1_0; A[160] = 1.33333333333333*G5_0_0 + 0.666666666666666*G5_0_1 + 0.666666666666666*G5_1_0 + 1.33333333333333*G5_1_1 + 1.33333333333333*G7_0_0 + 0.666666666666666*G7_0_1 + 0.666666666666666*G7_1_0 + 1.33333333333333*G7_1_1; A[161] = 0.666666666666666*G5_0_1 + 0.666666666666666*G5_1_0 + 0.666666666666666*G7_0_1 + 0.666666666666666*G7_1_0; A[162] = 0.166666666666667*G3_0 - 0.166666666666666*G3_1; A[163] = 0.166666666666667*G3_0; A[164] = 0.333333333333333*G3_0 + 0.166666666666666*G3_1; A[165] = 0.0; A[166] = 0.0; A[167] = 0.0; A[168] = 0.0; A[169] = 0.0; A[170] = 0.0; A[171] = -0.666666666666666*G5_0_0 - 0.666666666666666*G5_0_1 - 0.666666666666666*G7_0_0 - 0.666666666666666*G7_0_1; A[172] = -0.666666666666666*G5_0_0 - 0.666666666666666*G5_1_0 - 0.666666666666666*G7_0_0 - 0.666666666666666*G7_1_0; A[173] = 0.0; A[174] = -0.666666666666666*G5_0_1 - 0.666666666666666*G5_1_0 - 1.33333333333333*G5_1_1 - 0.666666666666666*G7_0_1 - 0.666666666666666*G7_1_0 - 1.33333333333333*G7_1_1; A[175] = 0.666666666666666*G5_0_1 + 0.666666666666666*G5_1_0 + 0.666666666666666*G7_0_1 + 0.666666666666666*G7_1_0; A[176] = 1.33333333333333*G5_0_0 + 0.666666666666667*G5_0_1 + 0.666666666666667*G5_1_0 + 1.33333333333333*G5_1_1 + 1.33333333333333*G7_0_0 + 0.666666666666667*G7_0_1 + 0.666666666666667*G7_1_0 + 1.33333333333333*G7_1_1; A[177] = -0.166666666666666*G3_0 + 0.166666666666667*G3_1; A[178] = 0.166666666666667*G3_0 + 0.333333333333333*G3_1; A[179] = 0.166666666666667*G3_1; A[180] = -0.166666666666666*G0_0 - 0.166666666666666*G0_1; A[181] = 0.0; A[182] = 0.0; A[183] = 0.166666666666667*G0_0 + 0.166666666666667*G0_1; A[184] = -0.166666666666667*G0_0 + 0.166666666666666*G0_1; A[185] = 0.166666666666666*G0_0 - 0.166666666666667*G0_1; A[186] = -0.166666666666666*G1_0 - 0.166666666666666*G1_1; A[187] = 0.0; A[188] = 0.0; A[189] = 0.166666666666667*G1_0 + 0.166666666666667*G1_1; A[190] = -0.166666666666667*G1_0 + 0.166666666666666*G1_1; A[191] = 0.166666666666666*G1_0 - 0.166666666666667*G1_1; A[192] = 0.0; A[193] = 0.0; A[194] = 0.0; A[195] = 0.0; A[196] = 0.166666666666667*G0_0; A[197] = 0.0; A[198] = 0.166666666666667*G0_0 + 0.333333333333333*G0_1; A[199] = -0.166666666666667*G0_0; A[200] = -0.166666666666667*G0_0 - 0.333333333333333*G0_1; A[201] = 0.0; A[202] = 0.166666666666667*G1_0; A[203] = 0.0; A[204] = 0.166666666666667*G1_0 + 0.333333333333333*G1_1; A[205] = -0.166666666666667*G1_0; A[206] = -0.166666666666667*G1_0 - 0.333333333333333*G1_1; A[207] = 0.0; A[208] = 0.0; A[209] = 0.0; A[210] = 0.0; A[211] = 0.0; A[212] = 0.166666666666666*G0_1; A[213] = 0.333333333333333*G0_0 + 0.166666666666667*G0_1; A[214] = -0.333333333333333*G0_0 - 0.166666666666666*G0_1; A[215] = -0.166666666666667*G0_1; A[216] = 0.0; A[217] = 0.0; A[218] = 0.166666666666666*G1_1; A[219] = 0.333333333333333*G1_0 + 0.166666666666667*G1_1; A[220] = -0.333333333333333*G1_0 - 0.166666666666666*G1_1; A[221] = -0.166666666666667*G1_1; A[222] = 0.0; A[223] = 0.0; A[224] = 0.0; } }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class thstokes2d_form_0: public ufc::form { public: /// Constructor thstokes2d_form_0() : ufc::form() { // Do nothing } /// Destructor virtual ~thstokes2d_form_0() { // Do nothing } /// Return a string identifying the form virtual const char* signature() const { return "6805f96321c32af0d26b4a8da27c4997a99275496416f0c5a4bc4b8c0fdda5290a36e29d25b765590a42ab14a8d48072f5c30ede6de761e9292bdf37ffb0f17e"; } /// Return the rank of the global tensor (r) virtual std::size_t rank() const { return 2; } /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const { return 0; } /// Return the number of cell domains virtual std::size_t num_cell_domains() const { return 0; } /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const { return 0; } /// Return the number of point domains virtual std::size_t num_point_domains() const { return 0; } /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals virtual bool has_point_integrals() const { return false; } /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const { switch (i) { case 0: { return new thstokes2d_finite_element_3(); break; } case 1: { return new thstokes2d_finite_element_3(); break; } } return 0; } /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const { switch (i) { case 0: { return new thstokes2d_dofmap_3(); break; } case 1: { return new thstokes2d_dofmap_3(); break; } } return 0; } /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const { return new thstokes2d_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const { return 0; } }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace THStokes2D { class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new thstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new thstokes2d_dofmap_3()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new thstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new thstokes2d_dofmap_3()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new thstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new thstokes2d_dofmap_3()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new thstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new thstokes2d_dofmap_3()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new thstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new thstokes2d_dofmap_3()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new thstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new thstokes2d_dofmap_3()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new thstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new thstokes2d_dofmap_3()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new thstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new thstokes2d_dofmap_3()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new thstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new thstokes2d_dofmap_3()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new thstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new thstokes2d_dofmap_3()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new thstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new thstokes2d_dofmap_3()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new thstokes2d_finite_element_3()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new thstokes2d_dofmap_3()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new thstokes2d_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new thstokes2d_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/assembly/cpp/forms/Elasticity3D.h0000644000175000017500000052025712263015062022705 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: False #ifndef __ELASTICITY3D_H #define __ELASTICITY3D_H #include #include #include #include /// This class defines the interface for a finite element. class elasticity3d_finite_element_0: public ufc::finite_element { public: /// Constructor elasticity3d_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~elasticity3d_finite_element_0() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 4; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 0; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 4; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[3][1]; for (unsigned int row = 0; row < 3; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 2) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[3][3] = {{K[0], K[1], K[2]}, {K[3], K[4], K[5]}, {K[6], K[7], K[8]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[3][3]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 4; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[3]; for (unsigned int r = 0; r < 3; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 4; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[3]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[3] = vals[0]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; vertex_values[3] = dof_values[3]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new elasticity3d_finite_element_0(); } }; /// This class defines the interface for a finite element. class elasticity3d_finite_element_1: public ufc::finite_element { public: /// Constructor elasticity3d_finite_element_1() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~elasticity3d_finite_element_1() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "VectorElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, 3, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::tetrahedron; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 12; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 1; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { switch (i) { case 0: { return 3; break; } } return 0; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Reset values values[0] = 0.0; values[1] = 0.0; values[2] = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[0] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[1] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Compute value(s) for (unsigned int r = 0; r < 4; r++) { values[2] += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values[3] = {0.0, 0.0, 0.0}; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 12; r++) { evaluate_basis(r, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 3; s++) { values[r*3 + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < 3*num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[9] + vertex_coordinates[6] + vertex_coordinates[3] - vertex_coordinates[0]; const double C1 = vertex_coordinates[10] + vertex_coordinates[7] + vertex_coordinates[4] - vertex_coordinates[1]; const double C2 = vertex_coordinates[11] + vertex_coordinates[8] + vertex_coordinates[5] - vertex_coordinates[2]; // Compute subdeterminants const double d_00 = J[4]*J[8] - J[5]*J[7]; const double d_01 = J[5]*J[6] - J[3]*J[8]; const double d_02 = J[3]*J[7] - J[4]*J[6]; const double d_10 = J[2]*J[7] - J[1]*J[8]; const double d_11 = J[0]*J[8] - J[2]*J[6]; const double d_12 = J[1]*J[6] - J[0]*J[7]; const double d_20 = J[1]*J[5] - J[2]*J[4]; const double d_21 = J[2]*J[3] - J[0]*J[5]; const double d_22 = J[0]*J[4] - J[1]*J[3]; // Get coordinates and map to the reference (FIAT) element double X = (d_00*(2.0*x[0] - C0) + d_10*(2.0*x[1] - C1) + d_20*(2.0*x[2] - C2)) / detJ; double Y = (d_01*(2.0*x[0] - C0) + d_11*(2.0*x[1] - C1) + d_21*(2.0*x[2] - C2)) / detJ; double Z = (d_02*(2.0*x[0] - C0) + d_12*(2.0*x[1] - C1) + d_22*(2.0*x[2] - C2)) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[3][1]; for (unsigned int row = 0; row < 3; row++) { for (unsigned int col = 0; col < 1; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 2) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[3][3] = {{K[0], K[1], K[2]}, {K[3], K[4], K[5]}, {K[6], K[7], K[8]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[3][3]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 6: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 7: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 8: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, -0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 9: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.182574185835055, -0.105409255338946, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 10: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.210818510677892, -0.074535599249993}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 11: { // Array of basisvalues double basisvalues[4] = {0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = 0.5*(2.0 + Y + Z + 2.0*X); // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[2] = 0.5*(2.0 + 3.0*Y + Z)*basisvalues[0]; basisvalues[3] = (2.0*Z + 1.0)*basisvalues[0]; basisvalues[0] *= std::sqrt(0.75); basisvalues[3] *= std::sqrt(1.25); basisvalues[2] *= std::sqrt(2.5); basisvalues[1] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[4] = \ {0.288675134594813, 0.0, 0.0, 0.223606797749979}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {6.32455532033676, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats1[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {5.47722557505166, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}}; static const double dmats2[4][4] = \ {{0.0, 0.0, 0.0, 0.0}, {3.16227766016838, 0.0, 0.0, 0.0}, {1.82574185835055, 0.0, 0.0, 0.0}, {5.16397779494322, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[3]; for (unsigned int r = 0; r < 3; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[4][4] = \ {{1.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 2) { for (unsigned int t = 0; t < 4; t++) { for (unsigned int u = 0; u < 4; u++) { for (unsigned int tu = 0; tu < 4; tu++) { dmats[t][u] += dmats2[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 4; s++) { for (unsigned int t = 0; t < 4; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[2*num_derivatives + r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 3; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 12; r++) { for (unsigned int s = 0; s < 3*num_derivatives; s++) { values[r*3*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 1) { return ; } // Helper variable to hold values of a single dof. double dof_values[9]; for (unsigned int r = 0; r < 9; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 12; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < 3*num_derivatives; s++) { values[r*3*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[3]; // Declare variable for physical coordinates double y[3]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[1]; break; } case 5: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[1]; break; } case 6: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[1]; break; } case 7: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[1]; break; } case 8: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); return vals[2]; break; } case 9: { y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[2]; break; } case 10: { y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); return vals[2]; break; } case 11: { y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); return vals[2]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[3]; // Declare variable for physical coordinates double y[3]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[4] = vals[1]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[5] = vals[1]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[6] = vals[1]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[7] = vals[1]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; y[2] = vertex_coordinates[2]; f.evaluate(vals, y, c); values[8] = vals[2]; y[0] = vertex_coordinates[3]; y[1] = vertex_coordinates[4]; y[2] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[9] = vals[2]; y[0] = vertex_coordinates[6]; y[1] = vertex_coordinates[7]; y[2] = vertex_coordinates[8]; f.evaluate(vals, y, c); values[10] = vals[2]; y[0] = vertex_coordinates[9]; y[1] = vertex_coordinates[10]; y[2] = vertex_coordinates[11]; f.evaluate(vals, y, c); values[11] = vals[2]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[3] = dof_values[1]; vertex_values[6] = dof_values[2]; vertex_values[9] = dof_values[3]; // Evaluate function and change variables vertex_values[1] = dof_values[4]; vertex_values[4] = dof_values[5]; vertex_values[7] = dof_values[6]; vertex_values[10] = dof_values[7]; // Evaluate function and change variables vertex_values[2] = dof_values[8]; vertex_values[5] = dof_values[9]; vertex_values[8] = dof_values[10]; vertex_values[11] = dof_values[11]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 3; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { switch (i) { case 0: { return new elasticity3d_finite_element_0(); break; } case 1: { return new elasticity3d_finite_element_0(); break; } case 2: { return new elasticity3d_finite_element_0(); break; } } return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new elasticity3d_finite_element_1(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class elasticity3d_dofmap_0: public ufc::dofmap { public: /// Constructor elasticity3d_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~elasticity3d_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return false; break; } case 3: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 4; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 3; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 0; break; } case 2: { return 0; break; } case 3: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { dofs[0] = c.entity_indices[0][0]; dofs[1] = c.entity_indices[0][1]; dofs[2] = c.entity_indices[0][2]; dofs[3] = c.entity_indices[0][3]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; break; } case 3: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 2; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } case 3: { dofs[0] = 3; break; } } break; } case 1: { break; } case 2: { break; } case 3: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[0][2] = vertex_coordinates[2]; dof_coordinates[1][0] = vertex_coordinates[3]; dof_coordinates[1][1] = vertex_coordinates[4]; dof_coordinates[1][2] = vertex_coordinates[5]; dof_coordinates[2][0] = vertex_coordinates[6]; dof_coordinates[2][1] = vertex_coordinates[7]; dof_coordinates[2][2] = vertex_coordinates[8]; dof_coordinates[3][0] = vertex_coordinates[9]; dof_coordinates[3][1] = vertex_coordinates[10]; dof_coordinates[3][2] = vertex_coordinates[11]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new elasticity3d_dofmap_0(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class elasticity3d_dofmap_1: public ufc::dofmap { public: /// Constructor elasticity3d_dofmap_1() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~elasticity3d_dofmap_1() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for VectorElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, 3, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return false; break; } case 2: { return false; break; } case 3: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 3; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 3; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return 3*num_global_entities[0]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 12; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 9; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 3; break; } case 1: { return 0; break; } case 2: { return 0; break; } case 3: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; dofs[3] = offset + c.entity_indices[0][3]; offset += num_global_entities[0]; dofs[4] = offset + c.entity_indices[0][0]; dofs[5] = offset + c.entity_indices[0][1]; dofs[6] = offset + c.entity_indices[0][2]; dofs[7] = offset + c.entity_indices[0][3]; offset += num_global_entities[0]; dofs[8] = offset + c.entity_indices[0][0]; dofs[9] = offset + c.entity_indices[0][1]; dofs[10] = offset + c.entity_indices[0][2]; dofs[11] = offset + c.entity_indices[0][3]; offset += num_global_entities[0]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; dofs[3] = 5; dofs[4] = 6; dofs[5] = 7; dofs[6] = 9; dofs[7] = 10; dofs[8] = 11; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 3; dofs[3] = 4; dofs[4] = 6; dofs[5] = 7; dofs[6] = 8; dofs[7] = 10; dofs[8] = 11; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 3; dofs[3] = 4; dofs[4] = 5; dofs[5] = 7; dofs[6] = 8; dofs[7] = 9; dofs[8] = 11; break; } case 3: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 2; dofs[3] = 4; dofs[4] = 5; dofs[5] = 6; dofs[6] = 8; dofs[7] = 9; dofs[8] = 10; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 3) { throw std::runtime_error("d is larger than dimension (3)"); } switch (d) { case 0: { if (i > 3) { throw std::runtime_error("i is larger than number of entities (3)"); } switch (i) { case 0: { dofs[0] = 0; dofs[1] = 4; dofs[2] = 8; break; } case 1: { dofs[0] = 1; dofs[1] = 5; dofs[2] = 9; break; } case 2: { dofs[0] = 2; dofs[1] = 6; dofs[2] = 10; break; } case 3: { dofs[0] = 3; dofs[1] = 7; dofs[2] = 11; break; } } break; } case 1: { break; } case 2: { break; } case 3: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[0][2] = vertex_coordinates[2]; dof_coordinates[1][0] = vertex_coordinates[3]; dof_coordinates[1][1] = vertex_coordinates[4]; dof_coordinates[1][2] = vertex_coordinates[5]; dof_coordinates[2][0] = vertex_coordinates[6]; dof_coordinates[2][1] = vertex_coordinates[7]; dof_coordinates[2][2] = vertex_coordinates[8]; dof_coordinates[3][0] = vertex_coordinates[9]; dof_coordinates[3][1] = vertex_coordinates[10]; dof_coordinates[3][2] = vertex_coordinates[11]; dof_coordinates[4][0] = vertex_coordinates[0]; dof_coordinates[4][1] = vertex_coordinates[1]; dof_coordinates[4][2] = vertex_coordinates[2]; dof_coordinates[5][0] = vertex_coordinates[3]; dof_coordinates[5][1] = vertex_coordinates[4]; dof_coordinates[5][2] = vertex_coordinates[5]; dof_coordinates[6][0] = vertex_coordinates[6]; dof_coordinates[6][1] = vertex_coordinates[7]; dof_coordinates[6][2] = vertex_coordinates[8]; dof_coordinates[7][0] = vertex_coordinates[9]; dof_coordinates[7][1] = vertex_coordinates[10]; dof_coordinates[7][2] = vertex_coordinates[11]; dof_coordinates[8][0] = vertex_coordinates[0]; dof_coordinates[8][1] = vertex_coordinates[1]; dof_coordinates[8][2] = vertex_coordinates[2]; dof_coordinates[9][0] = vertex_coordinates[3]; dof_coordinates[9][1] = vertex_coordinates[4]; dof_coordinates[9][2] = vertex_coordinates[5]; dof_coordinates[10][0] = vertex_coordinates[6]; dof_coordinates[10][1] = vertex_coordinates[7]; dof_coordinates[10][2] = vertex_coordinates[8]; dof_coordinates[11][0] = vertex_coordinates[9]; dof_coordinates[11][1] = vertex_coordinates[10]; dof_coordinates[11][2] = vertex_coordinates[11]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 3; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { switch (i) { case 0: { return new elasticity3d_dofmap_0(); break; } case 1: { return new elasticity3d_dofmap_0(); break; } case 2: { return new elasticity3d_dofmap_0(); break; } } return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new elasticity3d_dofmap_1(); } }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class elasticity3d_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor elasticity3d_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor virtual ~elasticity3d_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[9]; compute_jacobian_tetrahedron_3d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[9]; double detJ; compute_jacobian_inverse_tetrahedron_3d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Cell volume // Compute circumradius // Array of quadrature weights. static const double W1 = 0.166666666666667; // Quadrature points on the UFC reference element: (0.25, 0.25, 0.25) // Value of basis functions at quadrature points. static const double FE0_C0_D001[1][2] = \ {{-1.0, 1.0}}; // Array of non-zero columns static const unsigned int nzc9[2] = {8, 11}; // Array of non-zero columns static const unsigned int nzc5[2] = {4, 7}; // Array of non-zero columns static const unsigned int nzc6[2] = {4, 6}; // Array of non-zero columns static const unsigned int nzc10[2] = {8, 10}; // Array of non-zero columns static const unsigned int nzc7[2] = {4, 5}; // Array of non-zero columns static const unsigned int nzc3[2] = {0, 1}; // Array of non-zero columns static const unsigned int nzc2[2] = {0, 2}; // Array of non-zero columns static const unsigned int nzc1[2] = {0, 3}; // Array of non-zero columns static const unsigned int nzc11[2] = {8, 9}; // Reset values in the element tensor. for (unsigned int r = 0; r < 144; r++) { A[r] = 0.0; }// end loop over 'r' // Number of operations to compute geometry constants: 324. double G[45]; G[0] = W1*det*(13.4615384615385*K[5]*K[5] + 3.84615384615385*(K[3]*K[3] + K[4]*K[4])); G[1] = W1*det*(13.4615384615385*K[2]*K[5] + 3.84615384615385*(K[0]*K[3] + K[1]*K[4])); G[2] = W1*det*(3.84615384615385*K[3]*K[8] + 5.76923076923077*K[5]*K[6]); G[3] = 9.61538461538461*K[3]*K[5]*W1*det; G[4] = W1*det*(3.84615384615385*K[2]*K[3] + 5.76923076923077*K[0]*K[5]); G[5] = W1*det*(3.84615384615385*K[4]*K[8] + 5.76923076923077*K[5]*K[7]); G[6] = 9.61538461538461*K[4]*K[5]*W1*det; G[7] = W1*det*(3.84615384615385*K[2]*K[4] + 5.76923076923077*K[1]*K[5]); G[8] = W1*det*(13.4615384615385*K[5]*K[8] + 3.84615384615385*(K[3]*K[6] + K[4]*K[7])); G[9] = W1*det*(13.4615384615385*K[2]*K[2] + 3.84615384615385*(K[0]*K[0] + K[1]*K[1])); G[10] = W1*det*(3.84615384615385*K[0]*K[8] + 5.76923076923077*K[2]*K[6]); G[11] = W1*det*(3.84615384615385*K[0]*K[5] + 5.76923076923077*K[2]*K[3]); G[12] = 9.61538461538461*K[0]*K[2]*W1*det; G[13] = W1*det*(3.84615384615385*K[1]*K[8] + 5.76923076923077*K[2]*K[7]); G[14] = W1*det*(3.84615384615385*K[1]*K[5] + 5.76923076923077*K[2]*K[4]); G[15] = 9.61538461538461*K[1]*K[2]*W1*det; G[16] = W1*det*(13.4615384615385*K[2]*K[8] + 3.84615384615385*(K[0]*K[6] + K[1]*K[7])); G[17] = W1*det*(13.4615384615385*K[6]*K[6] + 3.84615384615385*(K[7]*K[7] + K[8]*K[8])); G[18] = W1*det*(13.4615384615385*K[3]*K[6] + 3.84615384615385*(K[4]*K[7] + K[5]*K[8])); G[19] = W1*det*(13.4615384615385*K[0]*K[6] + 3.84615384615385*(K[1]*K[7] + K[2]*K[8])); G[20] = 9.61538461538461*K[6]*K[7]*W1*det; G[21] = W1*det*(3.84615384615385*K[3]*K[7] + 5.76923076923077*K[4]*K[6]); G[22] = W1*det*(3.84615384615385*K[0]*K[7] + 5.76923076923077*K[1]*K[6]); G[23] = 9.61538461538461*K[6]*K[8]*W1*det; G[24] = W1*det*(13.4615384615385*K[3]*K[3] + 3.84615384615385*(K[4]*K[4] + K[5]*K[5])); G[25] = W1*det*(13.4615384615385*K[0]*K[3] + 3.84615384615385*(K[1]*K[4] + K[2]*K[5])); G[26] = W1*det*(3.84615384615385*K[4]*K[6] + 5.76923076923077*K[3]*K[7]); G[27] = 9.61538461538461*K[3]*K[4]*W1*det; G[28] = W1*det*(3.84615384615385*K[0]*K[4] + 5.76923076923077*K[1]*K[3]); G[29] = W1*det*(3.84615384615385*K[5]*K[6] + 5.76923076923077*K[3]*K[8]); G[30] = W1*det*(13.4615384615385*K[0]*K[0] + 3.84615384615385*(K[1]*K[1] + K[2]*K[2])); G[31] = W1*det*(3.84615384615385*K[1]*K[6] + 5.76923076923077*K[0]*K[7]); G[32] = W1*det*(3.84615384615385*K[1]*K[3] + 5.76923076923077*K[0]*K[4]); G[33] = 9.61538461538461*K[0]*K[1]*W1*det; G[34] = W1*det*(3.84615384615385*K[2]*K[6] + 5.76923076923077*K[0]*K[8]); G[35] = W1*det*(13.4615384615385*K[7]*K[7] + 3.84615384615385*(K[6]*K[6] + K[8]*K[8])); G[36] = W1*det*(13.4615384615385*K[4]*K[7] + 3.84615384615385*(K[3]*K[6] + K[5]*K[8])); G[37] = W1*det*(13.4615384615385*K[1]*K[7] + 3.84615384615385*(K[0]*K[6] + K[2]*K[8])); G[38] = 9.61538461538461*K[7]*K[8]*W1*det; G[39] = W1*det*(13.4615384615385*K[4]*K[4] + 3.84615384615385*(K[3]*K[3] + K[5]*K[5])); G[40] = W1*det*(13.4615384615385*K[1]*K[4] + 3.84615384615385*(K[0]*K[3] + K[2]*K[5])); G[41] = W1*det*(3.84615384615385*K[5]*K[7] + 5.76923076923077*K[4]*K[8]); G[42] = W1*det*(13.4615384615385*K[1]*K[1] + 3.84615384615385*(K[0]*K[0] + K[2]*K[2])); G[43] = W1*det*(3.84615384615385*K[2]*K[7] + 5.76923076923077*K[1]*K[8]); G[44] = W1*det*(13.4615384615385*K[8]*K[8] + 3.84615384615385*(K[6]*K[6] + K[7]*K[7])); // Compute element tensor using UFL quadrature representation // Optimisations: ('eliminate zeros', True), ('ignore ones', True), ('ignore zero tables', True), ('optimisation', 'simplify_expressions'), ('remove zero terms', True) // Loop quadrature points for integral. // Number of operations to compute element tensor for following IP loop = 972 // Only 1 integration point, omitting IP loop. // Number of operations for primary indices: 972 for (unsigned int j = 0; j < 2; j++) { for (unsigned int k = 0; k < 2; k++) { // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc10[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[0]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc11[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[1]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc1[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[2]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc2[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[3]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc3[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[4]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc5[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[5]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc6[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[6]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc7[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[7]; // Number of operations to compute entry: 3 A[nzc10[j]*12 + nzc9[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[8]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc10[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[1]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc11[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[9]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc1[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[10]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc2[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[11]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc3[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[12]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc5[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[13]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc6[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[14]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc7[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[15]; // Number of operations to compute entry: 3 A[nzc11[j]*12 + nzc9[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[16]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc10[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[2]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc11[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[10]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc1[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[17]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc2[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[18]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc3[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[19]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc5[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[20]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc6[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[21]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc7[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[22]; // Number of operations to compute entry: 3 A[nzc1[j]*12 + nzc9[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[23]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc10[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[3]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc11[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[11]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc1[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[18]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc2[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[24]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc3[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[25]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc5[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[26]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc6[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[27]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc7[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[28]; // Number of operations to compute entry: 3 A[nzc2[j]*12 + nzc9[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[29]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc10[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[4]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc11[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[12]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc1[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[19]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc2[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[25]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc3[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[30]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc5[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[31]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc6[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[32]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc7[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[33]; // Number of operations to compute entry: 3 A[nzc3[j]*12 + nzc9[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[34]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc10[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[5]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc11[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[13]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc1[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[20]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc2[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[26]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc3[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[31]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc5[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[35]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc6[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[36]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc7[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[37]; // Number of operations to compute entry: 3 A[nzc5[j]*12 + nzc9[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[38]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc10[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[6]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc11[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[14]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc1[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[21]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc2[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[27]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc3[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[32]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc5[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[36]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc6[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[39]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc7[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[40]; // Number of operations to compute entry: 3 A[nzc6[j]*12 + nzc9[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[41]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc10[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[7]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc11[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[15]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc1[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[22]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc2[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[28]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc3[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[33]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc5[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[37]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc6[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[40]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc7[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[42]; // Number of operations to compute entry: 3 A[nzc7[j]*12 + nzc9[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[43]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc10[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[8]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc11[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[16]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc1[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[23]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc2[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[29]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc3[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[34]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc5[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[38]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc6[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[41]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc7[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[43]; // Number of operations to compute entry: 3 A[nzc9[j]*12 + nzc9[k]] += FE0_C0_D001[0][j]*FE0_C0_D001[0][k]*G[44]; }// end loop over 'k' }// end loop over 'j' } }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class elasticity3d_form_0: public ufc::form { public: /// Constructor elasticity3d_form_0() : ufc::form() { // Do nothing } /// Destructor virtual ~elasticity3d_form_0() { // Do nothing } /// Return a string identifying the form virtual const char* signature() const { return "b478b8b651c51e9f00f3f0d2b56352b682c96ebc808dfa3b61528478c94cea31f7be45f91912937e6be4533f24332959562b995f066b06780e3b8df0c31d5966"; } /// Return the rank of the global tensor (r) virtual std::size_t rank() const { return 2; } /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const { return 0; } /// Return the number of cell domains virtual std::size_t num_cell_domains() const { return 0; } /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const { return 0; } /// Return the number of point domains virtual std::size_t num_point_domains() const { return 0; } /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals virtual bool has_point_integrals() const { return false; } /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const { switch (i) { case 0: { return new elasticity3d_finite_element_1(); break; } case 1: { return new elasticity3d_finite_element_1(); break; } } return 0; } /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const { switch (i) { case 0: { return new elasticity3d_dofmap_1(); break; } case 1: { return new elasticity3d_dofmap_1(); break; } } return 0; } /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const { return new elasticity3d_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const { return 0; } }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Elasticity3D { class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new elasticity3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new elasticity3d_dofmap_1()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new elasticity3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new elasticity3d_dofmap_1()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new elasticity3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new elasticity3d_dofmap_1()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new elasticity3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new elasticity3d_dofmap_1()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new elasticity3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new elasticity3d_dofmap_1()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new elasticity3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new elasticity3d_dofmap_1()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new elasticity3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new elasticity3d_dofmap_1()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new elasticity3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new elasticity3d_dofmap_1()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new elasticity3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new elasticity3d_dofmap_1()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new elasticity3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new elasticity3d_dofmap_1()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new elasticity3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new elasticity3d_dofmap_1()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new elasticity3d_finite_element_1()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new elasticity3d_dofmap_1()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new elasticity3d_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new elasticity3d_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/assembly/cpp/forms/StabStokes2D.ufl0000644000175000017500000000051512263014601023177 0ustar johannrjohannrvector = VectorElement("Lagrange", triangle, 1) scalar = FiniteElement("Discontinuous Lagrange", triangle, 0) element = vector * scalar (v, q) = TestFunctions(element) (u, p) = TrialFunctions(element) h = Coefficient(scalar) delta = 0.2*h*h a = (inner(grad(v), grad(u)) - div(v)*p + q*div(u) + delta*inner(grad(q), grad(p)))*dx dolfin-1.3.0/bench/fem/assembly/cpp/forms/THStokes2D.ufl0000644000175000017500000000036612263014601022625 0ustar johannrjohannrvector = VectorElement("Lagrange", triangle, 2) scalar = FiniteElement("Lagrange", triangle, 1) element = vector * scalar (v, q) = TestFunctions(element) (u, p) = TrialFunctions(element) a = (inner(grad(v), grad(u)) - div(v)*p + q*div(u))*dx dolfin-1.3.0/bench/fem/assembly/cpp/forms/compile.log0000644000175000017500000046711012263015064022366 0ustar johannrjohannrThis is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Poisson2DP1 Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 2 Geometric dimension: 2 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, u]' Coefficient names: '[]' Unique elements: 'CG1(?)' Unique sub elements: 'CG1(?)' Domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Top level domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 0 quadrature_degree: auto --> 0 quadrature_rule: auto --> default Compiler stage 1 finished in 0.011436 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 36 entries computed in 0.000684 seconds Shape of reference tensor: (3, 3, 2, 2) Primary multi index: rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] External multi index: rank = 1 dims = [2] indices = [[0], [1]] Computing representation of forms Compiler stage 2 finished in 0.00514793 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.000162125 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 0.030062 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.00031209 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Poisson2DP1.h. Compiler stage 5 finished in 0.000445843 seconds. FFC finished in 0.047817 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Elasticity3D Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, u]' Coefficient names: '[]' Unique elements: 'Vector<3 x CG1(?)>' Unique sub elements: 'Vector<3 x CG1(?)>, CG1(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Monomial extraction failed: No handler defined for terminal Identity. Estimated cost of tensor representation: -1 representation: auto --> quadrature Selecting quadrature degree based on total polynomial degree of integrand: 0 quadrature_degree: auto --> 0 quadrature_rule: auto --> default Compiler stage 1 finished in 0.012737 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 2 elements Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Computing representation of 2 dofmaps Reusing element from cache Reusing element from cache Computing representation of integrals Computing quadrature representation Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache QG-utils, psi_tables: {1: {VectorElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, 3, None): {None: {None: {(1, 0, 0): array([[[-1.], [ 0.], [ 0.]], [[ 1.], [ 0.], [ 0.]], [[ 0.], [ 0.], [ 0.]], [[ 0.], [ 0.], [ 0.]], [[ 0.], [-1.], [ 0.]], [[ 0.], [ 1.], [ 0.]], [[ 0.], [ 0.], [ 0.]], [[ 0.], [ 0.], [ 0.]], [[ 0.], [ 0.], [-1.]], [[ 0.], [ 0.], [ 1.]], [[ 0.], [ 0.], [ 0.]], [[ 0.], [ 0.], [ 0.]]]), (0, 1, 0): array([[[-1.], [ 0.], [ 0.]], [[ 0.], [ 0.], [ 0.]], [[ 1.], [ 0.], [ 0.]], [[ 0.], [ 0.], [ 0.]], [[ 0.], [-1.], [ 0.]], [[ 0.], [ 0.], [ 0.]], [[ 0.], [ 1.], [ 0.]], [[ 0.], [ 0.], [ 0.]], [[ 0.], [ 0.], [-1.]], [[ 0.], [ 0.], [ 0.]], [[ 0.], [ 0.], [ 1.]], [[ 0.], [ 0.], [ 0.]]]), (0, 0, 0): array([[[ 0.25], [ 0. ], [ 0. ]], [[ 0.25], [ 0. ], [ 0. ]], [[ 0.25], [ 0. ], [ 0. ]], [[ 0.25], [ 0. ], [ 0. ]], [[ 0. ], [ 0.25], [ 0. ]], [[ 0. ], [ 0.25], [ 0. ]], [[ 0. ], [ 0.25], [ 0. ]], [[ 0. ], [ 0.25], [ 0. ]], [[ 0. ], [ 0. ], [ 0.25]], [[ 0. ], [ 0. ], [ 0.25]], [[ 0. ], [ 0. ], [ 0.25]], [[ 0. ], [ 0. ], [ 0.25]]]), (0, 0, 1): array([[[ -1.00000000e+00], [ 0.00000000e+00], [ 0.00000000e+00]], [[ 1.11022302e-16], [ 0.00000000e+00], [ 0.00000000e+00]], [[ 0.00000000e+00], [ 0.00000000e+00], [ 0.00000000e+00]], [[ 1.00000000e+00], [ 0.00000000e+00], [ 0.00000000e+00]], [[ 0.00000000e+00], [ -1.00000000e+00], [ 0.00000000e+00]], [[ 0.00000000e+00], [ 1.11022302e-16], [ 0.00000000e+00]], [[ 0.00000000e+00], [ 0.00000000e+00], [ 0.00000000e+00]], [[ 0.00000000e+00], [ 1.00000000e+00], [ 0.00000000e+00]], [[ 0.00000000e+00], [ 0.00000000e+00], [ -1.00000000e+00]], [[ 0.00000000e+00], [ 0.00000000e+00], [ 1.11022302e-16]], [[ 0.00000000e+00], [ 0.00000000e+00], [ 0.00000000e+00]], [[ 0.00000000e+00], [ 0.00000000e+00], [ 1.00000000e+00]]])}}}}} QG-utils, psi_tables, flat_tables: {'FE0_C2_D001': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00]]), 'FE0_C1_D001': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE0_C1_D010': array([[ 0., 0., 0., 0., -1., 0., 1., 0., 0., 0., 0., 0.]]), 'FE0_C2_D010': array([[ 0., 0., 0., 0., 0., 0., 0., 0., -1., 0., 1., 0.]]), 'FE0_C1_D100': array([[ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.]]), 'FE0_C0_D100': array([[-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]), 'FE0_C0_D010': array([[-1., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]), 'FE0_C0_D001': array([[ -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE0_C2_D100': array([[ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.]]), 'FE0_C2': array([[ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.25, 0.25, 0.25, 0.25]]), 'FE0_C1': array([[ 0. , 0. , 0. , 0. , 0.25, 0.25, 0.25, 0.25, 0. , 0. , 0. , 0. ]]), 'FE0_C0': array([[ 0.25, 0.25, 0.25, 0.25, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]])} tables: {'FE0_C2_D001': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00]]), 'FE0_C1_D001': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE0_C1_D010': array([[ 0., 0., 0., 0., -1., 0., 1., 0., 0., 0., 0., 0.]]), 'FE0_C2_D010': array([[ 0., 0., 0., 0., 0., 0., 0., 0., -1., 0., 1., 0.]]), 'FE0_C1_D100': array([[ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.]]), 'FE0_C0_D100': array([[-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]), 'FE0_C0_D010': array([[-1., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]), 'FE0_C0_D001': array([[ -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE0_C2_D100': array([[ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.]]), 'FE0_C2': array([[ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.25, 0.25, 0.25, 0.25]]), 'FE0_C1': array([[ 0. , 0. , 0. , 0. , 0.25, 0.25, 0.25, 0.25, 0. , 0. , 0. , 0. ]]), 'FE0_C0': array([[ 0.25, 0.25, 0.25, 0.25, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]])} name_map: {} inv_name_map: {'FE0_C2_D001': 'FE0_C2_D001', 'FE0_C1_D001': 'FE0_C1_D001', 'FE0_C1_D010': 'FE0_C1_D010', 'FE0_C2_D010': 'FE0_C2_D010', 'FE0_C1_D100': 'FE0_C1_D100', 'FE0_C0_D100': 'FE0_C0_D100', 'FE0_C0_D010': 'FE0_C0_D010', 'FE0_C0_D001': 'FE0_C0_D001', 'FE0_C2_D100': 'FE0_C2_D100', 'FE0_C2': 'FE0_C2', 'FE0_C1': 'FE0_C1', 'FE0_C0': 'FE0_C0'} QG-utils, psi_tables, unique_tables: {'FE0_C0_D001': array([[-1., 1.]]), 'FE0_C0': array([[ 0.25, 0.25, 0.25, 0.25]])} QG-utils, psi_tables, name_map: {'FE0_C2_D001': ('FE0_C0_D001', (9, [8, 11]), False, False), 'FE0_C1_D001': ('FE0_C0_D001', (5, [4, 7]), False, False), 'FE0_C1_D010': ('FE0_C0_D001', (6, [4, 6]), False, False), 'FE0_C2_D010': ('FE0_C0_D001', (10, [8, 10]), False, False), 'FE0_C1_D100': ('FE0_C0_D001', (7, [4, 5]), False, False), 'FE0_C0_D100': ('FE0_C0_D001', (3, [0, 1]), False, False), 'FE0_C0_D010': ('FE0_C0_D001', (2, [0, 2]), False, False), 'FE0_C0_D001': ('FE0_C0_D001', (1, [0, 3]), False, False), 'FE0_C2_D100': ('FE0_C0_D001', (11, [8, 9]), False, False), 'FE0_C2': ('FE0_C0', (8, [8, 9, 10, 11]), False, False), 'FE0_C1': ('FE0_C0', (4, [4, 5, 6, 7]), False, False), 'FE0_C0': ('FE0_C0', (0, [0, 1, 2, 3]), False, False)} Transforming cell integral Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Computing representation of forms Compiler stage 2 finished in 0.103312 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- Optimising expressions for cell integral Compiler stage 3 finished in 0.0158811 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 2 element(s) Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 2 dofmap(s) Generating code for integrals Removing unused variable: circumradius Removing unused variable: area Removing unused variable: s Removing unused variable: lc Removing unused variable: lb Removing unused variable: la Removing unused variable: v2v3 Removing unused variable: v1v3 Removing unused variable: v0v3 Removing unused variable: v0v1 Removing unused variable: v0v2 Removing unused variable: v1v2 Removing unused variable: volume Cell, number of operations to compute tensor: 1296 Generating code for forms Compiler stage 4 finished in 0.187853 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000345945 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Elasticity3D.h. Compiler stage 5 finished in 0.000727892 seconds. FFC finished in 0.321144 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form NSEMomentum3D Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 3 Geometric dimension: 3 Rank: 2 Number of coefficients: 5 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[w_0, w_1, w_2, w_3, w_4]' Argument names: '[v, u]' Coefficient names: '[w, d1, d2, k, nu]' Unique elements: 'Vector<3 x CG1(?)>, Vector<3 x DG0(?)>, DG0(?)' Unique sub elements: 'Vector<3 x CG1(?)>, Vector<3 x DG0(?)>, DG0(?), CG1(?)' Domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Top level domains: (Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3),) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Estimated cost of tensor representation: 6 representation: auto --> quadrature Selecting quadrature degree based on total polynomial degree of integrand: 2 quadrature_degree: auto --> 2 quadrature_rule: auto --> default Compiler stage 1 finished in 0.027504 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 4 elements Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Computing representation of 4 dofmaps Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Computing representation of integrals Computing quadrature representation Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache QG-utils, psi_tables: {4: {VectorElement('Discontinuous Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 0, 3, None): {None: {None: {(0, 0, 0): array([[[ 1., 1., 1., 1.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 1., 1., 1., 1.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 1., 1., 1., 1.]]])}}}, FiniteElement('Discontinuous Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 0, None): {None: {None: {(0, 0, 0): array([[ 1., 1., 1., 1.]])}}}, VectorElement('Lagrange', Domain(Cell('tetrahedron', 3), 'tetrahedron_multiverse', 3, 3), 1, 3, None): {None: {None: {(1, 0, 0): array([[[-1., -1., -1., -1.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], [[ 1., 1., 1., 1.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [-1., -1., -1., -1.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 1., 1., 1., 1.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [-1., -1., -1., -1.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 1., 1., 1., 1.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]], [[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]]]), (0, 1, 0): array([[[ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 3.88578059e-16, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 3.88578059e-16, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 3.88578059e-16, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]]), (0, 0, 0): array([[[ 0.1381966, 0.1381966, 0.1381966, 0.5854102], [ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ]], [[ 0.5854102, 0.1381966, 0.1381966, 0.1381966], [ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ]], [[ 0.1381966, 0.5854102, 0.1381966, 0.1381966], [ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ]], [[ 0.1381966, 0.1381966, 0.5854102, 0.1381966], [ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ]], [[ 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.1381966, 0.5854102], [ 0. , 0. , 0. , 0. ]], [[ 0. , 0. , 0. , 0. ], [ 0.5854102, 0.1381966, 0.1381966, 0.1381966], [ 0. , 0. , 0. , 0. ]], [[ 0. , 0. , 0. , 0. ], [ 0.1381966, 0.5854102, 0.1381966, 0.1381966], [ 0. , 0. , 0. , 0. ]], [[ 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.5854102, 0.1381966], [ 0. , 0. , 0. , 0. ]], [[ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.1381966, 0.5854102]], [[ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ], [ 0.5854102, 0.1381966, 0.1381966, 0.1381966]], [[ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ], [ 0.1381966, 0.5854102, 0.1381966, 0.1381966]], [[ 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.5854102, 0.1381966]]]), (0, 0, 1): array([[[ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 1.11022302e-16, 1.11022302e-16, 4.99600361e-16, 1.11022302e-16], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 5.55111512e-17, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 1.11022302e-16, 1.11022302e-16, 4.99600361e-16, 1.11022302e-16], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 5.55111512e-17, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 1.11022302e-16, 1.11022302e-16, 4.99600361e-16, 1.11022302e-16]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 5.55111512e-17, 0.00000000e+00]], [[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, 1.00000000e+00]]])}}}}} QG-utils, psi_tables, flat_tables: {'FE2_C1_D100': array([[ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.]]), 'FE2_C2_D001': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 4.99600361e-16, 5.55111512e-17, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00]]), 'FE1_C0': array([[ 1., 0., 0.], [ 1., 0., 0.], [ 1., 0., 0.], [ 1., 0., 0.]]), 'FE1_C1': array([[ 0., 1., 0.], [ 0., 1., 0.], [ 0., 1., 0.], [ 0., 1., 0.]]), 'FE1_C2': array([[ 0., 0., 1.], [ 0., 0., 1.], [ 0., 0., 1.], [ 0., 0., 1.]]), 'FE2_C0_D100': array([[-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]), 'FE2_C2_D100': array([[ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.]]), 'FE2_C1': array([[ 0. , 0. , 0. , 0. , 0.1381966, 0.5854102, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.5854102, 0.1381966, 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.1381966, 0.5854102, 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0.5854102, 0.1381966, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. ]]), 'FE2_C0': array([[ 0.1381966, 0.5854102, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.5854102, 0.1381966, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.1381966, 0.5854102, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0.5854102, 0.1381966, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]]), 'FE2_C2': array([[ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.1381966, 0.5854102, 0.1381966, 0.1381966], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.5854102, 0.1381966], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.1381966, 0.5854102], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.5854102, 0.1381966, 0.1381966, 0.1381966]]), 'FE2_C0_D001': array([[ -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 4.99600361e-16, 5.55111512e-17, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE0': array([[ 1.], [ 1.], [ 1.], [ 1.]]), 'FE2_C2_D010': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 3.88578059e-16, 1.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00]]), 'FE2_C1_D001': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 4.99600361e-16, 5.55111512e-17, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE2_C0_D010': array([[ -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 3.88578059e-16, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE2_C1_D010': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 3.88578059e-16, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]])} tables: {'FE2_C1_D100': array([[ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.], [ 0., 0., 0., 0., -1., 1., 0., 0., 0., 0., 0., 0.]]), 'FE2_C2_D001': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 4.99600361e-16, 5.55111512e-17, 1.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00]]), 'FE1_C0': array([[ 1., 0., 0.], [ 1., 0., 0.], [ 1., 0., 0.], [ 1., 0., 0.]]), 'FE1_C1': array([[ 0., 1., 0.], [ 0., 1., 0.], [ 0., 1., 0.], [ 0., 1., 0.]]), 'FE1_C2': array([[ 0., 0., 1.], [ 0., 0., 1.], [ 0., 0., 1.], [ 0., 0., 1.]]), 'FE2_C0_D100': array([[-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], [-1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]), 'FE2_C2_D100': array([[ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.], [ 0., 0., 0., 0., 0., 0., 0., 0., -1., 1., 0., 0.]]), 'FE2_C1': array([[ 0. , 0. , 0. , 0. , 0.1381966, 0.5854102, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.5854102, 0.1381966, 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.1381966, 0.5854102, 0. , 0. , 0. , 0. ], [ 0. , 0. , 0. , 0. , 0.5854102, 0.1381966, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. ]]), 'FE2_C0': array([[ 0.1381966, 0.5854102, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.5854102, 0.1381966, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0.1381966, 0.1381966, 0.1381966, 0.5854102, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ], [ 0.5854102, 0.1381966, 0.1381966, 0.1381966, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]]), 'FE2_C2': array([[ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.1381966, 0.5854102, 0.1381966, 0.1381966], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.5854102, 0.1381966], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.1381966, 0.1381966, 0.1381966, 0.5854102], [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.5854102, 0.1381966, 0.1381966, 0.1381966]]), 'FE2_C0_D001': array([[ -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 4.99600361e-16, 5.55111512e-17, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE0': array([[ 1.], [ 1.], [ 1.], [ 1.]]), 'FE2_C2_D010': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 3.88578059e-16, 1.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00]]), 'FE2_C1_D001': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 4.99600361e-16, 5.55111512e-17, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE2_C0_D010': array([[ -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 3.88578059e-16, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]), 'FE2_C1_D010': array([[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 3.88578059e-16, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00], [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -1.00000000e+00, 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]])} name_map: {} inv_name_map: {'FE2_C1_D100': 'FE2_C1_D100', 'FE0': 'FE0', 'FE1_C0': 'FE1_C0', 'FE1_C1': 'FE1_C1', 'FE1_C2': 'FE1_C2', 'FE2_C0_D100': 'FE2_C0_D100', 'FE2_C2_D100': 'FE2_C2_D100', 'FE2_C1': 'FE2_C1', 'FE2_C0': 'FE2_C0', 'FE2_C2': 'FE2_C2', 'FE2_C0_D001': 'FE2_C0_D001', 'FE2_C2_D001': 'FE2_C2_D001', 'FE2_C2_D010': 'FE2_C2_D010', 'FE2_C1_D001': 'FE2_C1_D001', 'FE2_C0_D010': 'FE2_C0_D010', 'FE2_C1_D010': 'FE2_C1_D010'} QG-utils, psi_tables, unique_tables: {'FE2_C0': array([[ 0.1381966, 0.5854102, 0.1381966, 0.1381966], [ 0.1381966, 0.1381966, 0.5854102, 0.1381966], [ 0.1381966, 0.1381966, 0.1381966, 0.5854102], [ 0.5854102, 0.1381966, 0.1381966, 0.1381966]]), 'FE2_C0_D001': array([[-1., 1.], [-1., 1.], [-1., 1.], [-1., 1.]]), 'FE0': array([[ 1.], [ 1.], [ 1.], [ 1.]])} QG-utils, psi_tables, name_map: {'FE2_C1_D100': ('FE2_C0_D001', (10, [4, 5]), False, False), 'FE0': ('FE0', (), False, True), 'FE1_C0': ('FE0', (0, [0]), False, True), 'FE1_C1': ('FE0', (1, [1]), False, True), 'FE1_C2': ('FE0', (2, [2]), False, True), 'FE2_C0_D100': ('FE2_C0_D001', (6, [0, 1]), False, False), 'FE2_C2_D100': ('FE2_C0_D001', (14, [8, 9]), False, False), 'FE2_C1': ('FE2_C0', (7, [4, 5, 6, 7]), False, False), 'FE2_C0': ('FE2_C0', (3, [0, 1, 2, 3]), False, False), 'FE2_C2': ('FE2_C0', (11, [8, 9, 10, 11]), False, False), 'FE2_C0_D001': ('FE2_C0_D001', (4, [0, 3]), False, False), 'FE2_C2_D001': ('FE2_C0_D001', (12, [8, 11]), False, False), 'FE2_C2_D010': ('FE2_C0_D001', (13, [8, 10]), False, False), 'FE2_C1_D001': ('FE2_C0_D001', (8, [4, 7]), False, False), 'FE2_C0_D010': ('FE2_C0_D001', (5, [0, 2]), False, False), 'FE2_C1_D010': ('FE2_C0_D001', (9, [4, 6]), False, False)} Transforming cell integral Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Computing representation of forms Compiler stage 2 finished in 0.183498 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- Optimising expressions for cell integral Compiler stage 3 finished in 0.0380979 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 4 element(s) Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp0 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: Z Removing unused variable: Y Removing unused variable: X Removing unused variable: d_22 Removing unused variable: d_21 Removing unused variable: d_20 Removing unused variable: d_12 Removing unused variable: d_11 Removing unused variable: d_10 Removing unused variable: d_02 Removing unused variable: d_01 Removing unused variable: d_00 Removing unused variable: C2 Removing unused variable: C1 Removing unused variable: C0 Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp0 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp0 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp0 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: Z Removing unused variable: Y Removing unused variable: X Removing unused variable: d_22 Removing unused variable: d_21 Removing unused variable: d_20 Removing unused variable: d_12 Removing unused variable: d_11 Removing unused variable: d_10 Removing unused variable: d_02 Removing unused variable: d_01 Removing unused variable: d_00 Removing unused variable: C2 Removing unused variable: C1 Removing unused variable: C0 Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp4 Removing unused variable: tmp3 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 4 dofmap(s) Generating code for integrals Removing unused variable: circumradius Removing unused variable: area Removing unused variable: s Removing unused variable: lc Removing unused variable: lb Removing unused variable: la Removing unused variable: v2v3 Removing unused variable: v1v3 Removing unused variable: v0v3 Removing unused variable: v0v1 Removing unused variable: v0v2 Removing unused variable: v1v2 Removing unused variable: volume Cell, number of operations to compute tensor: 8212 Generating code for forms Compiler stage 4 finished in 0.21428 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000555992 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./NSEMomentum3D.h. Compiler stage 5 finished in 0.000844002 seconds. FFC finished in 0.465066 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Poisson2DP2 Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 2 Geometric dimension: 2 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, u]' Coefficient names: '[]' Unique elements: 'CG2(?)' Unique sub elements: 'CG2(?)' Domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Top level domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 2 quadrature_degree: auto --> 2 quadrature_rule: auto --> default Compiler stage 1 finished in 0.014014 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 144 entries computed in 0.00126 seconds Shape of reference tensor: (6, 6, 2, 2) Primary multi index: rank = 2 dims = [6, 6] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] External multi index: rank = 1 dims = [2] indices = [[0], [1]] Computing representation of forms Compiler stage 2 finished in 0.00609279 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.000160217 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 0.060533 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.00031209 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Poisson2DP2.h. Compiler stage 5 finished in 0.000524044 seconds. FFC finished in 0.0819001 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form Poisson2DP3 Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 2 Geometric dimension: 2 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v, u]' Coefficient names: '[]' Unique elements: 'CG3(?)' Unique sub elements: 'CG3(?)' Domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Top level domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 4 quadrature_degree: auto --> 4 quadrature_rule: auto --> default Compiler stage 1 finished in 0.0198262 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 1 elements Reusing element from cache Reusing element from cache Computing representation of 1 dofmaps Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 400 entries computed in 0.00369 seconds Shape of reference tensor: (10, 10, 2, 2) Primary multi index: rank = 2 dims = [10, 10] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] External multi index: rank = 1 dims = [2] indices = [[0], [1]] Computing representation of forms Compiler stage 2 finished in 0.00920081 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.000169992 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 1 element(s) Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 1 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 0.139566 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000349045 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./Poisson2DP3.h. Compiler stage 5 finished in 0.000652075 seconds. FFC finished in 0.170042 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form StabStokes2D Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 2 Geometric dimension: 2 Rank: 2 Number of coefficients: 1 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[w_0]' Argument names: '[v0, v1]' Coefficient names: '[h]' Unique elements: 'Mixed, DG0(?)>, DG0(?)' Unique sub elements: 'Mixed, DG0(?)>, DG0(?), Vector<2 x CG1 (?)>, CG1(?)' Domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Top level domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Estimated cost of tensor representation: 4 representation: auto --> quadrature Selecting quadrature degree based on total polynomial degree of integrand: 1 quadrature_degree: auto --> 1 quadrature_rule: auto --> default Compiler stage 1 finished in 0.0285339 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 4 elements Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Computing representation of 4 dofmaps Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Computing representation of integrals Computing quadrature representation Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache QG-utils, psi_tables: {1: {MixedElement(*[VectorElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, 2, None), FiniteElement('Discontinuous Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 0, None)], **{'value_shape': (3,) }): {None: {None: {(0, 1): array([[[-1.], [ 0.], [ 0.]], [[ 0.], [ 0.], [ 0.]], [[ 1.], [ 0.], [ 0.]], [[ 0.], [-1.], [ 0.]], [[ 0.], [ 0.], [ 0.]], [[ 0.], [ 1.], [ 0.]], [[ 0.], [ 0.], [ 0.]]]), (1, 0): array([[[-1.], [ 0.], [ 0.]], [[ 1.], [ 0.], [ 0.]], [[ 0.], [ 0.], [ 0.]], [[ 0.], [-1.], [ 0.]], [[ 0.], [ 1.], [ 0.]], [[ 0.], [ 0.], [ 0.]], [[ 0.], [ 0.], [ 0.]]]), (0, 0): array([[[ 0.33333333], [ 0. ], [ 0. ]], [[ 0.33333333], [ 0. ], [ 0. ]], [[ 0.33333333], [ 0. ], [ 0. ]], [[ 0. ], [ 0.33333333], [ 0. ]], [[ 0. ], [ 0.33333333], [ 0. ]], [[ 0. ], [ 0.33333333], [ 0. ]], [[ 0. ], [ 0. ], [ 1. ]]])}}}, FiniteElement('Discontinuous Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 0, None): {None: {None: {(0, 0): array([[1.0]], dtype=object)}}}}} QG-utils, psi_tables, flat_tables: {'FE1_C2_D01': array([[ 0., 0., 0., 0., 0., 0., 0.]]), 'FE1_C0': array([[ 0.33333333, 0.33333333, 0.33333333, 0. , 0. , 0. , 0. ]]), 'FE1_C1': array([[ 0. , 0. , 0. , 0.33333333, 0.33333333, 0.33333333, 0. ]]), 'FE1_C2': array([[ 0., 0., 0., 0., 0., 0., 1.]]), 'FE1_C1_D10': array([[ 0., 0., 0., -1., 1., 0., 0.]]), 'FE1_C2_D10': array([[ 0., 0., 0., 0., 0., 0., 0.]]), 'FE0': array([[1.0]], dtype=object), 'FE1_C1_D01': array([[ 0., 0., 0., -1., 0., 1., 0.]]), 'FE1_C0_D01': array([[-1., 0., 1., 0., 0., 0., 0.]]), 'FE1_C0_D10': array([[-1., 1., 0., 0., 0., 0., 0.]])} tables: {'FE1_C2_D01': array([[ 0., 0., 0., 0., 0., 0., 0.]]), 'FE1_C0': array([[ 0.33333333, 0.33333333, 0.33333333, 0. , 0. , 0. , 0. ]]), 'FE1_C1': array([[ 0. , 0. , 0. , 0.33333333, 0.33333333, 0.33333333, 0. ]]), 'FE1_C2': array([[ 0., 0., 0., 0., 0., 0., 1.]]), 'FE1_C1_D10': array([[ 0., 0., 0., -1., 1., 0., 0.]]), 'FE0': array([[1.0]], dtype=object), 'FE1_C1_D01': array([[ 0., 0., 0., -1., 0., 1., 0.]]), 'FE1_C0_D01': array([[-1., 0., 1., 0., 0., 0., 0.]]), 'FE1_C0_D10': array([[-1., 1., 0., 0., 0., 0., 0.]])} name_map: {'FE1_C2_D01': ['FE1_C2_D10']} inv_name_map: {'FE0': 'FE0', 'FE1_C0': 'FE1_C0', 'FE1_C1': 'FE1_C1', 'FE1_C2': 'FE1_C2', 'FE1_C1_D10': 'FE1_C1_D10', 'FE1_C2_D10': 'FE1_C2_D01', 'FE1_C2_D01': 'FE1_C2_D01', 'FE1_C1_D01': 'FE1_C1_D01', 'FE1_C0_D01': 'FE1_C0_D01', 'FE1_C0_D10': 'FE1_C0_D10'} QG-utils, psi_tables, unique_tables: {'FE1_C2_D01': array([[ 0., 0., 0., 0., 0., 0., 0.]]), 'FE1_C0': array([[ 0.33333333, 0.33333333, 0.33333333]]), 'FE0': array([[1.0]], dtype=object), 'FE1_C0_D01': array([[-1., 1.]])} QG-utils, psi_tables, name_map: {'FE0': ('FE0', (), False, True), 'FE1_C0': ('FE1_C0', (0, [0, 1, 2]), False, False), 'FE1_C1': ('FE1_C0', (3, [3, 4, 5]), False, False), 'FE1_C2': ('FE0', (6, [6]), False, True), 'FE1_C1_D10': ('FE1_C0_D01', (5, [3, 4]), False, False), 'FE1_C2_D10': ('FE1_C2_D01', (), True, False), 'FE1_C2_D01': ('FE1_C2_D01', (), True, False), 'FE1_C1_D01': ('FE1_C0_D01', (4, [3, 5]), False, False), 'FE1_C0_D01': ('FE1_C0_D01', (1, [0, 2]), False, False), 'FE1_C0_D10': ('FE1_C0_D01', (2, [0, 1]), False, False)} Transforming cell integral Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Computing representation of forms Compiler stage 2 finished in 0.047225 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- Optimising expressions for cell integral Compiler stage 3 finished in 0.00128889 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 4 element(s) Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp0 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: Y Removing unused variable: X Removing unused variable: C1 Removing unused variable: C0 Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp0 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp0 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 4 dofmap(s) Generating code for integrals Removing unused variable: circumradius Removing unused variable: v0v1 Removing unused variable: v0v2 Removing unused variable: v1v2 Removing unused variable: volume Cell, number of operations to compute tensor: 159 Generating code for forms Compiler stage 4 finished in 0.130533 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000456095 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./StabStokes2D.h. Compiler stage 5 finished in 0.000759125 seconds. FFC finished in 0.209111 seconds. This is FFC, the FEniCS Form Compiler, version 1.3.0. For further information, visit http://www.fenics.org/ffc/. Compiling form THStokes2D Compiler stage 1: Analyzing form(s) ----------------------------------- Name: 'a' Cell: Topological dimension: 2 Geometric dimension: 2 Rank: 2 Number of coefficients: 0 Arguments: '[v_{-2}, v_{-1}]' Coefficients: '[]' Argument names: '[v0, v1]' Coefficient names: '[]' Unique elements: 'Mixed, CG1(?)>' Unique sub elements: 'Mixed, CG1(?)>, Vector<2 x CG2(?)>, CG 1(?), CG2(?)' Domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Top level domains: (Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), ) Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Estimated cost of tensor representation: 2 representation: auto --> tensor Selecting quadrature degree based on total polynomial degree of integrand: 3 quadrature_degree: auto --> 3 quadrature_rule: auto --> default Compiler stage 1 finished in 0.028003 seconds. Compiler stage 2: Computing intermediate representation ------------------------------------------------------- Computing representation of 4 elements Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Computing representation of 4 dofmaps Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Computing representation of integrals Computing tensor representation Extracting monomial form representation from UFL form Transforming monomial form to reference element Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Reusing element from cache Precomputing integrals on reference element Reusing element from cache 450 entries computed in 0.0037 seconds Shape of reference tensor: (15, 15, 2) Primary multi index: rank = 2 dims = [15, 15] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [2, 10], [2, 11], [2, 12], [2, 13], [2, 14], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [4, 10], [4, 11], [4, 12], [4, 13], [4, 14], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [5, 10], [5, 11], [5, 12], [5, 13], [5, 14], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12], [6, 13], [6, 14], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [7, 10], [7, 11], [7, 12], [7, 13], [7, 14], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [8, 10], [8, 11], [8, 12], [8, 13], [8, 14], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9], [9, 10], [9, 11], [9, 12], [9, 13], [9, 14], [10, 0], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5], [10, 6], [10, 7], [10, 8], [10, 9], [10, 10], [10, 11], [10, 12], [10, 13], [10, 14], [11, 0], [11, 1], [11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9], [11, 10], [11, 11], [11, 12], [11, 13], [11, 14], [12, 0], [12, 1], [12, 2], [12, 3], [12, 4], [12, 5], [12, 6], [12, 7], [12, 8], [12, 9], [12, 10], [12, 11], [12, 12], [12, 13], [12, 14], [13, 0], [13, 1], [13, 2], [13, 3], [13, 4], [13, 5], [13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12], [13, 13], [13, 14], [14, 0], [14, 1], [14, 2], [14, 3], [14, 4], [14, 5], [14, 6], [14, 7], [14, 8], [14, 9], [14, 10], [14, 11], [14, 12], [14, 13], [14, 14]] Secondary multi index: rank = 1 dims = [2] indices = [[0], [1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 1 dims = [2] indices = [[0], [1]] External multi index: rank = 0 dims = [] indices = [[]] Precomputing integrals on reference element Reusing element from cache 450 entries computed in 0.00356 seconds Shape of reference tensor: (15, 15, 2) Primary multi index: rank = 2 dims = [15, 15] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [2, 10], [2, 11], [2, 12], [2, 13], [2, 14], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [4, 10], [4, 11], [4, 12], [4, 13], [4, 14], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [5, 10], [5, 11], [5, 12], [5, 13], [5, 14], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12], [6, 13], [6, 14], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [7, 10], [7, 11], [7, 12], [7, 13], [7, 14], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [8, 10], [8, 11], [8, 12], [8, 13], [8, 14], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9], [9, 10], [9, 11], [9, 12], [9, 13], [9, 14], [10, 0], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5], [10, 6], [10, 7], [10, 8], [10, 9], [10, 10], [10, 11], [10, 12], [10, 13], [10, 14], [11, 0], [11, 1], [11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9], [11, 10], [11, 11], [11, 12], [11, 13], [11, 14], [12, 0], [12, 1], [12, 2], [12, 3], [12, 4], [12, 5], [12, 6], [12, 7], [12, 8], [12, 9], [12, 10], [12, 11], [12, 12], [12, 13], [12, 14], [13, 0], [13, 1], [13, 2], [13, 3], [13, 4], [13, 5], [13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12], [13, 13], [13, 14], [14, 0], [14, 1], [14, 2], [14, 3], [14, 4], [14, 5], [14, 6], [14, 7], [14, 8], [14, 9], [14, 10], [14, 11], [14, 12], [14, 13], [14, 14]] Secondary multi index: rank = 1 dims = [2] indices = [[0], [1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 1 dims = [2] indices = [[0], [1]] External multi index: rank = 0 dims = [] indices = [[]] Precomputing integrals on reference element Reusing element from cache 450 entries computed in 0.00354 seconds Shape of reference tensor: (15, 15, 2) Primary multi index: rank = 2 dims = [15, 15] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [2, 10], [2, 11], [2, 12], [2, 13], [2, 14], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [4, 10], [4, 11], [4, 12], [4, 13], [4, 14], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [5, 10], [5, 11], [5, 12], [5, 13], [5, 14], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12], [6, 13], [6, 14], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [7, 10], [7, 11], [7, 12], [7, 13], [7, 14], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [8, 10], [8, 11], [8, 12], [8, 13], [8, 14], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9], [9, 10], [9, 11], [9, 12], [9, 13], [9, 14], [10, 0], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5], [10, 6], [10, 7], [10, 8], [10, 9], [10, 10], [10, 11], [10, 12], [10, 13], [10, 14], [11, 0], [11, 1], [11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9], [11, 10], [11, 11], [11, 12], [11, 13], [11, 14], [12, 0], [12, 1], [12, 2], [12, 3], [12, 4], [12, 5], [12, 6], [12, 7], [12, 8], [12, 9], [12, 10], [12, 11], [12, 12], [12, 13], [12, 14], [13, 0], [13, 1], [13, 2], [13, 3], [13, 4], [13, 5], [13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12], [13, 13], [13, 14], [14, 0], [14, 1], [14, 2], [14, 3], [14, 4], [14, 5], [14, 6], [14, 7], [14, 8], [14, 9], [14, 10], [14, 11], [14, 12], [14, 13], [14, 14]] Secondary multi index: rank = 1 dims = [2] indices = [[0], [1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 1 dims = [2] indices = [[0], [1]] External multi index: rank = 0 dims = [] indices = [[]] Precomputing integrals on reference element Reusing element from cache 450 entries computed in 0.0036 seconds Shape of reference tensor: (15, 15, 2) Primary multi index: rank = 2 dims = [15, 15] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [2, 10], [2, 11], [2, 12], [2, 13], [2, 14], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [4, 10], [4, 11], [4, 12], [4, 13], [4, 14], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [5, 10], [5, 11], [5, 12], [5, 13], [5, 14], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12], [6, 13], [6, 14], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [7, 10], [7, 11], [7, 12], [7, 13], [7, 14], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [8, 10], [8, 11], [8, 12], [8, 13], [8, 14], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9], [9, 10], [9, 11], [9, 12], [9, 13], [9, 14], [10, 0], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5], [10, 6], [10, 7], [10, 8], [10, 9], [10, 10], [10, 11], [10, 12], [10, 13], [10, 14], [11, 0], [11, 1], [11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9], [11, 10], [11, 11], [11, 12], [11, 13], [11, 14], [12, 0], [12, 1], [12, 2], [12, 3], [12, 4], [12, 5], [12, 6], [12, 7], [12, 8], [12, 9], [12, 10], [12, 11], [12, 12], [12, 13], [12, 14], [13, 0], [13, 1], [13, 2], [13, 3], [13, 4], [13, 5], [13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12], [13, 13], [13, 14], [14, 0], [14, 1], [14, 2], [14, 3], [14, 4], [14, 5], [14, 6], [14, 7], [14, 8], [14, 9], [14, 10], [14, 11], [14, 12], [14, 13], [14, 14]] Secondary multi index: rank = 1 dims = [2] indices = [[0], [1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 1 dims = [2] indices = [[0], [1]] External multi index: rank = 0 dims = [] indices = [[]] Precomputing integrals on reference element Reusing element from cache 900 entries computed in 0.00359 seconds Shape of reference tensor: (15, 15, 2, 2) Primary multi index: rank = 2 dims = [15, 15] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [2, 10], [2, 11], [2, 12], [2, 13], [2, 14], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [4, 10], [4, 11], [4, 12], [4, 13], [4, 14], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [5, 10], [5, 11], [5, 12], [5, 13], [5, 14], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12], [6, 13], [6, 14], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [7, 10], [7, 11], [7, 12], [7, 13], [7, 14], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [8, 10], [8, 11], [8, 12], [8, 13], [8, 14], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9], [9, 10], [9, 11], [9, 12], [9, 13], [9, 14], [10, 0], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5], [10, 6], [10, 7], [10, 8], [10, 9], [10, 10], [10, 11], [10, 12], [10, 13], [10, 14], [11, 0], [11, 1], [11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9], [11, 10], [11, 11], [11, 12], [11, 13], [11, 14], [12, 0], [12, 1], [12, 2], [12, 3], [12, 4], [12, 5], [12, 6], [12, 7], [12, 8], [12, 9], [12, 10], [12, 11], [12, 12], [12, 13], [12, 14], [13, 0], [13, 1], [13, 2], [13, 3], [13, 4], [13, 5], [13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12], [13, 13], [13, 14], [14, 0], [14, 1], [14, 2], [14, 3], [14, 4], [14, 5], [14, 6], [14, 7], [14, 8], [14, 9], [14, 10], [14, 11], [14, 12], [14, 13], [14, 14]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] External multi index: rank = 0 dims = [] indices = [[]] Precomputing integrals on reference element Reusing element from cache 900 entries computed in 0.00356 seconds Shape of reference tensor: (15, 15, 2, 2) Primary multi index: rank = 2 dims = [15, 15] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [2, 10], [2, 11], [2, 12], [2, 13], [2, 14], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [4, 10], [4, 11], [4, 12], [4, 13], [4, 14], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [5, 10], [5, 11], [5, 12], [5, 13], [5, 14], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12], [6, 13], [6, 14], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [7, 10], [7, 11], [7, 12], [7, 13], [7, 14], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [8, 10], [8, 11], [8, 12], [8, 13], [8, 14], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9], [9, 10], [9, 11], [9, 12], [9, 13], [9, 14], [10, 0], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5], [10, 6], [10, 7], [10, 8], [10, 9], [10, 10], [10, 11], [10, 12], [10, 13], [10, 14], [11, 0], [11, 1], [11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9], [11, 10], [11, 11], [11, 12], [11, 13], [11, 14], [12, 0], [12, 1], [12, 2], [12, 3], [12, 4], [12, 5], [12, 6], [12, 7], [12, 8], [12, 9], [12, 10], [12, 11], [12, 12], [12, 13], [12, 14], [13, 0], [13, 1], [13, 2], [13, 3], [13, 4], [13, 5], [13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12], [13, 13], [13, 14], [14, 0], [14, 1], [14, 2], [14, 3], [14, 4], [14, 5], [14, 6], [14, 7], [14, 8], [14, 9], [14, 10], [14, 11], [14, 12], [14, 13], [14, 14]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] External multi index: rank = 0 dims = [] indices = [[]] Precomputing integrals on reference element Reusing element from cache 900 entries computed in 0.0036 seconds Shape of reference tensor: (15, 15, 2, 2) Primary multi index: rank = 2 dims = [15, 15] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [2, 10], [2, 11], [2, 12], [2, 13], [2, 14], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [4, 10], [4, 11], [4, 12], [4, 13], [4, 14], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [5, 10], [5, 11], [5, 12], [5, 13], [5, 14], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12], [6, 13], [6, 14], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [7, 10], [7, 11], [7, 12], [7, 13], [7, 14], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [8, 10], [8, 11], [8, 12], [8, 13], [8, 14], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9], [9, 10], [9, 11], [9, 12], [9, 13], [9, 14], [10, 0], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5], [10, 6], [10, 7], [10, 8], [10, 9], [10, 10], [10, 11], [10, 12], [10, 13], [10, 14], [11, 0], [11, 1], [11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9], [11, 10], [11, 11], [11, 12], [11, 13], [11, 14], [12, 0], [12, 1], [12, 2], [12, 3], [12, 4], [12, 5], [12, 6], [12, 7], [12, 8], [12, 9], [12, 10], [12, 11], [12, 12], [12, 13], [12, 14], [13, 0], [13, 1], [13, 2], [13, 3], [13, 4], [13, 5], [13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12], [13, 13], [13, 14], [14, 0], [14, 1], [14, 2], [14, 3], [14, 4], [14, 5], [14, 6], [14, 7], [14, 8], [14, 9], [14, 10], [14, 11], [14, 12], [14, 13], [14, 14]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] External multi index: rank = 0 dims = [] indices = [[]] Precomputing integrals on reference element Reusing element from cache 900 entries computed in 0.00373 seconds Shape of reference tensor: (15, 15, 2, 2) Primary multi index: rank = 2 dims = [15, 15] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9], [0, 10], [0, 11], [0, 12], [0, 13], [0, 14], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8], [1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9], [2, 10], [2, 11], [2, 12], [2, 13], [2, 14], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [3, 6], [3, 7], [3, 8], [3, 9], [3, 10], [3, 11], [3, 12], [3, 13], [3, 14], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [4, 6], [4, 7], [4, 8], [4, 9], [4, 10], [4, 11], [4, 12], [4, 13], [4, 14], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [5, 9], [5, 10], [5, 11], [5, 12], [5, 13], [5, 14], [6, 0], [6, 1], [6, 2], [6, 3], [6, 4], [6, 5], [6, 6], [6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12], [6, 13], [6, 14], [7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [7, 10], [7, 11], [7, 12], [7, 13], [7, 14], [8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 6], [8, 7], [8, 8], [8, 9], [8, 10], [8, 11], [8, 12], [8, 13], [8, 14], [9, 0], [9, 1], [9, 2], [9, 3], [9, 4], [9, 5], [9, 6], [9, 7], [9, 8], [9, 9], [9, 10], [9, 11], [9, 12], [9, 13], [9, 14], [10, 0], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5], [10, 6], [10, 7], [10, 8], [10, 9], [10, 10], [10, 11], [10, 12], [10, 13], [10, 14], [11, 0], [11, 1], [11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9], [11, 10], [11, 11], [11, 12], [11, 13], [11, 14], [12, 0], [12, 1], [12, 2], [12, 3], [12, 4], [12, 5], [12, 6], [12, 7], [12, 8], [12, 9], [12, 10], [12, 11], [12, 12], [12, 13], [12, 14], [13, 0], [13, 1], [13, 2], [13, 3], [13, 4], [13, 5], [13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12], [13, 13], [13, 14], [14, 0], [14, 1], [14, 2], [14, 3], [14, 4], [14, 5], [14, 6], [14, 7], [14, 8], [14, 9], [14, 10], [14, 11], [14, 12], [14, 13], [14, 14]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] Internal multi index: rank = 0 dims = [] indices = [[]] Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]] External multi index: rank = 0 dims = [] indices = [[]] Computing representation of forms Compiler stage 2 finished in 0.0488141 seconds. Compiler stage 3: Optimizing intermediate representation -------------------------------------------------------- FErari not installed, skipping tensor optimizations Compiler stage 3 finished in 0.000169992 seconds. Compiler stage 4: Generating code --------------------------------- Generating code for 4 element(s) Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Removing unused variable: tmp2 Removing unused variable: tmp1 Removing unused variable: tmp7 Removing unused variable: tmp6 Removing unused variable: tmp5 Removing unused variable: tt Removing unused variable: ss Removing unused variable: rr Generating code for 4 dofmap(s) Generating code for integrals Generating code for forms Compiler stage 4 finished in 0.34178 seconds. Compiler stage 4.1: Generating additional wrapper code ------------------------------------------------------ Generating wrapper code for DOLFIN Compiler stage 4.1 finished in 0.000325918 seconds. Compiler stage 5: Formatting code --------------------------------- Output written to ./THStokes2D.h. Compiler stage 5 finished in 0.00102997 seconds. FFC finished in 0.420402 seconds. dolfin-1.3.0/bench/fem/assembly/cpp/forms/Poisson2DP2.h0000644000175000017500000022671312263015063022427 0ustar johannrjohannr// This code conforms with the UFC specification version 2.3.0 // and was automatically generated by FFC version 1.3.0. // // This code was generated with the option '-l dolfin' and // contains DOLFIN-specific wrappers that depend on DOLFIN. // // This code was generated with the following parameters: // // cache_dir: '' // convert_exceptions_to_warnings: False // cpp_optimize: True // cpp_optimize_flags: '-O2' // epsilon: 1e-14 // error_control: False // form_postfix: True // format: 'dolfin' // log_level: 10 // log_prefix: '' // no_ferari: True // optimize: True // output_dir: '.' // precision: 15 // quadrature_degree: 'auto' // quadrature_rule: 'auto' // representation: 'auto' // restrict_keyword: '' // split: False #ifndef __POISSON2DP2_H #define __POISSON2DP2_H #include #include #include #include /// This class defines the interface for a finite element. class poisson2dp2_finite_element_0: public ufc::finite_element { public: /// Constructor poisson2dp2_finite_element_0() : ufc::finite_element() { // Do nothing } /// Destructor virtual ~poisson2dp2_finite_element_0() { // Do nothing } /// Return a string identifying the finite element virtual const char* signature() const { return "FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 2, None)"; } /// Return the cell shape virtual ufc::shape cell_shape() const { return ufc::triangle; } /// Return the topological dimension of the cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the finite element function space virtual std::size_t space_dimension() const { return 6; } /// Return the rank of the value space virtual std::size_t value_rank() const { return 0; } /// Return the dimension of the value space for axis i virtual std::size_t value_dimension(std::size_t i) const { return 1; } /// Evaluate basis function i at given point x in cell virtual void evaluate_basis(std::size_t i, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Reset values *values = 0.0; switch (i) { case 0: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, -0.173205080756888, -0.1, 0.121716123890037, 0.0942809041582063, 0.0544331053951817}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.173205080756888, -0.1, 0.121716123890037, -0.0942809041582064, 0.0544331053951818}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.0, 0.2, 0.0, 0.0, 0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.23094010767585, 0.133333333333333, 0.0, 0.188561808316413, -0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, -0.23094010767585, 0.133333333333333, 0.0, -0.188561808316413, -0.163299316185545}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.0, -0.266666666666667, -0.243432247780074, 0.0, 0.0544331053951817}; // Compute value(s) for (unsigned int r = 0; r < 6; r++) { *values += coefficients0[r]*basisvalues[r]; }// end loop over 'r' break; } } } /// Evaluate all basis functions at given point x in cell virtual void evaluate_basis_all(double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Helper variable to hold values of a single dof. double dof_values = 0.0; // Loop dofs and call evaluate_basis for (unsigned int r = 0; r < 6; r++) { evaluate_basis(r, &dof_values, x, vertex_coordinates, cell_orientation); values[r] = dof_values; }// end loop over 'r' } /// Evaluate order n derivatives of basis function i at given point x in cell virtual void evaluate_basis_derivatives(std::size_t i, std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Reset values. Assuming that values is always an array. for (unsigned int r = 0; r < num_derivatives; r++) { values[r] = 0.0; }// end loop over 'r' // Call evaluate_basis if order of derivatives is equal to zero. if (n == 0) { evaluate_basis(i, values, x, vertex_coordinates, cell_orientation); return ; } // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 2) { return ; } // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Compute constants const double C0 = vertex_coordinates[2] + vertex_coordinates[4]; const double C1 = vertex_coordinates[3] + vertex_coordinates[5]; // Get coordinates and map to the reference (FIAT) element double X = (J[1]*(C1 - 2.0*x[1]) + J[3]*(2.0*x[0] - C0)) / detJ; double Y = (J[0]*(2.0*x[1] - C1) + J[2]*(C0 - 2.0*x[0])) / detJ; // Declare two dimensional array that holds combinations of derivatives and initialise unsigned int combinations[4][2]; for (unsigned int row = 0; row < 4; row++) { for (unsigned int col = 0; col < 2; col++) combinations[row][col] = 0; } // Generate combinations of derivatives for (unsigned int row = 1; row < num_derivatives; row++) { for (unsigned int num = 0; num < row; num++) { for (unsigned int col = n-1; col+1 > 0; col--) { if (combinations[row][col] + 1 > 1) combinations[row][col] = 0; else { combinations[row][col] += 1; break; } } } } // Compute inverse of Jacobian const double Jinv[2][2] = {{K[0], K[1]}, {K[2], K[3]}}; // Declare transformation matrix // Declare pointer to two dimensional array and initialise double transform[4][4]; for (unsigned int j = 0; j < num_derivatives; j++) { for (unsigned int k = 0; k < num_derivatives; k++) transform[j][k] = 1; } // Construct transformation matrix for (unsigned int row = 0; row < num_derivatives; row++) { for (unsigned int col = 0; col < num_derivatives; col++) { for (unsigned int k = 0; k < n; k++) transform[row][col] *= Jinv[combinations[col][k]][combinations[row][k]]; } } switch (i) { case 0: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, -0.173205080756888, -0.1, 0.121716123890037, 0.0942809041582063, 0.0544331053951817}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 1: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.173205080756888, -0.1, 0.121716123890037, -0.0942809041582064, 0.0544331053951818}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 2: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.0, 0.0, 0.2, 0.0, 0.0, 0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 3: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.23094010767585, 0.133333333333333, 0.0, 0.188561808316413, -0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 4: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, -0.23094010767585, 0.133333333333333, 0.0, -0.188561808316413, -0.163299316185545}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } case 5: { // Array of basisvalues double basisvalues[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; // Declare helper variables double tmp0 = (1.0 + Y + 2.0*X)/2.0; double tmp1 = (1.0 - Y)/2.0; double tmp2 = tmp1*tmp1; // Compute basisvalues basisvalues[0] = 1.0; basisvalues[1] = tmp0; basisvalues[3] = basisvalues[1]*1.5*tmp0 - basisvalues[0]*0.5*tmp2; basisvalues[2] = basisvalues[0]*(0.5 + 1.5*Y); basisvalues[4] = basisvalues[1]*(1.5 + 2.5*Y); basisvalues[5] = basisvalues[2]*(0.111111111111111 + Y*1.66666666666667) - basisvalues[0]*0.555555555555556; basisvalues[0] *= std::sqrt(0.5); basisvalues[2] *= std::sqrt(1.0); basisvalues[5] *= std::sqrt(1.5); basisvalues[1] *= std::sqrt(3.0); basisvalues[4] *= std::sqrt(4.5); basisvalues[3] *= std::sqrt(7.5); // Table(s) of coefficients static const double coefficients0[6] = \ {0.471404520791032, 0.0, -0.266666666666667, -0.243432247780074, 0.0, 0.0544331053951817}; // Tables of derivatives of the polynomial base (transpose). static const double dmats0[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.89897948556635, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 9.48683298050514, 0.0, 0.0, 0.0, 0.0}, {4, 0.0, 7.07106781186548, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}}; static const double dmats1[6][6] = \ {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.44948974278318, 0.0, 0.0, 0.0, 0.0, 0.0}, {4.24264068711928, 0.0, 0.0, 0.0, 0.0, 0.0}, {2.58198889747161, 4.74341649025257, -0.912870929175278, 0.0, 0.0, 0.0}, {2.0, 6.12372435695795, 3.53553390593274, 0.0, 0.0, 0.0}, {-2.3094010767585, 0.0, 8.16496580927726, 0.0, 0.0, 0.0}}; // Compute reference derivatives. // Declare array of derivatives on FIAT element. double derivatives[4]; for (unsigned int r = 0; r < 4; r++) { derivatives[r] = 0.0; }// end loop over 'r' // Declare derivative matrix (of polynomial basis). double dmats[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Declare (auxiliary) derivative matrix (of polynomial basis). double dmats_old[6][6] = \ {{1.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 1.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 0.0, 1.0}}; // Loop possible derivatives. for (unsigned int r = 0; r < num_derivatives; r++) { // Resetting dmats values to compute next derivative. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats[t][u] = 0.0; if (t == u) { dmats[t][u] = 1.0; } }// end loop over 'u' }// end loop over 't' // Looping derivative order to generate dmats. for (unsigned int s = 0; s < n; s++) { // Updating dmats_old with new values and resetting dmats. for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { dmats_old[t][u] = dmats[t][u]; dmats[t][u] = 0.0; }// end loop over 'u' }// end loop over 't' // Update dmats using an inner product. if (combinations[r][s] == 0) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats0[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } if (combinations[r][s] == 1) { for (unsigned int t = 0; t < 6; t++) { for (unsigned int u = 0; u < 6; u++) { for (unsigned int tu = 0; tu < 6; tu++) { dmats[t][u] += dmats1[t][tu]*dmats_old[tu][u]; }// end loop over 'tu' }// end loop over 'u' }// end loop over 't' } }// end loop over 's' for (unsigned int s = 0; s < 6; s++) { for (unsigned int t = 0; t < 6; t++) { derivatives[r] += coefficients0[s]*dmats[s][t]*basisvalues[t]; }// end loop over 't' }// end loop over 's' }// end loop over 'r' // Transform derivatives back to physical element for (unsigned int r = 0; r < num_derivatives; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r] += transform[r][s]*derivatives[s]; }// end loop over 's' }// end loop over 'r' break; } } } /// Evaluate order n derivatives of all basis functions at given point x in cell virtual void evaluate_basis_derivatives_all(std::size_t n, double* values, const double* x, const double* vertex_coordinates, int cell_orientation) const { // Call evaluate_basis_all if order of derivatives is equal to zero. if (n == 0) { evaluate_basis_all(values, x, vertex_coordinates, cell_orientation); return ; } // Compute number of derivatives. unsigned int num_derivatives = 1; for (unsigned int r = 0; r < n; r++) { num_derivatives *= 2; }// end loop over 'r' // Set values equal to zero. for (unsigned int r = 0; r < 6; r++) { for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = 0.0; }// end loop over 's' }// end loop over 'r' // If order of derivatives is greater than the maximum polynomial degree, return zeros. if (n > 2) { return ; } // Helper variable to hold values of a single dof. double dof_values[4]; for (unsigned int r = 0; r < 4; r++) { dof_values[r] = 0.0; }// end loop over 'r' // Loop dofs and call evaluate_basis_derivatives. for (unsigned int r = 0; r < 6; r++) { evaluate_basis_derivatives(r, n, dof_values, x, vertex_coordinates, cell_orientation); for (unsigned int s = 0; s < num_derivatives; s++) { values[r*num_derivatives + s] = dof_values[s]; }// end loop over 's' }// end loop over 'r' } /// Evaluate linear functional for dof i on the function f virtual double evaluate_dof(std::size_t i, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; switch (i) { case 0: { y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); return vals[0]; break; } case 1: { y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } case 2: { y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 3: { y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 4: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); return vals[0]; break; } case 5: { y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); return vals[0]; break; } } return 0.0; } /// Evaluate linear functionals for all dofs on the function f virtual void evaluate_dofs(double* values, const ufc::function& f, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Declare variables for result of evaluation double vals[1]; // Declare variable for physical coordinates double y[2]; y[0] = vertex_coordinates[0]; y[1] = vertex_coordinates[1]; f.evaluate(vals, y, c); values[0] = vals[0]; y[0] = vertex_coordinates[2]; y[1] = vertex_coordinates[3]; f.evaluate(vals, y, c); values[1] = vals[0]; y[0] = vertex_coordinates[4]; y[1] = vertex_coordinates[5]; f.evaluate(vals, y, c); values[2] = vals[0]; y[0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[3] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; f.evaluate(vals, y, c); values[4] = vals[0]; y[0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; y[1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; f.evaluate(vals, y, c); values[5] = vals[0]; } /// Interpolate vertex values from dof values virtual void interpolate_vertex_values(double* vertex_values, const double* dof_values, const double* vertex_coordinates, int cell_orientation, const ufc::cell& c) const { // Evaluate function and change variables vertex_values[0] = dof_values[0]; vertex_values[1] = dof_values[1]; vertex_values[2] = dof_values[2]; } /// Map coordinate xhat from reference cell to coordinate x in cell virtual void map_from_reference_cell(double* x, const double* xhat, const ufc::cell& c) const { throw std::runtime_error("map_from_reference_cell not yet implemented."); } /// Map from coordinate x in cell to coordinate xhat in reference cell virtual void map_to_reference_cell(double* xhat, const double* x, const ufc::cell& c) const { throw std::runtime_error("map_to_reference_cell not yet implemented."); } /// Return the number of sub elements (for a mixed element) virtual std::size_t num_sub_elements() const { return 0; } /// Create a new finite element for sub element i (for a mixed element) virtual ufc::finite_element* create_sub_element(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::finite_element* create() const { return new poisson2dp2_finite_element_0(); } }; /// This class defines the interface for a local-to-global mapping of /// degrees of freedom (dofs). class poisson2dp2_dofmap_0: public ufc::dofmap { public: /// Constructor poisson2dp2_dofmap_0() : ufc::dofmap() { // Do nothing } /// Destructor virtual ~poisson2dp2_dofmap_0() { // Do nothing } /// Return a string identifying the dofmap virtual const char* signature() const { return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 2, None)"; } /// Return true iff mesh entities of topological dimension d are needed virtual bool needs_mesh_entities(std::size_t d) const { switch (d) { case 0: { return true; break; } case 1: { return true; break; } case 2: { return false; break; } } return false; } /// Return the topological dimension of the associated cell shape virtual std::size_t topological_dimension() const { return 2; } /// Return the geometric dimension of the associated cell shape virtual std::size_t geometric_dimension() const { return 2; } /// Return the dimension of the global finite element function space virtual std::size_t global_dimension(const std::vector& num_global_entities) const { return num_global_entities[0] + num_global_entities[1]; } /// Return the dimension of the local finite element function space for a cell virtual std::size_t local_dimension() const { return 6; } /// Return the number of dofs on each cell facet virtual std::size_t num_facet_dofs() const { return 3; } /// Return the number of dofs associated with each cell entity of dimension d virtual std::size_t num_entity_dofs(std::size_t d) const { switch (d) { case 0: { return 1; break; } case 1: { return 1; break; } case 2: { return 0; break; } } return 0; } /// Tabulate the local-to-global mapping of dofs on a cell virtual void tabulate_dofs(std::size_t* dofs, const std::vector& num_global_entities, const ufc::cell& c) const { unsigned int offset = 0; dofs[0] = offset + c.entity_indices[0][0]; dofs[1] = offset + c.entity_indices[0][1]; dofs[2] = offset + c.entity_indices[0][2]; offset += num_global_entities[0]; dofs[3] = offset + c.entity_indices[1][0]; dofs[4] = offset + c.entity_indices[1][1]; dofs[5] = offset + c.entity_indices[1][2]; offset += num_global_entities[1]; } /// Tabulate the local-to-local mapping from facet dofs to cell dofs virtual void tabulate_facet_dofs(std::size_t* dofs, std::size_t facet) const { switch (facet) { case 0: { dofs[0] = 1; dofs[1] = 2; dofs[2] = 3; break; } case 1: { dofs[0] = 0; dofs[1] = 2; dofs[2] = 4; break; } case 2: { dofs[0] = 0; dofs[1] = 1; dofs[2] = 5; break; } } } /// Tabulate the local-to-local mapping of dofs on entity (d, i) virtual void tabulate_entity_dofs(std::size_t* dofs, std::size_t d, std::size_t i) const { if (d > 2) { throw std::runtime_error("d is larger than dimension (2)"); } switch (d) { case 0: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 0; break; } case 1: { dofs[0] = 1; break; } case 2: { dofs[0] = 2; break; } } break; } case 1: { if (i > 2) { throw std::runtime_error("i is larger than number of entities (2)"); } switch (i) { case 0: { dofs[0] = 3; break; } case 1: { dofs[0] = 4; break; } case 2: { dofs[0] = 5; break; } } break; } case 2: { break; } } } /// Tabulate the coordinates of all dofs on a cell virtual void tabulate_coordinates(double** dof_coordinates, const double* vertex_coordinates) const { dof_coordinates[0][0] = vertex_coordinates[0]; dof_coordinates[0][1] = vertex_coordinates[1]; dof_coordinates[1][0] = vertex_coordinates[2]; dof_coordinates[1][1] = vertex_coordinates[3]; dof_coordinates[2][0] = vertex_coordinates[4]; dof_coordinates[2][1] = vertex_coordinates[5]; dof_coordinates[3][0] = 0.5*vertex_coordinates[2] + 0.5*vertex_coordinates[4]; dof_coordinates[3][1] = 0.5*vertex_coordinates[3] + 0.5*vertex_coordinates[5]; dof_coordinates[4][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[4]; dof_coordinates[4][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[5]; dof_coordinates[5][0] = 0.5*vertex_coordinates[0] + 0.5*vertex_coordinates[2]; dof_coordinates[5][1] = 0.5*vertex_coordinates[1] + 0.5*vertex_coordinates[3]; } /// Return the number of sub dofmaps (for a mixed element) virtual std::size_t num_sub_dofmaps() const { return 0; } /// Create a new dofmap for sub dofmap i (for a mixed element) virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const { return 0; } /// Create a new class instance virtual ufc::dofmap* create() const { return new poisson2dp2_dofmap_0(); } }; /// This class defines the interface for the tabulation of the cell /// tensor corresponding to the local contribution to a form from /// the integral over a cell. class poisson2dp2_cell_integral_0_otherwise: public ufc::cell_integral { public: /// Constructor poisson2dp2_cell_integral_0_otherwise() : ufc::cell_integral() { // Do nothing } /// Destructor virtual ~poisson2dp2_cell_integral_0_otherwise() { // Do nothing } /// Tabulate the tensor for the contribution from a local cell virtual void tabulate_tensor(double* A, const double * const * w, const double* vertex_coordinates, int cell_orientation) const { // Number of operations (multiply-add pairs) for Jacobian data: 3 // Number of operations (multiply-add pairs) for geometry tensor: 8 // Number of operations (multiply-add pairs) for tensor contraction: 49 // Total number of operations (multiply-add pairs): 60 // Compute Jacobian double J[4]; compute_jacobian_triangle_2d(J, vertex_coordinates); // Compute Jacobian inverse and determinant double K[4]; double detJ; compute_jacobian_inverse_triangle_2d(K, detJ, J); // Set scale factor const double det = std::abs(detJ); // Compute geometry tensor const double G0_0_0 = det*(K[0]*K[0] + K[1]*K[1]); const double G0_0_1 = det*(K[0]*K[2] + K[1]*K[3]); const double G0_1_0 = det*(K[2]*K[0] + K[3]*K[1]); const double G0_1_1 = det*(K[2]*K[2] + K[3]*K[3]); // Compute element tensor A[0] = 0.5*G0_0_0 + 0.5*G0_0_1 + 0.5*G0_1_0 + 0.5*G0_1_1; A[1] = 0.166666666666667*G0_0_0 + 0.166666666666667*G0_1_0; A[2] = 0.166666666666667*G0_0_1 + 0.166666666666667*G0_1_1; A[3] = 0.0; A[4] = -0.666666666666667*G0_0_1 - 0.666666666666667*G0_1_1; A[5] = -0.666666666666667*G0_0_0 - 0.666666666666667*G0_1_0; A[6] = 0.166666666666667*G0_0_0 + 0.166666666666667*G0_0_1; A[7] = 0.5*G0_0_0; A[8] = -0.166666666666667*G0_0_1; A[9] = 0.666666666666666*G0_0_1; A[10] = 0.0; A[11] = -0.666666666666667*G0_0_0 - 0.666666666666666*G0_0_1; A[12] = 0.166666666666667*G0_1_0 + 0.166666666666667*G0_1_1; A[13] = -0.166666666666667*G0_1_0; A[14] = 0.5*G0_1_1; A[15] = 0.666666666666666*G0_1_0; A[16] = -0.666666666666666*G0_1_0 - 0.666666666666666*G0_1_1; A[17] = 0.0; A[18] = 0.0; A[19] = 0.666666666666666*G0_1_0; A[20] = 0.666666666666666*G0_0_1; A[21] = 1.33333333333333*G0_0_0 + 0.666666666666665*G0_0_1 + 0.666666666666665*G0_1_0 + 1.33333333333333*G0_1_1; A[22] = -1.33333333333333*G0_0_0 - 0.666666666666666*G0_0_1 - 0.666666666666665*G0_1_0; A[23] = -0.666666666666665*G0_0_1 - 0.666666666666667*G0_1_0 - 1.33333333333333*G0_1_1; A[24] = -0.666666666666667*G0_1_0 - 0.666666666666667*G0_1_1; A[25] = 0.0; A[26] = -0.666666666666666*G0_0_1 - 0.666666666666666*G0_1_1; A[27] = -1.33333333333333*G0_0_0 - 0.666666666666665*G0_0_1 - 0.666666666666666*G0_1_0; A[28] = 1.33333333333333*G0_0_0 + 0.666666666666666*G0_0_1 + 0.666666666666666*G0_1_0 + 1.33333333333333*G0_1_1; A[29] = 0.666666666666665*G0_0_1 + 0.666666666666667*G0_1_0; A[30] = -0.666666666666667*G0_0_0 - 0.666666666666667*G0_0_1; A[31] = -0.666666666666667*G0_0_0 - 0.666666666666666*G0_1_0; A[32] = 0.0; A[33] = -0.666666666666667*G0_0_1 - 0.666666666666665*G0_1_0 - 1.33333333333333*G0_1_1; A[34] = 0.666666666666667*G0_0_1 + 0.666666666666665*G0_1_0; A[35] = 1.33333333333333*G0_0_0 + 0.666666666666667*G0_0_1 + 0.666666666666667*G0_1_0 + 1.33333333333333*G0_1_1; } }; /// This class defines the interface for the assembly of the global /// tensor corresponding to a form with r + n arguments, that is, a /// mapping /// /// a : V1 x V2 x ... Vr x W1 x W2 x ... x Wn -> R /// /// with arguments v1, v2, ..., vr, w1, w2, ..., wn. The rank r /// global tensor A is defined by /// /// A = a(V1, V2, ..., Vr, w1, w2, ..., wn), /// /// where each argument Vj represents the application to the /// sequence of basis functions of Vj and w1, w2, ..., wn are given /// fixed functions (coefficients). class poisson2dp2_form_0: public ufc::form { public: /// Constructor poisson2dp2_form_0() : ufc::form() { // Do nothing } /// Destructor virtual ~poisson2dp2_form_0() { // Do nothing } /// Return a string identifying the form virtual const char* signature() const { return "4884659e9f56b85969137db1780899a012b0f8ac2eb0ef54c484988ea6e5b148cd5bd63694a246770d19fad2814ce840f2a677774c43e8eb81cac0f2a0472e0f"; } /// Return the rank of the global tensor (r) virtual std::size_t rank() const { return 2; } /// Return the number of coefficients (n) virtual std::size_t num_coefficients() const { return 0; } /// Return the number of cell domains virtual std::size_t num_cell_domains() const { return 0; } /// Return the number of exterior facet domains virtual std::size_t num_exterior_facet_domains() const { return 0; } /// Return the number of interior facet domains virtual std::size_t num_interior_facet_domains() const { return 0; } /// Return the number of point domains virtual std::size_t num_point_domains() const { return 0; } /// Return whether the form has any cell integrals virtual bool has_cell_integrals() const { return true; } /// Return whether the form has any exterior facet integrals virtual bool has_exterior_facet_integrals() const { return false; } /// Return whether the form has any interior facet integrals virtual bool has_interior_facet_integrals() const { return false; } /// Return whether the form has any point integrals virtual bool has_point_integrals() const { return false; } /// Create a new finite element for argument function i virtual ufc::finite_element* create_finite_element(std::size_t i) const { switch (i) { case 0: { return new poisson2dp2_finite_element_0(); break; } case 1: { return new poisson2dp2_finite_element_0(); break; } } return 0; } /// Create a new dofmap for argument function i virtual ufc::dofmap* create_dofmap(std::size_t i) const { switch (i) { case 0: { return new poisson2dp2_dofmap_0(); break; } case 1: { return new poisson2dp2_dofmap_0(); break; } } return 0; } /// Create a new cell integral on sub domain i virtual ufc::cell_integral* create_cell_integral(std::size_t i) const { return 0; } /// Create a new exterior facet integral on sub domain i virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const { return 0; } /// Create a new interior facet integral on sub domain i virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const { return 0; } /// Create a new point integral on sub domain i virtual ufc::point_integral* create_point_integral(std::size_t i) const { return 0; } /// Create a new cell integral on everywhere else virtual ufc::cell_integral* create_default_cell_integral() const { return new poisson2dp2_cell_integral_0_otherwise(); } /// Create a new exterior facet integral on everywhere else virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const { return 0; } /// Create a new interior facet integral on everywhere else virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const { return 0; } /// Create a new point integral on everywhere else virtual ufc::point_integral* create_default_point_integral() const { return 0; } }; // DOLFIN wrappers // Standard library includes #include // DOLFIN includes #include #include #include #include #include #include #include #include #include #include namespace Poisson2DP2 { class Form_a_FunctionSpace_0: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp2_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp2_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_0(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp2_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp2_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_0(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp2_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_0(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp2_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_0() { } }; class Form_a_FunctionSpace_1: public dolfin::FunctionSpace { public: //--- Constructors for standard function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp2_dofmap_0()), mesh))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp2_dofmap_0()), *mesh))) { // Do nothing } //--- Constructors for constrained function space, 2 different versions --- // Create standard function space (reference version) Form_a_FunctionSpace_1(const dolfin::Mesh& mesh, const dolfin::SubDomain& constrained_domain): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(mesh), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp2_dofmap_0()), mesh, dolfin::reference_to_no_delete_pointer(constrained_domain)))) { // Do nothing } // Create standard function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr mesh, boost::shared_ptr constrained_domain): dolfin::FunctionSpace(mesh, boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp2_dofmap_0()), *mesh, constrained_domain))) { // Do nothing } //--- Constructors for restricted function space, 2 different versions --- // Create restricted function space (reference version) Form_a_FunctionSpace_1(const dolfin::Restriction& restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction.mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp2_dofmap_0()), reference_to_no_delete_pointer(restriction)))) { // Do nothing } // Create restricted function space (shared pointer version) Form_a_FunctionSpace_1(boost::shared_ptr restriction): dolfin::FunctionSpace(dolfin::reference_to_no_delete_pointer(restriction->mesh()), boost::shared_ptr(new dolfin::FiniteElement(boost::shared_ptr(new poisson2dp2_finite_element_0()))), boost::shared_ptr(new dolfin::DofMap(boost::shared_ptr(new poisson2dp2_dofmap_0()), restriction))) { // Do nothing } // Copy constructor ~Form_a_FunctionSpace_1() { } }; class Form_a: public dolfin::Form { public: // Constructor Form_a(const dolfin::FunctionSpace& V1, const dolfin::FunctionSpace& V0): dolfin::Form(2, 0) { _function_spaces[0] = reference_to_no_delete_pointer(V0); _function_spaces[1] = reference_to_no_delete_pointer(V1); _ufc_form = boost::shared_ptr(new poisson2dp2_form_0()); } // Constructor Form_a(boost::shared_ptr V1, boost::shared_ptr V0): dolfin::Form(2, 0) { _function_spaces[0] = V0; _function_spaces[1] = V1; _ufc_form = boost::shared_ptr(new poisson2dp2_form_0()); } // Destructor ~Form_a() {} /// Return the number of the coefficient with this name virtual std::size_t coefficient_number(const std::string& name) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return 0; } /// Return the name of the coefficient with this number virtual std::string coefficient_name(std::size_t i) const { dolfin::dolfin_error("generated code for class Form", "access coefficient data", "There are no coefficients"); return "unnamed"; } // Typedefs typedef Form_a_FunctionSpace_0 TestSpace; typedef Form_a_FunctionSpace_1 TrialSpace; // Coefficients }; // Class typedefs typedef Form_a BilinearForm; typedef Form_a JacobianForm; typedef Form_a::TestSpace FunctionSpace; } #endif dolfin-1.3.0/bench/fem/assembly/cpp/forms.h0000644000175000017500000000531112263014601020367 0ustar johannrjohannr// Copyright (C) 2008-2009 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2008-07-22 // Last changed: 2010-05-03 #include #include "forms/Poisson2DP1.h" #include "forms/Poisson2DP2.h" #include "forms/Poisson2DP3.h" #include "forms/THStokes2D.h" #include "forms/StabStokes2D.h" #include "forms/Elasticity3D.h" #include "forms/NSEMomentum3D.h" #define SIZE_2D 256 #define SIZE_3D 32 using namespace dolfin; double bench_form(std::string form_name, double (*foo)(Form&)) { if (form_name == "poisson1") { UnitSquareMesh mesh(SIZE_2D, SIZE_2D); Poisson2DP1::FunctionSpace V(mesh); Poisson2DP1::BilinearForm form(V, V); return foo(form); } else if (form_name == "poisson2") { UnitSquareMesh mesh(SIZE_2D, SIZE_2D); Poisson2DP2::FunctionSpace V(mesh); Poisson2DP2::BilinearForm form(V, V); return foo(form); } else if (form_name == "poisson3") { UnitSquareMesh mesh(SIZE_2D, SIZE_2D); Poisson2DP3::FunctionSpace V(mesh); Poisson2DP3::BilinearForm form(V, V); return foo(form); } else if (form_name == "stokes") { UnitSquareMesh mesh(SIZE_2D, SIZE_2D); THStokes2D::FunctionSpace V(mesh); THStokes2D::BilinearForm form(V, V); return foo(form); } else if (form_name == "stabilization") { UnitSquareMesh mesh(SIZE_2D, SIZE_2D); StabStokes2D::FunctionSpace V(mesh); Constant h(1.0); StabStokes2D::BilinearForm form(V, V, h); return foo(form); } else if (form_name == "elasticity") { UnitCubeMesh mesh(SIZE_3D, SIZE_3D, SIZE_3D); Elasticity3D::FunctionSpace V(mesh); Elasticity3D::BilinearForm form(V, V); return foo(form); } else if (form_name == "navierstokes") { UnitCubeMesh mesh(SIZE_3D, SIZE_3D, SIZE_3D); NSEMomentum3D::FunctionSpace V(mesh); Constant w(1.0, 1.0, 1.0); Constant d1(1.0); Constant d2(1.0); Constant k(1.0); Constant nu(1.0); NSEMomentum3D::BilinearForm form(V, V, w, d1, d2, k, nu); return foo(form); } else { error("Unknown form: %s.", form_name.c_str()); } return 0.0; } dolfin-1.3.0/bench/fem/assembly/cpp/CMakeLists.txt0000644000175000017500000000202212263015065021631 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_fem_assembly_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(${PROJECT_NAME} main.cpp) # Target libraries target_link_libraries(${PROJECT_NAME} ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/fem/assembly/cpp/main.cpp0000644000175000017500000001167312263014601020530 0ustar johannrjohannr// Copyright (C) 2008-2010 Dag Lindbo, Anders Logg and Ilmar Wilbers // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2008-07-22 // Last changed: 2011-09-21 #include #include #include #include #include "forms.h" using namespace dolfin; double assemble_form(Form& form) { // Assemble once const double t0 = time(); Matrix A; Assembler assembler; assembler.assemble(A, form); return time() - t0; } double reassemble_form(Form& form) { // Assemble once Matrix A; Assembler assembler; assembler.assemble(A, form); // Reassemble const double t0 = time(); assembler.reset_sparsity = false; assembler.assemble(A, form); return time() - t0; } int main(int argc, char* argv[]) { info("Assembly for various forms and backends"); set_log_active(false); parameters["reorder_dofs_serial"] = false; // Forms std::vector forms; forms.push_back("poisson1"); forms.push_back("poisson2"); forms.push_back("poisson3"); forms.push_back("stokes"); forms.push_back("stabilization"); forms.push_back("elasticity"); forms.push_back("navierstokes"); // Backends std::vector backends; backends.push_back("uBLAS"); backends.push_back("PETSc"); backends.push_back("Epetra"); backends.push_back("STL"); // Override forms and backends with command-line arguments if (argc == 3) { forms.clear(); forms.push_back(argv[1]); backends.clear(); backends.push_back(argv[2]); } else if (argc != 1) { std::cout << "Usage: bench [form] [backend]" << std::endl; exit(1); } // Tables for results Table t0("Assemble total"); Table t1("Init dofmap"); Table t2("Build sparsity"); Table t3("Init tensor"); Table t4("Delete sparsity"); Table t5("Assemble cells"); Table t6("Overhead"); Table t7("Reassemble total"); // Benchmark assembly for (unsigned int i = 0; i < forms.size(); i++) { std::cout << "Form: " << forms[i] << std::endl; for (unsigned int j = 0; j < backends.size(); j++) { parameters["linear_algebra_backend"] = backends[j]; parameters["timer_prefix"] = backends[j]; std::cout << " Backend: " << backends[j] << std::endl; const double tt0 = bench_form(forms[i], assemble_form); const double tt1 = timing(backends[j] + t1.title(), true); const double tt2 = timing(backends[j] + t2.title(), true); const double tt3 = timing(backends[j] + t3.title(), true); const double tt4 = timing(backends[j] + t4.title(), true); const double tt5 = timing(backends[j] + t5.title(), true); t0(forms[i], backends[j]) = tt0; t1(forms[i], backends[j]) = tt1; t2(forms[i], backends[j]) = tt2; t3(forms[i], backends[j]) = tt3; t4(forms[i], backends[j]) = tt4; t5(forms[i], backends[j]) = tt5; t6(forms[i], backends[j]) = tt0 - tt1 - tt2 - tt3 - tt4 - tt5; std::cout << " BENCH " << forms[i] << "-" << backends[j] << " " << tt0 << std::endl; } } // Benchmark reassembly if (argc == 1) { for (unsigned int i = 0; i < forms.size(); i++) { std::cout << "Form: " << forms[i] << std::endl; for (unsigned int j = 0; j < backends.size(); j++) { parameters["linear_algebra_backend"] = backends[j]; parameters["timer_prefix"] = backends[j]; std::cout << " Backend: " << backends[j] << std::endl; t7(forms[i], backends[j]) = bench_form(forms[i], reassemble_form); } } } // Display results set_log_active(true); std::cout << std::endl; info(t0, true); std::cout << std::endl; info(t1, true); std::cout << std::endl; info(t2, true); std::cout << std::endl; info(t3, true); std::cout << std::endl; info(t4, true); std::cout << std::endl; info(t5, true); std::cout << std::endl; info(t6, true); if (argc == 1) std::cout << std::endl; info(t7, true); /* // Display LaTeX tables const bool print_latex = true; if (print_latex) { std::cout << std::endl << t0.str_latex(); //std::cout << std::endl << t1.str_latex(); std::cout << std::endl << t2.str_latex(); std::cout << std::endl << t3.str_latex(); std::cout << std::endl << t4.str_latex(); std::cout << std::endl << t5.str_latex(); std::cout << std::endl << t6.str_latex(); std::cout << std::endl << t7.str_latex(); } */ return 0; } dolfin-1.3.0/bench/fem/assembly/python/0000755000175000017500000000000012263014601017627 5ustar johannrjohannrdolfin-1.3.0/bench/fem/assembly/python/broken0000755000175000017500000000512612263014601021041 0ustar johannrjohannr# Copyright (C) 2008 Ilmar Wilbers # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Anders Logg, 2008. # # First added: 2008-06-04 # Last changed: 2008-07-21 # Be careful to first run the benchmark once in order for # the Python extensions to be created, or else the timings # will not be correct. from dolfin import * from time import time import sys def make_form(name, mesh): globals()['mesh'] = mesh execfile("../forms/" + name + '.form', globals()) try: return a except: print "No object 'a' to return in file %s.form" %name return None def bench_form(form, mesh, reps=1): totaltime = 0.0 t0 = time() A = assemble(form, mesh) totaltime += time() - t0 for i in range(reps - 1): t0 = time() assemble(form, mesh, tensor=A, reset_sparsity=False) totaltime += time() - t0 return totaltime / float(reps) def make_mesh(name, dim): if dim == 3: N = 32 mesh = UnitCube(N, N, N) return mesh else: N = 256 mesh = UnitSquare(N, N) return mesh if __name__ == "__main__": try: reps = int(sys.argv[1]) except: print 'Usage: %s number_of_repetitions [1]' %sys.argv[0] reps = 1 # Backends backends = ["uBLAS", "PETSc", "Epetra", "MTL4", "Assembly"] # Forms forms = ["Elasticity3D", "PoissonP1", "PoissonP2", "PoissonP3", "THStokes2D", "NSEMomentum3D", "StabStokes2D"] dolfin_set("output destination", "silent") results = Table("Assembly benchmark") for backend in backends: dolfin_set("linear algebra backend", backend) for form in forms: dim = 2 if not form.find("3D") > -1 else 3 m = make_mesh(form, dim) a = make_form(form, m) print "Assembling %s with %s" % (form, backend) t = bench_form(a, m, reps=reps) results.set(backend, form, t) dolfin_set("output destination", "terminal") print "" results.disp() summary() dolfin-1.3.0/bench/mesh/0000755000175000017500000000000012263014601014654 5ustar johannrjohannrdolfin-1.3.0/bench/mesh/unitcube/0000755000175000017500000000000012263014601016472 5ustar johannrjohannrdolfin-1.3.0/bench/mesh/unitcube/cpp/0000755000175000017500000000000012263015065017261 5ustar johannrjohannrdolfin-1.3.0/bench/mesh/unitcube/cpp/CMakeLists.txt0000644000175000017500000000202312263015065022016 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_mesh_unitcube_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(${PROJECT_NAME} main.cpp) # Target libraries target_link_libraries(${PROJECT_NAME} ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/mesh/unitcube/cpp/main.cpp0000644000175000017500000000227012263014601020705 0ustar johannrjohannr// Copyright (C) 2006-2010 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2006-11-01 // Last changed: 2010-05-03 #include using namespace dolfin; #define NUM_REPS 10 #define SIZE 128 int main(int argc, char* argv[]) { info("Creating unit cube of size %d x %d x %d (%d repetitions)", SIZE, SIZE, SIZE, NUM_REPS); parameters.parse(argc, argv); for (int i = 0; i < NUM_REPS; i++) { UnitCubeMesh mesh(SIZE, SIZE, SIZE); dolfin::cout << "Created unit cube: " << mesh << dolfin::endl; } return 0; } dolfin-1.3.0/bench/mesh/refinement/0000755000175000017500000000000012263014601017010 5ustar johannrjohannrdolfin-1.3.0/bench/mesh/refinement/cpp/0000755000175000017500000000000012263015065017577 5ustar johannrjohannrdolfin-1.3.0/bench/mesh/refinement/cpp/CMakeLists.txt0000644000175000017500000000202512263015065022336 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_mesh_refinement_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(${PROJECT_NAME} main.cpp) # Target libraries target_link_libraries(${PROJECT_NAME} ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/mesh/refinement/cpp/main.cpp0000644000175000017500000000243612263014601021227 0ustar johannrjohannr// Copyright (C) 2006-2010 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2006-11-01 // Last changed: 2012-12-12 #include using namespace dolfin; #define NUM_REPS 5 #define SIZE 4 int main(int argc, char* argv[]) { info("Uniform refinement of unit cube of size %d x %d x %d (%d refinements)", SIZE, SIZE, SIZE, NUM_REPS); parameters.parse(argc, argv); UnitCubeMesh unitcube_mesh(SIZE, SIZE, SIZE); Mesh mesh(unitcube_mesh); tic(); for (int i = 0; i < NUM_REPS; i++) { mesh = refine(mesh); dolfin::cout << "Refined mesh: " << mesh << dolfin::endl; } info("BENCH %g", toc()); return 0; } dolfin-1.3.0/bench/mesh/iteration/0000755000175000017500000000000012263014601016652 5ustar johannrjohannrdolfin-1.3.0/bench/mesh/iteration/cpp/0000755000175000017500000000000012263015065017441 5ustar johannrjohannrdolfin-1.3.0/bench/mesh/iteration/cpp/CMakeLists.txt0000644000175000017500000000202412263015065022177 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_mesh_iteration_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(${PROJECT_NAME} main.cpp) # Target libraries target_link_libraries(${PROJECT_NAME} ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/mesh/iteration/cpp/main.cpp0000644000175000017500000000256712263014601021076 0ustar johannrjohannr// Copyright (C) 2006-2010 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2006-11-01 // Last changed: 2012-12-12 #include using namespace dolfin; #define NUM_REPS 100 #define SIZE 128 int main(int argc, char* argv[]) { info("Iteration over entities of unit cube of size %d x %d x %d (%d repetitions)", SIZE, SIZE, SIZE, NUM_REPS); parameters.parse(argc, argv); UnitCubeMesh mesh(SIZE, SIZE, SIZE); int sum = 0; tic(); for (int i = 0; i < NUM_REPS; i++) { for (CellIterator c(mesh); !c.end(); ++c) for (VertexIterator v(*c); !v.end(); ++v) sum += v->index(); } info("BENCH %g", toc()); // To prevent optimizing the loop away info("Sum is %d", sum); return 0; } dolfin-1.3.0/bench/mesh/topology/0000755000175000017500000000000012263014601016530 5ustar johannrjohannrdolfin-1.3.0/bench/mesh/topology/cpp/0000755000175000017500000000000012263015065017317 5ustar johannrjohannrdolfin-1.3.0/bench/mesh/topology/cpp/CMakeLists.txt0000644000175000017500000000202312263015065022054 0ustar johannrjohannr# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME bench_mesh_topology_cpp) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable add_executable(${PROJECT_NAME} main.cpp) # Target libraries target_link_libraries(${PROJECT_NAME} ${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES}) dolfin-1.3.0/bench/mesh/topology/cpp/main.cpp0000644000175000017500000000264012263014601020744 0ustar johannrjohannr// Copyright (C) 2010 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2010-11-25 // Last changed: 2012-12-12 #include #include using namespace dolfin; #define NUM_REPS 5 #define SIZE 64 // Use for quick testing //#define NUM_REPS 2 //#define SIZE 32 int main(int argc, char* argv[]) { info("Creating cell-cell connectivity for unit cube of size %d x %d x %d (%d repetitions)", SIZE, SIZE, SIZE, NUM_REPS); set_log_level(DBG); parameters.parse(argc, argv); UnitCubeMesh mesh(SIZE, SIZE, SIZE); const int D = mesh.topology().dim(); for (int i = 0; i < NUM_REPS; i++) { mesh.clean(); mesh.init(D, D); dolfin::cout << "Created unit cube: " << mesh << dolfin::endl; } summary(); return 0; } dolfin-1.3.0/ChangeLog0000644000175000017500000017224612263014601014427 0ustar johannrjohannr1.3.0 [2014-01-07] - Feature: Enable assignment of sparse MeshValueCollections to MeshFunctions - Feature: Add free function assign that is used for sub function assignment - Feature: Add class FunctionAssigner that cache dofs for sub function assignment - Fix runtime dependency on checking swig version - Deprecate DofMap member methods vertex_to_dof_map and dof_to_vertex_map - Add free functions: vertex_to_dof_map and dof_to_vertex_map, and correct the ordering of the map. - Introduce CompiledSubDomain a more robust version of compiled_subdomains, which is now deprecated - CMake now takes care of calling the correct generate-foo script if so needed. - Feature: Add new built-in computational geometry library (BoundingBoxTree) - Feature: Add support for setting name and label to an Expression when constructed - Feature: Add support for passing a scalar GenericFunction as default value to a CompiledExpression - Feature: Add support for distance queries for 3-D meshes - Feature: Add PointIntegralSolver, which uses the MultiStageSchemes to solve local ODEs at Vertices - Feature: Add RKSolver and MultiStageScheme for general time integral solvers - Feature: Add support for assigning a Function with linear combinations of Functions, which lives in the same FunctionSpace - Added Python wrapper for SystemAssembler - Added a demo using compiled_extension_module with separate source files - Fixes for NumPy 1.7 - Remove DOLFIN wrapper code (moved to FFC) - Add set_options_prefix to PETScKrylovSolver - Remove base class BoundarCondition - Set block size for PETScMatrix when available from TensorLayout - Add support to get block compressed format from STLMatrix - Add detection of block structures in the dofmap for vector equations - Expose PETSc GAMG parameters - Modify SystemAssembler to support separate assembly of A and b 1.2.0 [2013-03-24] - Fixes bug where child/parent hierarchy in Python were destroyed - Add utility script dolfin-get-demos - MeshFunctions in python now support iterable protocol - Add timed VTK output for Mesh and MeshFunction in addtion to Functions - Expose ufc::dofmap::tabulate_entity_dofs to GenericDofMap interface - Expose ufc::dofmap::num_entity_dofs to GenericDofMap interface - Allow setting of row dof coordinates in preconditioners (only works with PETSc backed for now) - Expose more PETSc/ML parameters - Improve speed to tabulating coordinates in some DofMap functions - Feature: Add support for passing a Constant as default value to a CompiledExpression - Fix bug in dimension check for 1-D ALE - Remove some redundant graph code - Improvements in speed of parallel dual grapj builder - Fix bug in XMDF output for cell-based Functions - Fixes for latest version of clang compiler - LocalSolver class added to efficiently solve cell-wise problems - New implementation of periodic boundary conditions. Now incorporated into the dofmap - Optional arguments to assemblers removed - SymmetricAssembler removed - Domains for assemblers can now only be attached to forms - SubMesh can now be constructed without a CellFunction argument, if the MeshDomain contains marked celldomains. - MeshDomains are propagated to a SubMesh during construction - Simplify generation of a MeshFunction from MeshDomains: No need to call mesh_function with mesh - Rename dolfin-config.cmake to DOLFINConfig.cmake - Use CMake to configure JIT compilation of extension modules - Feature: Add vertex_to_dof_map to DofMap, which map vertex indices to dolfin dofs - Feature: Add support for solving on m dimensional meshes embedded in n >= m dimensions 1.1.0 [2013-01-08] - Add support for solving singular problems with Krylov solvers (PETSc only) - Add new typedef dolfin::la_index for consistent indexing with linear algebra backends. - Change default unsigned integer type to std::size_t - Add support to attaching operator null space to preconditioner (required for smoothed aggregation AMG) - Add basic interface to the PETSc AMG preconditioner - Make SCOTCH default graph partitioner (GNU-compatible free license, unlike ParMETIS) - Add scalable construction of mesh dual graph for mesh partitioning - Improve performance of mesh building in parallel - Add mesh output to SVG - Add support for Facet and cell markers to mesh converted from Diffpack - Add support for Facet and cell markers/attributes to mesh converted from Triangle - Change interface for auto-adaptive solvers: these now take the goal functional as a constructor argument - Add memory usage monitor: monitor_memory_usage() - Compare mesh hash in interpolate_vertex_values - Add hash() for Mesh and MeshTopology - Expose GenericVector::operator{+=,-=,+,-}(double) to Python - Add function Function::compute_vertex_values not needing a mesh argument - Add support for XDMF and HDF5 - Add new interface LinearOperator for matrix-free linear systems - Remove MTL4 linear algebra backend - Rename down_cast --> as_type in C++ / as_backend_type in Python - Remove KrylovMatrix interface - Remove quadrature classes - JIT compiled C++ code can now include a dolfin namespace - Expression string parsing now understand C++ namespace such as std::cosh - Fix bug in Expression so one can pass min, max - Fix bug in SystemAssembler, where mesh.init(D-1, D) was not called before assemble - Fix bug where the reference count of Py_None was not increased - Fix bug in reading TimeSeries of size smaller than 3 - Improve code design for Mesh FooIterators to avoid dubious down cast - Bug fix in destruction of PETSc user preconditioners - Add CellVolume(mesh) convenience wrapper to Python interface for UFL function - Fix bug in producing outward pointing normals of BoundaryMesh - Fix bug introduced by SWIG 2.0.5, where typemaps of templated typedefs are not handled correctly - Fix bug introduced by SWIG 2.0.5, which treated uint as Python long - Add check that sample points for TimeSeries are monotone - Fix handling of parameter "report" in Krylov solvers - Add new linear algebra backend "PETScCusp" for GPU-accelerated linear algebra - Add sparray method in the Python interface of GenericMatrix, requires scipy.sparse - Make methods that return a view of contiguous c-arrays, via a NumPy array, keep a reference from the object so it wont get out of scope - Add parameter: "use_petsc_signal_handler", which enables/disable PETSc system signals - Avoid unnecessary resize of result vector for A*b - MPI functionality for distributing values between neighbours - SystemAssembler now works in parallel with topological/geometric boundary search - New symmetric assembler with ability for stand-alone RHS assemble - Major speed-up of DirichletBC computation and mesh marking - Major speed-up of assembly of functions and expressions - Major speed-up of mesh topology computation - Add simple 2D and 3D mesh generation (via CGAL) - Add creation of mesh from triangulations of points (via CGAL) - Split the SWIG interface into six combined modules instead of one - Add has_foo to easy check what solver and preconditioners are available - Add convenience functions for listing available linear_algebra_backends - Change naming convention for cpp unit tests test.cpp -> Foo.cpp - Added cpp unit test for GenericVector::operator{-,+,*,/}= for all la backends - Add functionality for rotating meshes - Add mesh generation based on NETGEN constructive solid geometry - Generalize SparsityPattern and STLMatrix to support column-wise storage - Add interfaces to wrap PaStiX and MUMPS direct solvers - Add CoordinateMatrix class - Make STLMatrix work in parallel - Remove all tr1::tuple and use boost::tuple - Fix wrong link in Python quick reference. 1.0.0 [2011-12-07] - Change return value of IntervalCell::facet_area() 0.0 --> 1.0. - Recompile all forms with FFC 1.0.0 - Fix for CGAL 3.9 on OS X - Improve docstrings for Box and Rectangle - Check number of dofs on local patch in extrapolation 1.0-rc2 [2011-11-28] - Fix bug in 1D mesh refinement - Fix bug in handling of subdirectories for TimeSeries - Fix logic behind vector assignment, especially in parallel 1.0-rc1 [2011-11-21] - 33 bugs fixed - Implement traversal of bounding box trees for all codimensions - Edit and improve all error messages - Added [un]equality operator to FunctionSpace - Remove batch compilation of Expression (Expressions) from Python interface - Added get_value to MeshValueCollection - Added assignment operator to MeshValueCollection 1.0-beta2 [2011-10-26] - Change search path of parameter file to ~/.fenics/dolfin_parameters.xml - Add functions Parameters::has_parameter, Parameters::has_parameter_set - Added option to store all connectivities in a mesh for TimeSeries (false by default) - Added option for gzip compressed binary files for TimeSeries - Propagate global parameters to Krylov and LU solvers - Fix OpenMp assemble of scalars - Make OpenMP assemble over sub domains work - DirichletBC.get_boundary_values, FunctionSpace.collapse now return a dict in Python - Changed name of has_la_backend to has_linear_algebra_backend - Added has_foo functions which can be used instead of the HAS_FOO defines - Less trict check on kwargs for compiled Expression - Add option to not right-justify tables - Rename summary --> list_timings - Add function list_linear_solver_methods - Add function list_lu_solver_methods - Add function list_krylov_solver_methods - Add function list_krylov_solver_preconditioners - Support subdomains in SystemAssembler (not for interior facet integrals) - Add option functionality apply("flush") to PETScMatrix - Add option finalize_tensor=true to assemble functions - Solver parameters can now be passed to solve - Remove deprecated function Variable::disp() - Remove deprecated function logging() - Add new class MeshValueCollection - Add new class MeshDomains replacing old storage of boundary markers as part of MeshData. The following names are no longer supported: * boundary_facet_cells * boundary_facet_numbers * boundary_indicators * material_indicators * cell_domains * interior_facet_domains * exterior_facet_domains - Rename XML tag --> - Rename SubMesh data "global_vertex_indices" --> "parent_vertex_indices" - Get XML input/output of boundary markers working again - Get FacetArea working again 1.0-beta [2011-08-11] - Print percentage of non-zero entries when computing sparsity patterns - Use ufl.Real for Constant in Python interface - Add Dirichlet boundary condition argument to Python project function - Add remove functionality for parameter sets - Added out typemap for vector of shared_ptr objects - Fix typemap bug for list of shared_ptr objects - Support parallel XML vector io - Add support for gzipped XML output - Use pugixml for XML output - Move XML SAX parser to libxml2 SAX2 interface - Simplify XML io - Change interface for variational problems, class VariationalProblem removed - Add solve interface: solve(a == L), solve(F == 0) - Add new classes Linear/NonlinearVariationalProblem - Add new classes Linear/NonlinearVariationalSolver - Ad form class aliases ResidualForm and Jacobian form in wrapper code - Default argument to variables in Expression are passed as kwargs in the Python interface - Add has_openmp as utility function in Python interface - Add improved error reporting using dolfin_error - Use Boost to compute Legendre polynolials - Remove ode code - Handle parsing of unrecognized command-line parameters - All const std::vector& now return a read-only NumPy array - Make a robust macro for generating a NumPy array from data - Exposing low level fem functionality to Python, by adding a Cell -> ufc::cell typemap - Added ufl_cell as a method to Mesh in Python interface - Fix memory leak in Zoltan interface - Remove some 'new' for arrays in favour of std::vector - Added cell as an optional argument to Constant - Prevent the use of non contiguous NumPy arrays for most typemaps - Point can now be used to evaluate a Function or Expression in Python - Fixed dimension check for Function and Expression eval in Python - Fix compressed VTK output for tensors in 2D 0.9.11 [2011-05-16] - Change license from LGPL v2.1 to LGPL v3 or later - Moved meshconverter to dolfin_utils - Add support for conversion of material markers for Gmsh meshes - Add support for point sources (class PointSource) - Rename logging --> set_log_active - Add parameter "clear_on_write" to TimeSeries - Add support for input/output of nested parameter sets - Check for dimensions in linear solvers - Add support for automated error control for variational problems - Add support for refinement of MeshFunctions after mesh refinement - Change order of test and trial spaces in Form constructors - Make SWIG version >= 2.0 a requirement - Recognize subdomain data in Assembler from both Form and Mesh - Add storage for subdomains (cell_domains etc) in Form class - Rename MeshData "boundary facet cells" --> "boundary_facet_cells" - Rename MeshData "boundary facet numbers" --> "boundary_facet_numbers" - Rename MeshData "boundary indicators" --> "boundary_indicators" - Rename MeshData "exterior facet domains" --> "exterior_facet_domains" - Updates for UFC 2.0.1 - Add FiniteElement::evaluate_basis_derivatives_all - Add support for VTK output of facet-based MeshFunctions - Change default log level from PROGRESS to INFO - Add copy functions to FiniteElement and DofMap - Simplify DofMap - Interpolate vector values when reading from time series 0.9.10 [2011-02-23] - Updates for UFC 2.0.0 - Handle TimeSeries stored backward in time (automatic reversal) - Automatic storage of hierarchy during refinement - Remove directory/library 'main', merged into 'common' - dolfin_init --> init, dolfin_set_precision --> set_precision - Remove need for mesh argument to functional assembly when possible - Add function set_output_stream - Add operator () for evaluation at points for Function/Expression in C++ - Add abs() to GenericVector interface - Fix bug for local refinement of manifolds - Interface change: VariationalProblem now takes: a, L or F, (dF) - Map linear algebra objects to processes consistently with mesh parition - Lots of improvemenst to parallel assembly, dof maps and linear algebra - Add lists supported_elements and supported_elements_for_plotting in Python - Add script dolfin-plot for plotting meshes and elements from the command-line - Add support for plotting elements from Python - Add experimental OpenMP assembler - Thread-safe fixed in Function class - Make GenericFunction::eval thread-safe (Data class removed) - Optimize and speedup topology computation (mesh.init()) - Add function Mesh::clean() for cleaning out auxilliary topology data - Improve speed and accuracy of timers - Fix bug in 3D uniform mesh refinement - Add built-in meshes UnitTriangle and UnitTetrahedron - Only create output directories when they don't exist - Make it impossible to set the linear algebra backend to something illegal - Overload value_shape instead of dim for userdefined Python Expressions - Permit unset parameters - Search only for BLAS library (not cblas.h) 0.9.9 [2010-09-01] - Change build system to CMake - Add named MeshFunctions: VertexFunction, EdgeFunction, FaceFunction, FacetFunction, CellFunction - Allow setting constant boundary conditions directly without using Constant - Allow setting boundary conditions based on string ("x[0] == 0.0") - Create missing directories if specified as part of file names - Allow re-use of preconditioners for most backends - Fixes for UMFPACK solver on some 32 bit machines - Provide access to more Hypre preconditioners via PETSc - Updates for SLEPc 3.1 - Improve and implement re-use of LU factorizations for all backends - Fix bug in refinement of MeshFunctions 0.9.8 [2010-07-01] - Optimize and improve StabilityAnalysis. - Use own implementation of binary search in ODESolution (takes advantage of previous values as initial guess) - Improve reading ODESolution spanning multiple files - Dramatic speedup of progress bar (and algorithms using it) - Fix bug in writing meshes embedded higher dimensions to M-files - Zero vector in uBLASVector::resize() to fix spurious bug in Krylov solver - Handle named fields (u.rename()) in VTK output - Bug fix in computation of FacetArea for tetrahedrons - Add support for direct plotting of Dirichlet boundary conditions: plot(bc) - Updates for PETSc 3.1 - Add relaxation parameter to NewtonSolver - Implement collapse of renumbered dof maps (serial and parallel) - Simplification of DofMapBuilder for parallel dof maps - Improve and simplify DofMap - Add Armadillo dependency for dense linear algebra - Remove LAPACKFoo wrappers - Add abstract base class GenericDofMap - Zero small values in VTK output to avoid VTK crashes - Handle MeshFunction/markers in homogenize bc - Make preconditioner selectable in VariationalProblem (new parameter) - Read/write meshes in binary format - Add parameter "use_ident" in DirichletBC - Issue error by default when solvers don't converge (parameter "error_on_convergence") - Add option to print matrix/vector for a VariationalProblem - Trilinos backend now works in parallel - Remove Mesh refine members functions. Use free refine(...) functions instead - Remove AdapativeObjects - Add Stokes demo using the MINI element - Interface change: operator+ now used to denote enriched function spaces - Interface change: operator+ --> operator* for mixed elements - Add option 'allow_extrapolation' useful when interpolating to refined meshes - Add SpatialCoordinates demo - Add functionality for accessing time series sample times: vector_times(), mesh_times() - Add functionality for snapping mesh to curved boundaries during refinement - Add functionality for smoothing the boundary of a mesh - Speedup assembly over exterior facets by not using BoundaryMesh - Mesh refinement improvements, remove unecessary copying in Python interface - Clean PETSc and Epetra Krylov solvers - Add separate preconditioner classes for PETSc and Epetra solvers - Add function ident_zeros for inserting one on diagonal for zero rows - Add LU support for Trilinos interface 0.9.7 [2010-02-17] - Add support for specifying facet orientation in assembly over interior facets - Allow user to choose which LU package PETScLUSolver uses - Add computation of intersection between arbitrary mesh entities - Random access to MeshEntitiyIterators - Modify SWIG flags to prevent leak when using SWIG director feature - Fix memory leak in std::vector typemaps - Add interface for SCOTCH for parallel mesh partitioning - Bug fix in SubDomain::mark, fixes bug in DirichletBC based on SubDomain::inside - Improvements in time series class, recognizing old stored values - Add FacetCell class useful in algorithms iterating over boundary facets - Rename reconstruct --> extrapolate - Remove GTS dependency 0.9.6 [2010-02-03] - Simplify access to form compiler parameters, now integrated with global parameters - Add DofMap member function to return set of dofs - Fix memory leak in the LA interface - Do not import cos, sin, exp from NumPy to avoid clash with UFL functions - Fix bug in MTL4Vector assignment - Remove sandbox (moved to separate repository) - Remove matrix factory (dolfin/mf) - Update .ufl files for changes in UFL - Added swig/import/foo.i for easy type importing from dolfin modules - Allow optional argument cell when creating Expression - Change name of Expression argument cpparg --> cppcode - Add simple constructor (dim0, dim1) for C++ matrix Expressions - Add example demonstrating the use of cpparg (C++ code in Python) - Add least squares solver for dense systems (wrapper for DGELS) - New linear algebra wrappers for LAPACK matrices and vectors - Experimental support for reconstruction of higher order functions - Modified interface for eval() and inside() in C++ using Array - Introduce new Array class for simplified wrapping of arrays in SWIG - Improved functionality for intersection detection - Reimplementation of intersection detection using CGAL 0.9.5 [2009-12-03] - Set appropriate parameters for symmetric eigenvalue problems with SLEPc - Fix for performance regression in recent uBLAS releases - Simplify Expression interface: f = Expression("sin(x[0])") - Simplify Constant interface: c = Constant(1.0) - Fix bug in periodic boundary conditions - Add simple script dolfin-tetgen for generating DOLFIN XML meshes from STL - Make XML parser append/overwrite parameter set when reading parameters from file - Refinement of function spaces and automatic interpolation of member functions - Allow setting global parameters for Krylov solver - Fix handling of Constants in Python interface to avoid repeated JIT compilation - Allow simple specification of subdomains in Python without needing to subclass SubDomain - Add function homogenize() for simple creation of homogeneous BCs from given BCs - Add copy constructor and possibility to change value for DirichletBC - Add simple wrapper for ufl.cell.n. FacetNormal(mesh) now works again in Python. - Support apply(A), apply(b) and apply(b, x) in PeriodicBC - Enable setting spectral transformation for SLEPc eigenvalue solver 0.9.4 [2009-10-12] - Remove set, get and operator() methods from MeshFunction - Added const and none const T &operator[uint/MeshEntity] to MeshFunction - More clean up in SWIG interface files, remove global renames and ignores - Update Python interface to Expression, with extended tests for value ranks - Removed DiscreteFunction class - Require value_shape and geometric_dimension in Expression - Introduce new class Expression replacing user-defined Functions - interpolate_vertex_values --> compute_vertex_values - std::map replaces generated CoefficientSet code - Cleanup logic in Function class as a result of new Expression class - Introduce new Coefficient base class for form coefficients - Replace CellSize::min,max by Mesh::hmin,hmax - Use MUMPS instead of UMFPACK as default direct solver in both serial and parallel - Fix bug in SystemAssembler - Remove support for PETSc 2.3 and support PETSc 3.0.0 only - Remove FacetNormal Function. Use UFL facet normal instead. - Add update() function to FunctionSpace and DofMap for use in adaptive mesh refinement - Require mesh in constructor of functionals (C++) or argument to assemble (Python) 0.9.3 [2009-09-25] - Add global parameter "ffc_representation" for form representation in FFC JIT compiler - Make norm() function handle both vectors and functions in Python - Speedup periodic boundary conditions and make work for mixed (vector-valued) elements - Add possibilities to use any number numpy array when assigning matrices and vectors - Add possibilities to use any integer numpy array for indices in matrices and vectors - Fix for int typemaps in PyDOLFIN - Split mult into mult and transpmult - Filter out PETSc argument when parsing command-line parameters - Extend comments to SWIG interface files - Add copyright statements to SWIG interface files (not finished yet) - Add typemaps for misc std::vector in PyDOLFIN - Remove dependencies on std_vector.i reducing SWIG wrapper code size - Use relative %includes in dolfin.i - Changed names on SWIG interface files dolfin_foo.i -> foo.i - Add function interpolate() in Python interface - Fix typmaps for uint in python 2.6 - Use TypeError instead of ValueError in typechecks in typmaps.i - Add in/out shared_ptr typemaps for PyDOLFIN - Fix JIT compiling in parallel - Add a compile_extension_module function in PyDOLFIN - Fix bug in Python vector assignment - Add support for compressed base64 encoded VTK files (using zlib) - Add support for base64 encoded VTK files - Experimental support for parallel assembly and solve - Bug fix in project() function, update to UFL syntax - Remove disp() functions and replace by info(foo, true) - Add fem unit test (Python) - Clean up SystemAssembler - Enable assemble_system through PyDOLFIN - Add 'norm' to GenericMatrix - Efficiency improvements in NewtonSolver - Rename NewtonSolver::get_iteration() to NewtonSolver::iteration() - Improvements to EpetraKrylovSolver::solve - Add constructor Vector::Vector(const GenericVector& x) - Remove SCons deprecation warnings - Memory leak fix in PETScKrylovSolver - Rename dolfin_assert -> assert and use C++ version - Fix debug/optimise flags - Remove AvgMeshSize, InvMeshSize, InvFacetArea from SpecialFunctions - Rename MeshSize -> CellSize - Rewrite parameter system with improved support for command-line parsing, localization of parameters (per class) and usability from Python - Remove OutflowFacet from SpecialFunctions - Rename interpolate(double*) --> interpolate_vertex_values(double*) - Add Python version of Cahn-Hilliard demo - Fix bug in assemble.py - Permit interpolation of functions between non-matching meshes - Remove Function::Function(std::string filename) - Transition to new XML io - Remove GenericSparsityPattern::sort - Require sorted/unsorted parameter in SparsityPattern constructor - Improve performance of SparsityPattern::insert - Replace enums with strings for linear algebra and built-in meshes - Allow direct access to Constant value - Initialize entities in MeshEntity constructor automatically and check range - Add unit tests to the memorycheck - Add call to clean up libxml2 parser at exit - Remove unecessary arguments in DofMap member functions - Remove reference constructors from DofMap, FiniteElement and FunctionSpace - Use a shared_ptr to store the mesh in DofMap objects - Interface change for wrapper code: PoissonBilinearForm --> Poisson::BilinearForm - Add function info_underline() for writing underlined messages - Rename message() --> info() for "compatibility" with Python logging module - Add elementwise multiplication in GeneriVector interface - GenericVector interface in PyDOLFIN now support the sequence protocol - Rename of camelCaps functions names: fooBar --> foo_bar Note: mesh.numVertices() --> mesh.num_vertices(), mesh.numCells() --> mesh.num_cells() - Add slicing capabilities for GenericMatrix interface in PyDOLFIN (only getitem) - Add slicing capabilities for GenericVector interface in PyDOLFIN - Add sum to GenericVector interface 0.9.2 [2009-04-07] - Enable setting parameters for Newton solver in VariationalProblem - Simplified and improved implementation of C++ plotting, calling Viper on command-line - Remove precompiled elements and projections - Automatically interpolate user-defined functions on assignment - Add new built-in function MeshCoordinates, useful in ALE simulations - Add new constructor to Function class, Function(V, "vector.xml") - Remove class Array (using std::vector instead) - Add vector_mapping data to MeshData - Use std::vector instead of Array in MeshData - Add assignment operator and copy constructor for MeshFunction - Add function mesh.move(other_mesh) for moving mesh according to matching mesh (for FSI) - Add function mesh.move(u) for moving mesh according to displacement function (for FSI) - Add macro dolfin_not_implemented() - Add new interpolate() function for interpolation of user-defined function to discrete - Make _function_space protected in Function - Added access to crs data from python for uBLAS and MTL4 backendg 0.9.1 [2009-02-17] - Check Rectangle and Box for non-zero dimensions - ODE solvers now solve the dual problem - New class SubMesh for simple extraction of matching meshes for sub domains - Improvements of multiprecision ODE solver - Fix Function class copy constructor - Bug fixes for errornorm(), updates for new interface - Interface update for MeshData: createMeshFunction --> create_mesh_function etc - Interface update for Rectangle and Box - Add elastodynamics demo - Fix memory leak in IntersectionDetector/GTSInterface - Add check for swig version, in jit and compile functions - Bug fix in dolfin-order script for gzipped files - Make shared_ptr work across C++/Python interface - Replace std::tr1::shared_ptr with boost::shared_ptr - Bug fix in transfinite mean-value interpolation - Less annoying progress bar (silent when progress is fast) - Fix assignment operator for MeshData - Improved adaptive mesh refinement (recursive Rivara) producing better quality meshes 0.9.0 [2009-01-05] - Cross-platform fixes - PETScMatrix::copy fix - Some Trilinos fixes - Improvements in MeshData class - Do not use initial guess in Newton solver - Change OutflowFacet to IsOutflowFacet and change syntax - Used shared_ptr for underling linear algebra objects - Cache subspaces in FunctionSpace - Improved plotting, now support plot(grad(u)), plot(div(u)) etc - Simple handling of JIT-compiled functions - Sign change (bug fix) in increment for Newton solver - New class VariationalProblem replacing LinearPDE and NonlinearPDE - Parallel parsing and partitioning of meshes (experimental) - Add script dolfin-order for ordering mesh files - Add new class SubSpace (replacing SubSystem) - Add new class FunctionSpace - Complete redesign of Function class hierarchy, now a single Function class - Increased use of shared_ptr in Function, FunctionSpace, etc - New interface for boundary conditions, form not necessary - Allow simple setting of coefficient functions based on names (not their index) - Don't order mesh automatically, meshes must now be ordered explicitly - Simpler definition of user-defined functions (constructors not necessary) - Make mesh iterators const to allow for const-correct Mesh code 0.8.1 [2008-10-20] - Add option to use ML multigrid preconditioner through PETSc - Interface change for ODE solvers: uBLASVector --> double* - Remove homotopy solver - Remove typedef real, now using plain double instead - Add various operators -=, += to GenericMatrix - Don't use -Werror when compiling SWIG generated code - Remove init(n) and init(m, n) from GenericVector/Matrix. Use resize and zero instead - Add new function is_combatible() for checking compatibility of boundary conditions - Use x as initial guess in Krylov solvers (PETSc, uBLAS, ITL) - Add new function errornorm() - Add harmonic ALE mesh smoothing - Refinements of Graph class - Add CholmodCholeskySlover (direct solver for symmetric matrices) - Implement application of Dirichlet boundary conditions within assembly loop - Improve efficiency of SparsityPattern - Allow a variable number of smoothings - Add class Table for pretty-printing of tables - Add experimental MTL4 linear algebra backend - Add OutflowFacet to SpecialFunctions for DG transport problems - Remove unmaintained OpenDX file format - Fix problem with mesh smoothing near nonconvex corners - Simple projection of functions in Python - Add file format: XYZ for use with Xd3d - Add built-in meshes: UnitCircle, Box, Rectangle, UnitSphere 0.8.0 [2008-06-23] - Fix input of matrix data from XML - Add function normalize() - Integration with VMTK for reading DOLFIN XML meshes produced by VMTK - Extend mesh XML format to handle boundary indicators - Add support for attaching arbitrarily named data to meshes - Add support for dynamically choosing the linear algebra backend - Add Epetra/Trilinos linear solvers - Add setrow() to matrix interface - Add new solver SingularSolver for solving singular (pressure) systems - Add MeshSize::min(), max() for easy computation of smallest/largest mesh size - LinearSolver now handles all backends and linear solvers - Add access to normal in Function, useful for inflow boundary conditions - Remove GMRES and LU classes, use solve() instead - Improve solve() function, now handles both LU and Krylov + preconditioners - Add ALE mesh interpolation (moving mesh according to new boundary coordinates) 0.7.3 [2008-04-30] - Add support for Epetra/Trilinos - Bug fix for order of values in interpolate_vertex_values, now according to UFC - Boundary meshes are now always oriented with respect to outward facet normals - Improved linear algebra, both in C++ and Python - Make periodic boundary conditions work in Python - Fix saving of user-defined functions - Improve plotting - Simple computation of various norms of functions from Python - Evaluation of Functions at arbitrary points in a mesh - Fix bug in assembling over exterior facets (subdomains were ignored) - Make progress bar less annoying - New scons-based build system replaces autotools - Fix bug when choosing iterative solver from Python 0.7.2 [2008-02-18] - Improve sparsity pattern generator efficiency - Dimension-independent sparsity pattern generator - Add support for setting strong boundary values for DG elements - Add option setting boundary conditions based on geometrical search - Check UMFPACK return argument for warnings/errors - Simplify setting simple Dirichlet boundary conditions - Much improved integration with FFC in PyDOLFIN - Caching of forms by JIT compiler now works - Updates for UFC 1.1 - Catch exceptions in PyDOLFIN - Work on linear algebra interfaces GenericTensor/Matrix/Vector - Add linear algebra factory (backend) interface - Add support for 1D meshes - Make Assembler independent of linear algebra backend - Add manager for handling sub systems (PETSc and MPI) - Add parallel broadcast of Mesh and MeshFunction - Add experimental support for parallel assembly - Use PETSc MPI matrices when running in parallel - Add predefined functions FacetNormal and AvgMeshSize - Add left/right/crisscross options for UnitSquare - Add more Python demos - Add support for Exodus II format in dolfin-convert - Autogenerate docstrings for PyDOLFIN - Various small bug fixes and improvements 0.7.1 [2007-08-31] - Integrate FFC form language into PyDOLFIN - Just-in-time (JIT) compilation of variational forms - Conversion from from Diffpack grid format to DOLFIN XML - Name change: BoundaryCondition --> DirichletBC - Add support for periodic boundary conditions: class PeriodicBC - Redesign default linear algebra interface (Matrix, Vector, KrylovSolver, etc) - Add function to return Vector associated with a DiscreteFunction 0.7.0-1 [2007-06-22] - Recompile all forms with latest FFC release - Remove typedefs SparseMatrix and SparseVector - Fix includes in LinearPDE - Rename DofMaps -> DofMapSet 0.7.0 [2007-06-20] - Move to UFC interface for code generation - Major rewrite, restructure, cleanup - Add support for Brezzi-Douglas-Marini (BDM) elements - Add support for Raviart-Thomas (RT) elements - Add support for Discontinuous Galerkin (DG) methods - Add support for mesh partitioning (through SCOTCH) - Handle both UMFPACK and UFSPARSE - Local mesh refinement - Mesh smoothing - Built-in plotting (through Viper) - Cleanup log system - Numerous fixes for mesh, in particular MeshFunction - Much improved Python bindings for mesh - Fix Python interface for vertex and cell maps in boundary computation 0.6.4 [2006-12-01] - Switch from Python Numeric to Python NumPy - Improved mesh Python bindings - Add input/output support for MeshFunction - Change Mesh::vertices() --> Mesh::coordinates() - Fix bug in output of mesh to MATLAB format - Add plasticty module (experimental) - Fix configure test for Python dev (patch from Ã…smund ØdegÃ¥rd) - Add mesh benchmark - Fix memory leak in mesh (data not deleted correctly in MeshTopology) - Fix detection of curses libraries - Remove Tecplot output format 0.6.3 [2006-10-27] - Move to new mesh library - Remove dolfin-config and move to pkg-config - Remove unused classes PArray, PList, Table, Tensor - Visualization of 2D solutions in OpenDX is now supported (3D supported before) - Add support for evaluation of functionals - Fix bug in Vector::sum() for uBLAS vectors 0.6.2-1 [2006-09-06] - Fix compilation error when using --enable-petsc (dolfin::uBLASVector::PETScVector undefined) 0.6.2 [2006-09-05] - Finish chapter in manual on linear algebra - Enable PyDOLFIN by default, use --disable-pydolfin to disable - Disable PETSc by default, use --enable-petsc to enable - Modify ODE solver interface for u0() and f() - Add class ConvectionMatrix - Readd classes LoadVector, MassMatrix, StiffnessMatrix - Add matrix factory for simple creation of standard finite element matrices - Collect static solvers in LU and GMRES - Bug fixes for Python interface PyDOLFIN - Enable use of direct solver for ODE solver (experimental) - Remove demo bistable - Restructure and cleanup linear algebra - Use UMFPACK for LU solver with uBLAS matrix types - Add templated wrapper class for different uBLAS matrix types - Add ILU preconditioning for uBLAS matrices - Add Krylov solver for uBLAS sparse matrices (GMRES and BICGSTAB) - Add first version of new mesh library (NewMesh, experimental) - Add Parametrized::readParameters() to trigger reading of values on set() - Remove output of zeros in Octave matrix file format - Use uBLAS-based vector for Vector if PETSc disabled - Add wrappers for uBLAS compressed_matrix class - Compute eigenvalues using SLEPc (an extension of PETSc) - Clean up assembly and linear algebra - Add function to solve Ax = b for dense matrices and dense vectors - Make it possible to compile without PETSc (--disable-petsc) - Much improved ODE solvers - Complete multi-adaptive benchmarks reaction and wave - Assemble boundary integrals - FEM class cleaned up. - Fix multi-adaptive benchmark problem reaction - Small fixes for Intel C++ compiler version 9.1 - Test for Intel C++ compiler and configure appropriately - Add new classes DenseMatrix and DenseVector (wrappers for ublas) - Fix bug in conversion from Gmsh format 0.6.1 [2006-03-28] - Regenerate build system in makedist script - Update for new FFC syntax: BasisFunction --> TestFunction, TrialFunction - Fixes for conversion script dolfin-convert - Initial cleanups and fixes for ODE solvers - Numerous small fixes to improve portability - Remove dolfin:: qualifier on output << in Parameter.h - Don't use anonymous classes in demos, gives errors with some compilers - Remove KrylovSolver::solver() - Fix bug in convection-diffusion demo (boundary condition for pressure), use direct solver - LinearPDE and NewonSolver use umfpack LU solver by default (if available) when doing direct solve - Set PETSc matrix type through Matrix constructor - Allow linear solver and preconditioner type to be passed to NewtonSolver - Fix bug in Stokes demos (wrong boundary conditions) - Cleanup Krylov solver - Remove KrylovSolver::setPreconditioner() etc. and move to constructors - Remove KrylovSolver::setRtol() etc. and replace with parameters - Fix remaining name changes: noFoo() --> numFoo() - Add Cahn-Hilliard equation demo - NewtonSolver option to use residual or incremental convergence criterion - Add separate function to nls to test for convergence of Newton iterations - Fix bug in dolfin-config (wrong version number) 0.6.0 [2006-03-01] - Fix bug in XML output format (writing multiple objects) - Fix bug in XML matrix output format (handle zero rows) - Add new nonlinear PDE demo - Restructure PDE class to use envelope-letter design - Add precompiled finite elements for q <= 5 - Add FiniteElementSpec and factor function for FiniteElement - Add input/output of Function to DOLFIN XML - Name change: dof --> node - Name change: noFoo() --> numFoo() - Add conversion from gmsh format in dolfin-convert script - Updates for PETSc 2.3.1 - Add new type of Function (constant) - Simplify use of Function class - Add new demo Stokes + convection-diffusion - Add new demo Stokes (equal-order stabilized) - Add new demo Stokes (Taylor-Hood) - Add new parameter for KrylovSolvers: "monitor convergence" - Add conversion script dolfin-convert for various mesh formats - Add new demo elasticity - Move poisson demo to src/demo/pde/poisson - Move to Mercurial (hg) from CVS - Use libtool to build libraries (including shared) 0.5.12 [2006-01-12] - Make Stokes solver dimension independent (2D/3D) - Make Poisson solver dimension independent (2D/3D) - Fix sparse matrix output format for MATLAB - Modify demo problem for Stokes, add exact solution and compute error - Change interface for boundary conditions: operator() --> eval() - Add two benchmark problems for the Navier-Stokes solver - Add support for 2D/3D selection in Navier-Stokes solver - Move tic()/toc() to timing.h - Navier-Stokes solver back online - Make Solver a subclass of Parametrized - Add support for localization of parameters - Redesign of parameter system 0.5.11 [2005-12-15] - Add script monitor for monitoring memory usage - Remove meminfo.h (not portable) - Remove dependence on parameter system in log system - Don't use drand48() (not portable) - Don't use strcasecmp() (not portable) - Remove sysinfo.h and class System (not portable) - Don't include (not portable) - Change ::show() --> ::disp() everywhere - Clean out old quadrature classes on triangles and tetrahedra - Clean out old sparse matrix code - Update chapter on Functions in manual - Use std::map to store parameters - Implement class KrylovSolver - Name change: Node --> Vertex - Add nonlinear solver demos - Add support for picking sub functions and components of functions - Update interface for FiniteElement for latest FFC version - Improve and restructure implementation of the Function class - Dynamically adjust safety factor during integration - Improve output Matrix::disp() - Check residual at end of time step, reject step if too large - Implement Vector::sum() - Implement nonlinear solver - New option for ODE solver: "save final solution" --> solution.data - New ODE test problem: reaction - Fixes for automake 1.9 (nobase_include_HEADERS) - Reorganize build system, remove fake install and require make install - Add checks for non-standard PETSc component HYPRE in NSE solver - Make GMRES solver return the number of iterations - Add installation script for Python interface - Add Matrix Market format (Haiko Etzel) - Automatically reinitialize GMRES solver when system size changes - Implement cout << for class Vector 0.5.10 [2005-10-11] - Modify ODE solver interface: add T to constructor - Fix compilation on AMD 64 bit systems (add -fPIC) - Add new BLAS mode for form evaluation - Change enum types in File to lowercase - Change default file type for .m to Octave - Add experimental Python interface PyDOLFIN - Fix compilation for gcc 4.0 0.5.9 [2005-09-23] - Add Stokes module - Support for arbitrary mixed elements through FFC - VTK output interface now handles time-dependent functions automatically - Fix cout for empty matrix - Change dolfin_start() --> dolfin_end() - Add chapters to manual: about, log system, parameters, reference elements, installation, contributing, license - Use new template fenicsmanual.cls for manual - Add compiler flag -U__STRICT_ANSI__ when compiling under Cygwin - Add class EigenvalueSolver 0.5.8 [2005-07-05] - Add new output format Paraview/VTK (Garth N. Wells) - Update Tecplot interface - Move to PETSc 2.3.0 - Complete support for general order Lagrange elements in triangles and tetrahedra - Add test problem in src/demo/fem/convergence/ for general Lagrange elements - Make FEM::assemble() estimate the number of nonzeros in each row - Implement Matrix::init(M, N, nzmax) - Add Matrix::nz(), Matrix::nzsum() and Matrix::nzmax() - Improve Mesh::disp() - Add FiniteElement::disp() and FEM::disp() (useful for debugging) - Remove old class SparseMatrix - Change FEM::setBC() --> FEM::applyBC() - Change Mesh::tetrahedrons --> Mesh::tetrahedra - Implement Dirichlet boundary conditions for tetrahedra - Implement Face::contains(const Point& p) - Add test for shape dimension of mesh and form in FEM::assemble() - Move src/demo/fem/ demo to src/demo/fem/simple/ - Add README file in src/demo/poisson/ (simple manual) - Add simple demo program src/demo/poisson/ - Update computation of alignment of faces to match FFC/FIAT 0.5.7 [2005-06-23] - Clean up ODE test problems - Implement automatic detection of sparsity pattern from given matrix - Clean up homotopy solver - Implement automatic computation of Jacobian - Add support for assembly of non-square systems (Andy Terrel) - Make ODE solver report average number of iterations - Make progress bar write first update at 0% - Initialize all values of u before solution in multi-adaptive solver, not only components given by dependencies - Allow user to modify and verify a converging homotopy path - Make homotopy solver save a list of the solutions - Add Matrix::norm() - Add new test problem for CES economy - Remove cast from Parameter to const char* (use std::string) - Make solution data filename optional for homotopy solver - Append homotopy solution data to file during solution - Add dolfin::seed(int) for optionally seeding random number generator - Remove dolfin::max,min (use std::max,min) - Add polynomial-integer (true polynomial) form of general CES system - Compute multi-adaptive efficiency index - Updates for gcc 4.0 (patches by Garth N. Wells) - Add Matrix::mult(const real x[], uint row) (temporary fix, assumes uniprocessor case) - Add Matrix::mult(const Vector& x, uint row) (temporary fix, assumes uniprocessor case) - Update shortcuts MassMatrix and StiffnessMatrix to new system - Add missing friend to Face.h (reported by Garth N. Wells) 0.5.6 [2005-05-17] - Implementation of boundary conditions for general order Lagrange (experimental) - Use interpolation function automatically generated by FFC - Put computation of map into class AffineMap - Clean up assembly - Use dof maps automatically generated by FFC (experimental) - Modify interface FiniteElement for new version of FFC - Update ODE homotopy test problems - Add cross product to class Point - Sort mesh entities locally according to ordering used by FIAT and FFC - Add new format for dof maps (preparation for higher-order elements) - Code cleanups: NewFoo --> Foo complete - Updates for new version of FFC (0.1.7) - Bypass log system when finalizing PETSc (may be out of scope) 0.5.5 [2005-04-26] - Fix broken log system, curses works again - Much improved multi-adaptive time-stepping - Move elasticity module to new system based on FFC - Add boundary conditions for systems - Improve regulation of time steps - Clean out old assembly classes - Clean out old form classes - Remove kernel module map - Remove kernel module element - Move convection-diffusion module to new system based on FFC - Add iterators for cell neighbors of edges and faces - Implement polynomial for of CES economy - Rename all new linear algebra classes: NewFoo --> Foo - Clean out old linear algebra - Speedup setting of boundary conditions (add MAT_KEEP_ZEROED_ROWS) - Fix bug for option --disable-curses 0.5.4 [2005-03-29] - Remove option to compile with PETSc 2.2.0 (2.2.1 required) - Make make install work again (fix missing includes) - Add support for mixing multiple finite elements (through FFC) - Improve functionality of homotopy solver - Simple creation of piecewise linear functions (without having an element) - Simple creation of piecewise linear elements - Add support of automatic creation of simple meshes (unit cube, unit square) 0.5.3 [2005-02-26] - Change to PETSc version 2.2.1 - Add flag --with-petsc= to configure script - Move Poisson's equation to system based on FFC - Add support for automatic creation of homotopies - Make all ODE solvers automatically handle complex ODEs: (M) z' = f(z,t) - Implement version of mono-adaptive solver for implicit ODEs: M u' = f(u,t) - Implement Newton's method for multi- and mono-adaptive ODE solvers - Update PETSc wrappers NewVector, NewMatrix, and NewGMRES - Fix initialization of PETSc - Add mono-adaptive cG(q) and dG(q) solvers (experimental) - Implementation of new assebly: NewFEM, using output from FFC - Add access to mesh for nodes, cells, faces and edges - Add Tecplot I/O interface; contributed by Garth N. Wells 0.5.2 [2005-01-26] - Benchmarks for DOLFIN vs PETSc (src/demo/form and src/demo/test) - Complete rewrite of the multi-adaptive ODE solver (experimental) - Add wrapper for PETSc GMRES solver - Update class Point with new operators - Complete rewrite of the multi-adaptive solver to improve performance - Add PETSc wrappers NewMatrix and NewVector - Add DOLFIN/PETSc benchmarks 0.5.1 [2004-11-10] - Experimental support for automatic generation of forms using FFC - Allow user to supply Jacobian to ODE solver - Add optional test to check if a dependency already exists (Sparsity) - Modify sparse matrix output (Matrix::show()) - Add FGMRES solver in new format (patch from eriksv) - Add non-const version of quick-access of sparse matrices - Add linear mappings for simple computation of derivatives - Add check of matrix dimensions for ODE sparsity pattern - Include missing cmath in Function.cpp 0.5.0 [2004-08-18] - First prototype of new form evaluation system - New classes Jacobi, SOR, Richardson (preconditioners and linear solvers) - Add integrals on the boundary (ds), partly working - Add maps from boundary of reference cell - Add evaluation of map from reference cell - New Matrix functions: max, min, norm, and sum of rows and columns (erik) - Derivatives/gradients of ElementFunction (coefficients f.ex.) implemented - Enable assignment to all elements of a NewArray - Add functions Boundary::noNodes(), noFaces(), noEdges() - New class GaussSeidel (preconditioner and linear solver) - New classes Preconditioner and LinearSolver - Bug fix for tetrahedral mesh refinement (ingelstrom) - Add iterators for Edge and Face on Boundary - Add functionality to Map: bdet() and cell() - Add connectivity face-cell and edge-cell - New interface for assembly: Galerkin --> FEM - Bug fix for PDE systems of size > 3 0.4.11 [2004-04-23] - Add multigrid solver (experimental) - Update manual 0.4.10 - Automatic model reduction (experimental) - Fix bug in ParticleSystem (divide by mass) - Improve control of integration (add function ODE::update()) - Load/save parameters in XML-format - Add assembly test - Add simple StiffnessMatrix, MassMatrix, and LoadVector - Change dK --> dx - Change dx() --> ddx() - Add support for GiD file format - Add performance tests for multi-adaptivity (both stiff and non-stiff) - First version of Newton for the multi-adaptive solver - Test for Newton for the multi-adaptive solver 0.4.9 - Add multi-adaptive solver for the bistable equation - Add BiCGSTAB solver (thsv) - Fix bug in SOR (thsv) - Improved visual program for OpenDX - Fix OpenDX file format for scalar functions - Allow access to samples of multi-adaptive solution - New patch from thsv for gcc 3.4.0 and 3.5.0 - Make progress step a parameter - New function ODE::sparse(const Matrix& A) - Access nodes, cells, edges, faces by id - New function Matrix::lump() 0.4.8 - Add support for systems (jansson and bengzon) - Add new module wave - Add new module wave-vector - Add new module elasticity - Add new module elasticity-stationary - Multi-adaptive updates - Fix compilation error in LogStream - Fix local Newton iteration for higher order elements - Init matrix to given type - Add output of cG(q) and dG(q) weights in matrix format - Fix numbering of frames from plotslab script - Add png output for plotslab script - Add script for running stiff test problems, plot solutions - Fix bug in MeshInit (node neighbors of node) - Modify output of sysinfo() - Compile with -Wall -Werror -pedantic -ansi -std=c++98 (thsv) 0.4.7 - Make all stiff test problems work - Display status report also when using step() - Improve adaptive damping for stiff problems (remove spikes) - Modify Octave/Matlab format for solution data (speed improvement) - Adaptive sampling of solution (optional) - Restructure stiff test problems - Check if value of right-hand side is valid - Modify divergence test in AdaptiveIterationLevel1 0.4.6 - Save vectors and matrices from Matlab/Octave (foufas) - Rename writexml.m to xmlmesh.m - Inlining of important functions - Optimize evaluation of elements - Optimize Lagrange polynomials - Optimize sparsity: use stl containers - Optimize choice of discrete residual for multi-adaptive solver - Don't save solution in benchmark proble - Improve computation of divergence factor for underdamped systems - Don't check residual on first slab for fixed time step - Decrease largest (default) time step to 0.1 - Add missing in TimeStepper - Move real into dolfin namespace 0.4.5 - Rename function.h to enable compilation under Cygwin - Add new benchmark problem for multi-adaptive solver - Bug fix for ParticleSystem - Initialization of first time step - Improve time step regulation (threshold) - Improve stabilization - Improve TimeStepper interface (Ko Project) - Use iterators instead of recursively calling TimeSlab::update() - Clean up ODESolver - Add iterators for elements in time slabs and element groups - Add -f to creation of symbolic links 0.4.4 - Add support for 3D graphics in Octave using Open Inventor (jj) 0.4.3 - Stabilization of multi-adaptive solver (experimental) - Improved non-support for curses (--disable-curses) - New class MechanicalSystem for simulating mechanical systems - Save debug info from primal and dual (plotslab.m) - Fix bug in progress bar - Add missing include file in Components.h (kakr) - New function dolfin_end(const char* msg, ...) - Move numerical differentiation to RHS - New class Event for limited display of messages - Fix bug in LogStream (large numbers in floating point format) - Specify individual time steps for different components - Compile without warnings - Add -Werror to option enable-debug - Specify individual methods for different components - Fix bug in dGqMethods - Fix bug (delete old block) in ElementData - Add parameters for method and order - New test problem reaction - New class FixedPointIteration - Fix bug in grid refinement 0.4.2 - Fix bug in computation of residual (divide by k) - Add automatic generation and solution of the dual problem - Automatic selection of file names for primal and dual - Fix bug in progress bar (TerminalLogger) - Many updates of multi-adaptive solver - Add class ODEFunction - Update function class hierarchies - Move functions to a separate directory - Store multi-adaptive solution binary on disk with cache 0.4.1 - First version of multi-adaptive solver working - Clean up file formats - Start changing from int to unsigned int where necessary - Fix bool->int when using stdard in Parameter - Add NewArray and NewList (will replace Array and List) 0.4.0 - Initiation of the FEniCS project - Change syntax of mesh files: grid -> mesh - Create symbolic links instead of copying files - Tanganyika -> ODE - Add Heat module - Grid -> Mesh - Move forms and mappings to separate libraries - Fix missing include of DirectSolver.h 0.3.12 - Adaptive grid refinement (!) - Add User Manual - Add function dolfin_log() to turn logging on/off - Change from pointers to references for Node, Cell, Edge, Face - Update writexml.m - Add new grid files and rename old grid files 0.3.11 - Add configure option --disable-curses - Grid refinement updates - Make OpenDX file format work for grids (output) - Add volume() and diameter() in cell - New classes TriGridRefinement and TetGridRefinement - Add iterators for faces and edges on a boundary - New class GridHierarchy 0.3.10 - Use new boundary structure in Galerkin - Make dolfin_start() and dolfin_end() work - Make dolfin_assert() raise segmentation fault for plain text mode - Add configure option --enable-debug - Use autoreconf instead of scripts/preconfigure - Rename configure.in -> configure.ac - New class FaceIterator - New class Face - Move computation of boundary from GridInit to BoundaryInit - New class BoundaryData - New class BoundaryInit - New class Boundary - Make InitGrid compute edges - Add test program for generic matrix in src/demo/la - Clean up Grid classes - Add new class GridRefinementData - Move data from Cell to GenericCell - Make GMRES work with user defined matrix, only mult() needed - GMRES now uses only one function to compute residual() - Change Matrix structure (a modified envelope/letter) - Update script checkerror.m for Poisson - Add function dolfin_info_aptr() - Add cast to element pointer for iterators - Clean up and improve the Tensor class - New class: List - Name change: List -> Table - Name change: ShortList -> Array - Make functions in GridRefinement static - Make functions in GridInit static - Fix bug in GridInit (eriksv) - Add output to OpenDX format for 3D grids - Clean up ShortList class - Clean up List class - New class ODE, Equation replaced by PDE - Add Lorenz test problem - Add new problem type for ODEs - Add new module ode - Work on multi-adaptive ODE solver (lots of new stuff) - Work on grid refinement - Write all macros in LoggerMacros in one line - Add transpose functions to Matrix (Erik) 0.3.9 - Update Krylov solver (Erik, Johan) - Add new LU factorization and LU solve (Niklas) - Add benchmark test in src/demo/bench - Add silent logger 0.3.8 - Make sure dolfin-config is regenerated every time - Add demo program for cG(q) and dG(q) - Add dG(q) precalc of nodal points and weights - Add cG(q) precalc of nodal points and weights - Fix a bug in configure.in (AC_INIT with README) - Add Lagrange polynomials - Add multiplication with transpose - Add scalar products with rows and columns - Add A[i][j] index operator for quick access to dense matrix 0.3.7 - Add new Matlab-like syntax like A(i,all) = x or A(3,all) = A(4,all) - Add dolfin_assert() macro enabled if debug is defined - Redesign of Matrix/DenseMatrix/SparseMatrix to use Matrix as common interface - Include missing cmath in Legendre.cpp and GaussianQuadrature.cpp 0.3.6 - Add output functionality in DenseMatrix - Add high precision solver to DirectSolver - Clean up error messages in Matrix - Make solvers directly accessible through Matrix and DenseMatrix - Add quadrature (Gauss, Radau, and Lobatto) from Tanganyika - Start merge with Tanganyika - Add support for automatic documentation using doxygen - Update configure scripts - Add greeting at end of compilation 0.3.5 - Define version number only in the file configure.in - Fix compilation problem (missing depcomp) 0.3.4 - Fix bugs in some of the ElementFunction operators - Make convection-diffusion solver work again - Fix bug in integration, move multiplication with the determinant - Fix memory leaks in ElementFunction - Add parameter to choose output format - Make OctaveFile and MatlabFile subclasses of MFile - Add classes ScalarExpressionFunction and VectorExpressionFunction - Make progress bars work cleaner - Get ctrl-c in curses logger - Remove Settings-classes and use dolfin_parameter() - Redesign settings to match the structure of the log system - Add vector functions: Function::Vector - Add vector element functions: ElementFunction::Vector 0.3.3 - Increased functionality of curses-based interface - Add progress bars to log system 0.3.2 - More work on grid refinement - Add new curses based log system 0.3.1 - Makefile updates: make install should now work properly - KrylovSolver updates - Preparation for grid refinement - Matrix and Vector updates 0.3.0 - Make poisson work again, other modules still not working - Add output format for octave - Fix code to compile with g++-3.2 -Wall -Werror - New operators for Matrix - New and faster GMRES solver (speedup factor 4) - Changed name from SparseMatrix to Matrix - Remove old unused code - Add subdirectory math containing mathematical functions - Better access for A(i,j) += to improve speed in assembling - Add benchmark for linear algebra - New definition of finite element - Add algebra for function spaces - Convert grids in data/grids to xml.gz - Add iterators for Nodes and Cells - Change from .hh to .h - Add operators to Vector class (foufas) - Add dependence on libxml2 - Change from .C to .cpp to make Jim happy. - Change input/output functionality to streams - Change to new data structure for Grid - Change to object-oriented API at top level - Add use of C++ namespaces - Complete and major restructuring of the code - Fix compilation error in src/config - Fix name of keyword for convection-diffusion 0.2.11-1 - Fix compilation error (`source`) on Solaris 0.2.11 - Automate build process to simplify addition of new modules - Fix bug in matlab_write_field() (walter) - Fix bug in SparseMatrix::GetCopy() (foufas) 0.2.10-1 - Fix compilation errors on RedHat (thsv) 0.2.10 - Fix compilation of problems to use correct compiler - Change default test problems to the ones in the report - Improve memory management using mpatrol for tracking allocations - Change bool to int for va_arg, seems to be a problem with gcc > 3.0 - Improve input / output support: GiD, Matlab, OpenDX 0.2.8 - Navier-Stokes starting to work again - Add Navier-Stokes 2d - Bug fixes 0.2.7 - Add support for 2D problems - Add module convection-diffusion - Add local/global fields in equation/problem - Bug fixes - Navier-Stokes updates (still broken) 0.2.6 [2002-02-19] - Navier-Stokes updates (still broken) - Output to matlab format 0.2.5 - Add variational formulation with overloaded operators for systems - ShapeFunction/LocalField/FiniteElement according to Scott & Brenner 0.2.4 - Add boundary conditions - Poisson seems to work ok 0.2.3 - Add GMRES solver - Add CG solver - Add direct solver - Add Poisson solver - Big changes to the organisation of the source tree - Add kwdist.sh script - Bug fixes 0.2.2: - Remove curses temporarily 0.2.1: - Remove all PETSc stuff. Finally! - Gauss-Seidel cannot handle the pressure equation 0.2.0: - First GPL release - Remove all of Klas Samuelssons proprietary grid code - Adaptivity and refinement broken, include in next release dolfin-1.3.0/cmake/0000755000175000017500000000000012263014601013721 5ustar johannrjohannrdolfin-1.3.0/cmake/templates/0000755000175000017500000000000012263014601015717 5ustar johannrjohannrdolfin-1.3.0/cmake/templates/dolfin-config.cmake.in0000644000175000017500000000355512263014601022054 0ustar johannrjohannr# - Build details for DOLFIN: Dynamic Object-oriented Library for FINite element computation # # This file has been automatically generated. # FIXME: Check that naming conforms to CMake standards # This file is deprecated message(WARNING "find_package(dolfin) is deprecated - use find_package(DOLFIN) instead.") # Package found set(DOLFIN_FOUND TRUE) # Compilers set(DOLFIN_CXX_COMPILER "@CMAKE_CXX_COMPILER@") # Compiler defintions set(DOLFIN_CXX_DEFINITIONS "-DDOLFIN_VERSION=\"@DOLFIN_VERSION@\";@DOLFIN_CXX_DEFINITIONS@") # Compiler flags set(DOLFIN_CXX_FLAGS "@CMAKE_CXX_FLAGS@") # Linker flags set(DOLFIN_LINK_FLAGS "@CMAKE_EXE_LINKER_FLAGS@") # Include directories set(DOLFIN_INCLUDE_DIRS "@CMAKE_INSTALL_PREFIX@/@DOLFIN_INCLUDE_DIR@") # Third party include directories set(DOLFIN_3RD_PARTY_INCLUDE_DIRS "@DOLFIN_DEP_INCLUDE_DIRECTORIES@;@DOLFIN_DEP_SYSTEM_INCLUDE_DIRECTORIES@") # Python include directories set(DOLFIN_PYTHON_INCLUDE_DIRS "@PYTHON_INCLUDE_DIRS@;@NUMPY_INCLUDE_DIR@") # Python definitions set(DOLFIN_PYTHON_DEFINITIONS "-DNUMPY_VERSION_MAJOR=@NUMPY_VERSION_MAJOR@ -DNUMPY_VERSION_MINOR=@NUMPY_VERSION_MINOR@ -DNUMPY_VERSION_MICRO=@NUMPY_VERSION_MICRO@ -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION") # DOLFIN library set(DOLFIN_LIBRARIES "@DOLFIN_LIBRARY@") # Third-party library directories set(DOLFIN_3RD_PARTY_LIBRARY_DIRS "@DOLFIN_TARGET_LINK_LIBRARIES_DIRS@") # Third-party libraries set(DOLFIN_3RD_PARTY_LIBRARIES "@DOLFIN_TARGET_LINK_LIBRARIES@") # Python libraries set(DOLFIN_PYTHON_LIBRARIES "@PYTHON_LIBRARIES@") # Version set(DOLFIN_VERSION_MAJOR "@DOLFIN_VERSION_MAJOR@") set(DOLFIN_VERSION_MINOR "@DOLFIN_VERSION_MINOR@") set(DOLFIN_VERSION_MICRO "@DOLFIN_VERSION_MICRO@") set(DOLFIN_VERSION_STR "@DOLFIN_VERSION@") # The location of the UseDOLFIN.cmake file set(DOLFIN_USE_FILE "@CMAKE_INSTALL_PREFIX@/@DOLFIN_SHARE_DIR@/cmake/UseDOLFIN.cmake") dolfin-1.3.0/cmake/templates/dolfin.pc.in0000644000175000017500000000110212263014601020115 0ustar johannrjohannr# pkg-config configuration for DOLFIN prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=@CMAKE_INSTALL_PREFIX@ libdir=${exec_prefix}/lib includedir=${prefix}/include compiler=@CMAKE_CXX_COMPILER@ definitions=@PKG_DEFINITIONS@ swigcflags=@PYTHON_CPPFLAGS@ extlibs=@DOLFIN_EXT_LIBS@ Name: DOLFIN Description: Dynamic Object-oriented Library for FINite element computation Version: @DOLFIN_VERSION@ Requires: @PKG_REQUIRES@ Conflicts: Libs: @PKG_LINKFLAGS@ -L${libdir} -ldolfin Cflags: @PKG_CXXFLAGS@ -DDOLFIN_VERSION=\"@DOLFIN_VERSION@\" @PKG_DEFINITIONS@ -I${includedir} @PKG_INCLUDES@ dolfin-1.3.0/cmake/templates/dolfin-get-demos.in0000644000175000017500000000207612263014601021411 0ustar johannrjohannr#!/bin/bash # # Utility script for installing demos in user's home directory DEMO_DIR=@CMAKE_INSTALL_PREFIX@/@DOLFIN_SHARE_DIR@/demo INSTALL_DIR=$HOME/dolfin-demos URL="http://fenicsproject.org/documentation/doc_"`echo @DOLFIN_VERSION@ | cut -d'+' -f1`".html" echo "This script will install the DOLFIN demos in your home directory:" echo echo " $INSTALL_DIR" echo echo -n "Do you want to install the DOLFIN demos in your home directory? [y] " read answer if [[ $answer == "y" || $answer == "" ]]; then echo "Installing demos..." cp -r $DEMO_DIR $INSTALL_DIR echo echo "The demos have now been installed in $INSTALL_DIR." echo echo "-------------------------------------------------------------------------------" echo "To get started, enter the following command:" echo echo " cd $INSTALL_DIR/pde" echo echo "The documentation can be found at the following address:" echo echo " $URL" echo "-------------------------------------------------------------------------------" echo else echo "ok, demos not installed" fi dolfin-1.3.0/cmake/templates/dolfin-version.in0000644000175000017500000000012012263014601021176 0ustar johannrjohannr#!/bin/bash # Helper file to print the version of DOLFIN echo @DOLFIN_VERSION@ dolfin-1.3.0/cmake/templates/DOLFINConfig.cmake.in0000644000175000017500000000332012263014601021425 0ustar johannrjohannr# - Build details for DOLFIN: Dynamic Object-oriented Library for FINite element computation # # This file has been automatically generated. # FIXME: Check that naming conforms to CMake standards # Compilers set(DOLFIN_CXX_COMPILER "@CMAKE_CXX_COMPILER@") # Compiler defintions set(DOLFIN_CXX_DEFINITIONS "-DDOLFIN_VERSION=\"@DOLFIN_VERSION@\";@DOLFIN_CXX_DEFINITIONS@") # Compiler flags set(DOLFIN_CXX_FLAGS "@CMAKE_CXX_FLAGS@") # Linker flags set(DOLFIN_LINK_FLAGS "@CMAKE_EXE_LINKER_FLAGS@") # Include directories set(DOLFIN_INCLUDE_DIRS "@CMAKE_INSTALL_PREFIX@/@DOLFIN_INCLUDE_DIR@") # Third party include directories set(DOLFIN_3RD_PARTY_INCLUDE_DIRS "@DOLFIN_DEP_INCLUDE_DIRECTORIES@;@DOLFIN_DEP_SYSTEM_INCLUDE_DIRECTORIES@") # Python include directories set(DOLFIN_PYTHON_INCLUDE_DIRS "@PYTHON_INCLUDE_DIRS@;@NUMPY_INCLUDE_DIR@") # Python definitions set(DOLFIN_PYTHON_DEFINITIONS "-DNUMPY_VERSION_MAJOR=@NUMPY_VERSION_MAJOR@ -DNUMPY_VERSION_MINOR=@NUMPY_VERSION_MINOR@ -DNUMPY_VERSION_MICRO=@NUMPY_VERSION_MICRO@ -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION") # DOLFIN library set(DOLFIN_LIBRARIES "@DOLFIN_LIBRARY@") # Third-party library directories set(DOLFIN_3RD_PARTY_LIBRARY_DIRS "@DOLFIN_TARGET_LINK_LIBRARIES_DIRS@") # Third-party libraries set(DOLFIN_3RD_PARTY_LIBRARIES "@DOLFIN_TARGET_LINK_LIBRARIES@") # Python libraries set(DOLFIN_PYTHON_LIBRARIES "@PYTHON_LIBRARIES@") # Version set(DOLFIN_VERSION_MAJOR "@DOLFIN_VERSION_MAJOR@") set(DOLFIN_VERSION_MINOR "@DOLFIN_VERSION_MINOR@") set(DOLFIN_VERSION_MICRO "@DOLFIN_VERSION_MICRO@") set(DOLFIN_VERSION_STR "@DOLFIN_VERSION@") # The location of the UseDOLFIN.cmake file set(DOLFIN_USE_FILE "@CMAKE_INSTALL_PREFIX@/@DOLFIN_SHARE_DIR@/cmake/UseDOLFIN.cmake") dolfin-1.3.0/cmake/templates/dolfin-config-version.cmake.in0000644000175000017500000000143012263014601023525 0ustar johannrjohannrset(PACKAGE_VERSION "@DOLFIN_VERSION@") set(PACKAGE_VERSION_MAJOR "@DOLFIN_VERSION_MAJOR@") set(PACKAGE_VERSION_MINOR "@DOLFIN_VERSION_MINOR@") set(PACKAGE_VERSION_PATCH "@DOLFIN_VERSION_MICRO@") # FIXME: When should versions be defined as compatible? # This version is compatible only with matching major.minor versions. if ("${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}" VERSION_EQUAL "${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR}") # This version is compatible with equal or lesser patch versions. if (NOT "${PACKAGE_VERSION_PATCH}" VERSION_LESS "${PACKAGE_FIND_VERSION_PATCH}") set(PACKAGE_VERSION_COMPATIBLE 1) if ("${PACKAGE_VERSION_PATCH}" VERSION_EQUAL "${PACKAGE_FIND_VERSION_PATCH}") set(PACKAGE_VERSION_EXACT 1) endif() endif() endif() dolfin-1.3.0/cmake/templates/UseDOLFIN.cmake.in0000644000175000017500000000200312263014601020751 0ustar johannrjohannr# # This file sets up include directories, link directories, and # compiler settings for a project to use DOLFIN. It should not be # included directly, but rather through the DOLFIN_USE_FILE setting # obtained from DOLFINConfig.cmake. # if (NOT DOLFIN_USE_FILE_INCLUDED) set(DOLFIN_USE_FILE_INCLUDED 1) # Add compiler definitions needed to use DOLFIN add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Add compiler flags needed to use DOLFIN set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DOLFIN_CXX_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${DOLFIN_LINK_FLAGS}") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${DOLFIN_LINK_FLAGS}") set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${DOLFIN_LINK_FLAGS}") # Add include directories needed to use DOLFIN include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Add link directories needed to use DOLFIN link_directories(${DOLFIN_3RD_PARTY_LIBRARY_DIRS}) endif() dolfin-1.3.0/cmake/templates/dolfin.conf.in0000644000175000017500000000113312263014601020444 0ustar johannrjohannr# Helper file for setting non-default DOLFIN environment variables # Common Unix variables export @OS_LIBRARY_PATH_NAME@=@CMAKE_INSTALL_PREFIX@/@DOLFIN_LIB_DIR@:$@OS_LIBRARY_PATH_NAME@ export PATH=@CMAKE_INSTALL_PREFIX@/@DOLFIN_BIN_DIR@:$PATH export PKG_CONFIG_PATH=@CMAKE_INSTALL_PREFIX@/@DOLFIN_PKGCONFIG_DIR@:$PKG_CONFIG_PATH export PYTHONPATH=@DOLFIN_INSTALL_PYTHON_MODULE_DIR@:@DOLFIN_INSTALL_PYTHON_PURE_MODULE_DIR@:$PYTHONPATH export MANPATH=@CMAKE_INSTALL_PREFIX@/@DOLFIN_MAN_DIR@:$MANPATH # Special Mac variables export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks:$DYLD_FRAMEWORK_PATH dolfin-1.3.0/cmake/templates/DOLFINConfigVersion.cmake.in0000644000175000017500000000143012263014601022773 0ustar johannrjohannrset(PACKAGE_VERSION "@DOLFIN_VERSION@") set(PACKAGE_VERSION_MAJOR "@DOLFIN_VERSION_MAJOR@") set(PACKAGE_VERSION_MINOR "@DOLFIN_VERSION_MINOR@") set(PACKAGE_VERSION_PATCH "@DOLFIN_VERSION_MICRO@") # FIXME: When should versions be defined as compatible? # This version is compatible only with matching major.minor versions. if ("${PACKAGE_VERSION_MAJOR}.${PACKAGE_VERSION_MINOR}" VERSION_EQUAL "${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR}") # This version is compatible with equal or lesser patch versions. if (NOT "${PACKAGE_VERSION_PATCH}" VERSION_LESS "${PACKAGE_FIND_VERSION_PATCH}") set(PACKAGE_VERSION_COMPATIBLE 1) if ("${PACKAGE_VERSION_PATCH}" VERSION_EQUAL "${PACKAGE_FIND_VERSION_PATCH}") set(PACKAGE_VERSION_EXACT 1) endif() endif() endif() dolfin-1.3.0/cmake/templates/cmake_uninstall.cmake.in0000644000175000017500000000143112263014601022476 0ustar johannrjohannrif (NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") message(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") endif() file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) string(REGEX REPLACE "\n" ";" files "${files}") foreach (file ${files}) message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") if (EXISTS "$ENV{DESTDIR}${file}") exec_program( "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval ) if (NOT "${rm_retval}" STREQUAL 0) message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") endif() else() message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") endif() endforeach() dolfin-1.3.0/cmake/scripts/0000755000175000017500000000000012263015065015415 5ustar johannrjohannrdolfin-1.3.0/cmake/scripts/codesnippets.pyc0000644000175000017500000000672512263015065020644 0ustar johannrjohannró ÌRc@sdZdZdZdS(s»%(comment)s Auto generated SWIG file for Python interface of DOLFIN %(comment)s %(comment)s Copyright (C) 2012 %(holder)s %(comment)s %(comment)s This file is part of DOLFIN. %(comment)s %(comment)s DOLFIN is free software: you can redistribute it and/or modify %(comment)s it under the terms of the GNU Lesser General Public License as published by %(comment)s the Free Software Foundation, either version 3 of the License, or %(comment)s (at your option) any later version. %(comment)s %(comment)s DOLFIN is distributed in the hope that it will be useful, %(comment)s but WITHOUT ANY WARRANTY; without even the implied warranty of %(comment)s MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %(comment)s GNU Lesser General Public License for more details. %(comment)s %(comment)s You should have received a copy of the GNU Lesser General Public License %(comment)s along with DOLFIN. If not, see . %(comment)s s“ // The PyDOLFIN extension module for the %(module)s module %%module(package="dolfin.cpp.%(module)s", directors="1") %(module)s // Define module name for conditional includes #define %(MODULE)sMODULE %%{ %(headers)s // NumPy includes #define PY_ARRAY_UNIQUE_SYMBOL PyDOLFIN_%(MODULE)s #include %%} %%init%%{ import_array(); %%} // Include global SWIG interface files: // Typemaps, shared_ptr declarations, exceptions, version %%include "dolfin/swig/globalincludes.i" %(imports)s // Turn on SWIG generated signature documentation and include doxygen // generated docstrings //%%feature("autodoc", "1"); %(docstrings)s %(includes)s sq# Automatic get the module name get_filename_component(SWIG_MODULE_NAME ${CMAKE_CURRENT_BINARY_DIR} NAME) # Set project name project(${SWIG_MODULE_NAME}) # What does this do? get_directory_property(cmake_defs COMPILE_DEFINITIONS) # Set SWIG flags set(CMAKE_SWIG_FLAGS -module ${SWIG_MODULE_NAME} -shadow -modern -modernargs -fastdispatch -fvirtual -nosafecstrings -noproxydel -fastproxy -fastinit -fastunpack -fastquery -nobuildnone -Iinclude/swig ${DOLFIN_CXX_DEFINITIONS} ${DOLFIN_PYTHON_DEFINITIONS} ) # Get all SWIG interface files file(READ ${CMAKE_CURRENT_BINARY_DIR}/dependencies.txt DOLFIN_SWIG_DEPENDENCIES ) # This prevents swig being run unnecessarily set_source_files_properties(module.i PROPERTIES SWIG_MODULE_NAME ${SWIG_MODULE_NAME}) # Tell CMake SWIG has generated a C++ file set_source_files_properties(module.i PROPERTIES CPLUSPLUS ON) # Generate SWIG files in set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}) # Tell CMake which SWIG interface files should be checked for changes when recompile set(SWIG_MODULE_${SWIG_MODULE_NAME}_EXTRA_DEPS copy_swig_files ${DOLFIN_SWIG_DEPENDENCIES}) # Tell CMake to run SWIG on module.i and to link against libdolfin swig_add_module(${SWIG_MODULE_NAME} python module.i) swig_link_libraries(${SWIG_MODULE_NAME} dolfin ${PYTHON_LIBRARIES}) # Install Python .py files get_target_property(SWIG_MODULE_LOCATION ${SWIG_MODULE_${SWIG_MODULE_NAME}_REAL_NAME} LOCATION) install(FILES ${SWIG_MODULE_LOCATION} ${CMAKE_CURRENT_BINARY_DIR}/${SWIG_MODULE_NAME}.py DESTINATION ${DOLFIN_INSTALL_PYTHON_MODULE_DIR}/dolfin/cpp COMPONENT RuntimeLibraries ) N(tcopyright_statementtmodule_templatetswig_cmakelists_str(((sV/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/cmake/scripts/codesnippets.pyt+s(:dolfin-1.3.0/cmake/scripts/codeexamples.py0000644000175000017500000001070212263014601020433 0ustar johannrjohannr"""This module provides a dictionary of code examples using the Python syntax. The idea is to substitute the code examples from the *.h files, which uses the C++ syntax, with code snippets from this dictionary.""" # Copyright (C) 2010 Kristian B. Oelgaard # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2010-10-14 # Last changed: 2010-10-19 codesnippets = { "Mesh":{ "uint num_cells() const": """ .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.num_cells() 8 """, "uint num_vertices() const": """ .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.num_vertices() 9 """, "uint num_edges() const": """ .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.num_edges() 0 >>> mesh.init(1) 16 >>> mesh.num_edges() 16 """, "uint num_faces() const": """ .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.num_faces() 8 """, "uint num_facets() const": """ .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.num_facets() 0 >>> mesh.init(0,1) >>> mesh.num_facets() 16 """, "uint num_entities(uint d) const": """ .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.init(0,1) >>> mesh.num_entities(0) 9 >>> mesh.num_entities(1) 16 >>> mesh.num_entities(2) 8 """, "double* coordinates()": """ .. code-block:: python >>> mesh = dolfin.UnitSquare(1,1) >>> mesh.coordinates() array([[ 0., 0.], [ 1., 0.], [ 0., 1.], [ 1., 1.]]) """, "const uint* cells() const": """ .. code-block:: python >>> mesh = dolfin.UnitSquare(1,1) >>> mesh.cells() array([[0, 1, 3], [0, 2, 3]]) """, "uint size(uint dim) const": """ .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.init(0,1) >>> mesh.size(0) 9 >>> mesh.size(1) 16 >>> mesh.size(2) 8 """, "dolfin::uint closest_cell(const Point& point) const": """ .. code-block:: python >>> mesh = dolfin.UnitSquare(1, 1) >>> point = dolfin.Point(0.0, 2.0) >>> mesh.closest_cell(point) 1 """, "double hmin() const": """ .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.hmin() 0.70710678118654757 """, "double hmax() const": """ .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.hmax() 0.70710678118654757 """, "std::string str(bool verbose) const": """ .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.str(False) '' """ }, "MeshEntityIterator": { "MeshEntityIterator": """ The following example shows how to iterate over all mesh entities of a mesh of topological dimension dim: .. code-block:: python >>> for e in dolfin.cpp.entities(mesh, 1): ... print e.index() The following example shows how to iterate over mesh entities of topological dimension dim connected (incident) to some mesh entity f: .. code-block:: python >>> f = dolfin.cpp.MeshEntity(mesh, 0, 0) >>> for e in dolfin.cpp.entities(f, 1): ... print e.index() """ }, "Event": { "Event": """ .. code-block:: python >>> event = dolfin.Event("System is stiff, damping is needed.", 3) >>> for i in range(10): ... if i > 7: ... print i ... event() """ }, "Progress": { "Progress": """ A progress bar may be used either in an iteration with a known number of steps: .. code-block:: python >>> n = 1000000 >>> p = dolfin.Progress("Iterating...", n) >>> for i in range(n): ... p += 1 or in an iteration with an unknown number of steps: .. code-block:: python >>> pr = dolfin.Progress("Iterating") >>> t = 0.0 >>> n = 1000000.0 >>> while t < n: ... t += 1.0 ... p += t/n """ } } dolfin-1.3.0/cmake/scripts/generate-swig-docstrings0000755000175000017500000003777212263014601022274 0ustar johannrjohannr#!/usr/bin/env python """Simple functions to update the docstrings.i file for the Python interface from the intermediate representation of the documentation which is extracted from the C++ source code of DOLFIN. This script assumes that all functions and classes lives in the dolfin namespace. """ # Copyright (C) 2010 Kristian B. Oelgaard # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Johan Hake, 2010. # Modified by Anders E. Johansen, 2011. # # First added: 2010-08-19 # Last changed: 2013-09-04 import os, shutil, types, sys # Add path to dolfin_utils and import the documentation extractor. doc_dir = os.path.abspath("site-packages") sys.path.append(doc_dir) from dolfin_utils.documentation import extract_doc_representation from dolfin_utils.documentation import indent, add_links from codeexamples import codesnippets debug_output = False def output(out): global debug_output if debug_output: print out docstring = '%%feature("docstring") %s "\n%s\n";\n\n' # Dictionary for mapping C++ types to Python types. # NOTE: KBO: The dictionary is not complete and is only tested for the Mesh.h class cpp_to_python = { "std::string": "str", "string": "str", "enum": "int", "int": "int", "unsigned int": "int", "uint": "int", "dolfin::uint": "int", "std::size_t": "int", "uint*": "numpy.array(uint)", "dolfin::uint*": "numpy.array(uint)", "std::size_t*": "numpy.array(uintp)", "double": "float", "double*": "numpy.array(float)", "real": "float", "dolfin::real": "float", "bool": "bool", } def get_function_name(signature): "Extract function name from signature." words = signature.split("(")[0].split() # Special handling of operator since Swig needs 'operator double', not just # 'double', which is different from _normal_ operators like 'operator=' if len(words) > 1 and words[-2] == "operator": return " ".join(words[-2:]) return words[-1] def group_overloaded_functions(docs): """Group functions with same name, but different signature. Assuming that overloaded functions in the dolfin namespace are defined in the same header file.""" new_docs = [] for (classname, parent, comment, function_documentation) in docs: func_doc = {} order = [] # print "cls: ", classname # Iterate over class functions for (signature, comm) in function_documentation: # No need to put empty docstrings in the docstrings.i file! if comm is None: continue # print "sig: ", signature name = get_function_name(signature) if not name in order: order.append(name) # print "name: '%s'" % name if not name in func_doc: func_doc[name] = [(signature, comm)] else: func_doc[name].append((signature, comm)) new_docs.append((classname, parent, comment, func_doc, order)) return new_docs def replace_example(text, classname, signature): """Replace the C++ example code with the Python equivalent. Currently we can only handle one block/section of example code per function. """ # Check if we need to manipulate comment. if not "*Example*" in text: return text # Check if we have example code in the dictionary examplecode = ".. note::\n\n No example code available for this function." if not classname in codesnippets: output(" "*6 + "No example code for class: '%s'" % classname) elif not signature in codesnippets[classname]: output(" "*6 + "No example code for (class, function): ('%s', '%s')" % (classname, signature)) else: examplecode = codesnippets[classname][signature] # Remove leading and trailing new lines in example code. lines = examplecode.split("\n") while lines and not lines[0].strip(): del lines[0] while lines and not lines[-1].strip(): del lines[-1] examplecode = "\n".join(lines) # NOTE: KBO: We currently only handle 1 example block new_text = [] example = False indentation = 0 # Loop comment lines for l in text.split("\n"): # When we get to the lines containing the example, add the header and # codeblock. if not example and "*Example*" in l: example = True indentation = len(l) - len(l.lstrip()) new_text.append(l) new_text += indent(examplecode, indentation + 4).split("\n") elif example and l.strip() and len(l) - len(l.lstrip()) <= indentation: example = False new_text.append(l) # Skip lines as long as we're inside the example block. elif example: continue else: new_text.append(l) return "\n".join(new_text) def handle_std_pair(cpp_type, classnames): """Map std::pair to Python object.""" args = cpp_type.split(">")[0].split("<")[1].split(",") if (len(args) != 2): output("No typemap handler implemented for %s" % cpp_type) return cpp_type arg1, arg2 = args arg1 = arg1.strip() arg2 = arg2.strip() if arg1 in cpp_to_python: arg1 = cpp_to_python[arg1] if not arg2 in cpp_to_python: output("No type map for '%s'!" % cpp_type) return cpp_type arg2 = cpp_to_python[arg2] return "(%s, %s)" % (arg1, arg2) elif arg1[0] == "_" and arg1[-1] == "_" and arg1[1:-1] in classnames: if not arg2 in cpp_to_python: output("No type map for '%s'!" % cpp_type) return cpp_type arg2 = cpp_to_python[arg2] return "Swig Object< std::pair<%s, %s> >" % (arg1, arg2) else: return None def handle_std_vector(cpp_type, classnames): """Map std::vector to Python object (numpy.array).""" # Special case: vector of pairs if "std::pair" in cpp_type and not cpp_type.startswith("std::pair"): arg1, arg2 = cpp_type.split("<")[2].split(">")[0].split(",") pair = "std::pair<%s,%s>" % (arg1, arg2) if handle_std_pair(pair, classnames) is not None: return "numpy.array(%s)" % handle_std_pair(pair, classnames) else: return None else: arg = cpp_type.split("<")[1].split(">")[0].strip() if not arg in cpp_to_python: if arg[0] == "_" and arg[-1] == "_" and arg[1:-1] in classnames: return "list of %s" % arg else: return None return "numpy.array(%s)" % cpp_to_python[arg] # NOTE: KBO: This function is not complete and is only tested for the Mesh.h class def map_cpp_type(cpp_type, classnames): "Map a C++ type to a Python type." if cpp_type in cpp_to_python: return cpp_to_python[cpp_type] # std::vector --> numpy.array or list elif "std::vector" in cpp_type: pobject = handle_std_vector(cpp_type, classnames) if pobject is not None: return pobject else: output("No type map for '%s'!" % cpp_type) return cpp_type # Special handling of std::pair elif "std::pair" in cpp_type: pobject = handle_std_pair(cpp_type, classnames) if pobject is not None: return pobject else: output("No type map for '%s'!" % cpp_type) return cpp_type # dolfin::Array --> numpy.array (primitives only) elif "_Array_" in cpp_type: arg = cpp_type.split("<")[1].split(">")[0].strip() if not arg in cpp_to_python: output("No type map for '%s'!" % arg) return "numpy.array(%s)" % arg return "numpy.array(%s)" % cpp_to_python[arg] # std::set --> set elif "std::set" in cpp_type: arg = cpp_type.split("<")[1].split(">")[0].strip() if not arg in cpp_to_python: output("No type map for '%s'!" % cpp_type) return cpp_type return "set of %s" % cpp_to_python[arg] # Handle links to classes defined in DOLFIN. elif cpp_type[0] == "_" and cpp_type[-1] == "_" and cpp_type[1:-1] in classnames: return cpp_type # Special case, e.g. cpp_type = boost::shared_ptr<_FunctionSpace_> elif "_" in cpp_type: args = cpp_type.split("_") for arg in args: if arg in classnames: return "_" + arg + "_" output("No type map for '%s'!" % cpp_type) else: output("No type map for '%s'!" % cpp_type) return cpp_type def map_argument_and_return_types(text, classnames): """Map C++ types in the *Arguments* and *Returns* sections to corresponding Python types using a simple dictionary. Current implementation assumes the following format: *Returns* type description *Arguments* name0 (type) description name1 (type) description possibly separated with blank lines. """ new_text = text # Could perhaps be handled more elegantly if we rely on the formatting? if "*Returns*" in new_text: # Get lines and find line number with *Returns* lines = new_text.split("\n") r_index = ["*Returns*" in l for l in lines].index(True) arg = False for e, l in enumerate(lines): if e > r_index and not arg: # First none blank line contains our argument if l.strip(): arg = True indentation = len(l) - len(l.lstrip()) lines[e] = indent(map_cpp_type(l.strip(), classnames), indentation) new_text = "\n".join(lines) if "*Arguments*" in new_text: # Get lines and find line number with *Arguments* lines = new_text.split("\n") a_index = ["*Arguments*" in l for l in lines].index(True) a_indent = len(lines[a_index]) - len(lines[a_index].lstrip()) n_indent = 0 for e, l in enumerate(lines): if e > a_index and l.strip(): indentation = len(l) - len(l.lstrip()) # End of argument block if indentation <= a_indent: break # Determine indentation of lines with argument names # first non blank line determines this if n_indent == 0: n_indent = indentation # Get type of arguments defined in lines with name and type if indentation == n_indent: n, t = l.split("(") n = n.strip() t = t.split(")")[0] lines[e] = indent("%s (%s)" % (n, map_cpp_type(t.strip(), classnames)), n_indent) new_text = "\n".join(lines) return new_text def modify_doc(text, classnames, classname, signature): "Add links, translate C++ to Python and change C++ types." # Replace C++ example code with Python example code text = replace_example(text, classname, signature) # Map C++ types to corresponding Python types text = map_argument_and_return_types(text, classnames) # Add links text = add_links(text, classnames, ":py:class:") # Escape '"' otherwise will SWIG complain text = text.replace('\"',r'\"') return text def get_args(signature): "Get argument names (for Python) from signature." # print "sig: ", signature arg_string = signature.split("(")[-1].split(")")[0] # print "arg_string: '%s'" % arg_string args = [] if arg_string: # This does not handle ',' inside type declaration, # e.g. std::pair. # args = [a.split()[-1] for a in arg_string.split(",")] for a in arg_string.split(","): arg = a.split()[-1] # Assuming '::' is never in a name, but always # present when dealing with e.g. 'std::pair' # or boost::unordered_map. if not "::" in arg: args.append(arg) # print "args: '%s'" % args return args def write_docstrings(output_file, module, header, docs, classnames): """Write docstrings from a header file.""" output_file.write("// Documentation extracted from: (module=%s, header=%s)\n" % (module, header)) documentation = group_overloaded_functions(docs) for (classname, parent, comment, func_docs, order) in documentation: # Create class documentation (if any) and write. if classname is not None and comment is not None: cls_doc = modify_doc(comment, classnames, classname, classname) output_file.write(docstring % ("dolfin::%s" % classname, cls_doc)) # Handle functions in the correct order (according to definition in the # header file). for name in order: func_name = "dolfin::%s::%s" % (classname, name) if classname is None: func_name = "dolfin::%s" % name functions = func_docs[name] if not functions: continue # We've got overloaded functions. if len(functions) > 1: func_doc = "**Overloaded versions**" for signature, doc in functions: args = get_args(signature) doc = "\n\n* %s\ (%s)\n\n" % (name, ", ".join(args)) +\ indent(doc, 2) func_doc += modify_doc(doc, classnames, classname, signature) output_file.write(docstring % (func_name, func_doc)) # Single function else: # Get function (only one) signature, func_doc = functions[0] func_doc = modify_doc(func_doc, classnames, classname, signature) output_file.write(docstring % (func_name, func_doc)) def generate_docstrings(top_destdir): """ Generate docstring files for each module """ from codesnippets import copyright_statement # Get top DOLFIN directory. script_rel_path = os.sep.join(__file__.split(os.sep)[:-1]) script_rel_path = script_rel_path or "." dolfin_dir = os.path.abspath(os.path.join(script_rel_path, os.pardir, os.pardir)) top_destdir = top_destdir or dolfin_dir abs_destdir = top_destdir if os.path.isabs(top_destdir) else os.path.join(dolfin_dir, top_destdir) if not os.path.isdir(abs_destdir): raise RuntimeError("%s is not a directory." % abs_destdir) # Set copyright form copyright_form_swig = dict(comment = r"//", holder="Kristian B. Oelgaard") # Extract documentation documentation, classnames = extract_doc_representation(dolfin_dir) output("Generating docstrings from intermediate representation module...") for module in documentation: if not os.path.isdir(os.path.join(abs_destdir, "dolfin", "swig", module)): os.mkdir(os.path.join(abs_destdir, "dolfin", "swig", module)) output_file = open(os.path.join(abs_destdir, "dolfin", "swig", \ module, "docstrings.i"), "w") output_file.write(copyright_statement%(copyright_form_swig)) output_file.write("// Autogenerated docstrings file, extracted from the DOLFIN source C++ files.\n\n") output(" "*2 + module) for header, docs in documentation[module]: output(" "*4 + header) write_docstrings(output_file, module, header, docs, classnames) output_file.close() if __name__ == "__main__": if len(sys.argv) not in [1,2,3]: raise RuntimeError("expected 0, 1 or 2 arguments") dest_dir = sys.argv[1] if len(sys.argv) > 2 else "" debug_output = len(sys.argv) > 2 and sys.argv[2] == "DEBUG" generate_docstrings(dest_dir) dolfin-1.3.0/cmake/scripts/copy-test-demo-data0000755000175000017500000000506212263014601021121 0ustar johannrjohannr#!/usr/bin/env python # # Copyright (C) 2013 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Copy all data, tests and demo to a given directory relative to the top dolfin # source directory import os import sys import re import shutil # Subdirectories sub_directories = ['demo', 'test', 'bench'] # Copy all files with the following suffixes suffix_patterns = ["py", "h", "cpp", "ufl", "xml", "xml.gz", "off", "inp", \ "msh", "supp", "rst", "ele", "node", "grid", "edge"] suffix_pattern = re.compile("(%s),"%("|".join("[\w-]+\.%s" % pattern \ for pattern in suffix_patterns))) script_rel_path = os.sep.join(__file__.split(os.sep)[:-1]) script_rel_path = script_rel_path or "." dolfin_dir = os.path.abspath(os.path.join(script_rel_path, os.pardir, os.pardir)) def copy_data(top_destdir): abs_destdir = top_destdir if os.path.isabs(top_destdir) else os.path.join(dolfin_dir, top_destdir) if abs_destdir == dolfin_dir: raise RuntimeError("destination directory cannot be the same as "\ "the dolfin source directory") if not os.path.isdir(abs_destdir): raise RuntimeError("%s is not a directory." % abs_destdir) for subdir in sub_directories: top_dir = os.path.join(dolfin_dir, subdir) for dirpath, dirnames, filenames in os.walk(top_dir): destdir = dirpath.replace(dolfin_dir, abs_destdir) if not os.path.isdir(destdir): os.makedirs(destdir) for f in re.findall(suffix_pattern, " ".join(\ "%s,"%f for f in filenames)): srcfile = os.path.join(dirpath, f) shutil.copy(srcfile, destdir) if __name__ == "__main__": # Expecting a destination argument if len(sys.argv) != 2: raise RuntimeError("Expecting 1 argument with the destination directory") copy_data(sys.argv[-1]) dolfin-1.3.0/cmake/scripts/copy-swig-files0000755000175000017500000000401612263014601020360 0ustar johannrjohannr#!/usr/bin/env python # # Copyright (C) 2013 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Copy all swig files to a destination directory import os import sys import re import shutil script_rel_path = os.sep.join(__file__.split(os.sep)[:-1]) script_rel_path = script_rel_path or "." dolfin_dir = os.path.abspath(os.path.join(script_rel_path, os.pardir, os.pardir)) def copy_data(top_destdir): abs_destdir = top_destdir if os.path.isabs(top_destdir) else os.path.join(dolfin_dir, top_destdir) if abs_destdir == dolfin_dir: raise RuntimeError("destination directory cannot be the same as "\ "the dolfin source directory") if not os.path.isdir(abs_destdir): raise RuntimeError("%s is not a directory." % abs_destdir) top_dir = os.path.join(dolfin_dir, "dolfin", "swig") for dirpath, dirnames, filenames in os.walk(top_dir): destdir = dirpath.replace(dolfin_dir, abs_destdir) if not os.path.isdir(destdir): os.makedirs(destdir) for f in filenames: if f[-2:] == ".i": srcfile = os.path.join(dirpath, f) shutil.copy2(srcfile, destdir) if __name__ == "__main__": # Expecting a destination argument if len(sys.argv) != 2: raise RuntimeError("Expecting 1 argument with the destination directory") copy_data(sys.argv[-1]) dolfin-1.3.0/cmake/scripts/generate-form-files0000755000175000017500000000517612263014601021202 0ustar johannrjohannr#!/usr/bin/env python # # Copyright (C) 2005-2010 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Recompile all ffc forms (use when FFC has been updated) # This script should be run from the top level directory. import os # Forms that need special options special = {"CahnHilliard2D.ufl": "-fsplit", "CahnHilliard3D.ufl": "-fsplit", "Poisson2D_1.ufl": "-fsplit", "Poisson2D_2.ufl": "-fsplit", "Poisson2D_3.ufl": "-fsplit", "Poisson2D_4.ufl": "-fsplit", "Poisson2D_5.ufl": "-fsplit", "Poisson3D_1.ufl": "-fsplit", "Poisson3D_2.ufl": "-fsplit", "Poisson3D_3.ufl": "-fsplit", "Poisson3D_4.ufl": "-fsplit", "Poisson3D_5.ufl": "-fsplit", "AdaptivePoisson.ufl": "-e", "AdaptiveNavierStokes.ufl": "-e"} # Forms for which we should skip optimization skip_optimization = ["HyperElasticity.ufl"] # Directories to scan subdirs = ["dolfin", "demo", "bench", "test"] # Compile all form files topdir = os.getcwd() for subdir in subdirs: for root, dirs, files in os.walk(subdir): # Check for .ufl files formfiles = [f for f in files if len(f) > 4 and f[-4:] == ".ufl"] if len(formfiles) == 0: continue # Compile files os.chdir(root) print "Compiling forms in %s..." % root for f in formfiles: if f in special: options = special[f] else: options = "" if f in skip_optimization: optimization = "" else: optimization = "-O" command = "ffc -v %s -f no_ferari -l dolfin %s %s >> compile.log" % (optimization, options, f) print " " + command ret = os.system(command) if not ret == 0: raise RuntimeError, "Unable to compile form: %s/%s" % (root, f) os.chdir(topdir) dolfin-1.3.0/cmake/scripts/codesnippets.py0000644000175000017500000001040712263014601020464 0ustar johannrjohannr# Code snippets for autogenerations of SWIG code # # Copyright (C) 2012 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2012-01-17 # Last changed: 2012-07-03 copyright_statement = r"""%(comment)s Auto generated SWIG file for Python interface of DOLFIN %(comment)s %(comment)s Copyright (C) 2012 %(holder)s %(comment)s %(comment)s This file is part of DOLFIN. %(comment)s %(comment)s DOLFIN is free software: you can redistribute it and/or modify %(comment)s it under the terms of the GNU Lesser General Public License as published by %(comment)s the Free Software Foundation, either version 3 of the License, or %(comment)s (at your option) any later version. %(comment)s %(comment)s DOLFIN is distributed in the hope that it will be useful, %(comment)s but WITHOUT ANY WARRANTY; without even the implied warranty of %(comment)s MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %(comment)s GNU Lesser General Public License for more details. %(comment)s %(comment)s You should have received a copy of the GNU Lesser General Public License %(comment)s along with DOLFIN. If not, see . %(comment)s """ # FIXME: Removed date from copyright form """ %(comment)s First added: 2012-01-18 %(comment)s Last changed: %(year)d-%(month)0.2d-%(day)0.2d """ # Template code for all combined SWIG modules module_template = r""" // The PyDOLFIN extension module for the %(module)s module %%module(package="dolfin.cpp.%(module)s", directors="1") %(module)s // Define module name for conditional includes #define %(MODULE)sMODULE %%{ %(headers)s // NumPy includes #define PY_ARRAY_UNIQUE_SYMBOL PyDOLFIN_%(MODULE)s #include %%} %%init%%{ import_array(); %%} // Include global SWIG interface files: // Typemaps, shared_ptr declarations, exceptions, version %%include "dolfin/swig/globalincludes.i" %(imports)s // Turn on SWIG generated signature documentation and include doxygen // generated docstrings //%%feature("autodoc", "1"); %(docstrings)s %(includes)s """ swig_cmakelists_str = \ """# Automatic get the module name get_filename_component(SWIG_MODULE_NAME ${CMAKE_CURRENT_BINARY_DIR} NAME) # Set project name project(${SWIG_MODULE_NAME}) # What does this do? get_directory_property(cmake_defs COMPILE_DEFINITIONS) # Set SWIG flags set(CMAKE_SWIG_FLAGS -module ${SWIG_MODULE_NAME} -shadow -modern -modernargs -fastdispatch -fvirtual -nosafecstrings -noproxydel -fastproxy -fastinit -fastunpack -fastquery -nobuildnone -Iinclude/swig ${DOLFIN_CXX_DEFINITIONS} ${DOLFIN_PYTHON_DEFINITIONS} ) # Get all SWIG interface files file(READ ${CMAKE_CURRENT_BINARY_DIR}/dependencies.txt DOLFIN_SWIG_DEPENDENCIES ) # This prevents swig being run unnecessarily set_source_files_properties(module.i PROPERTIES SWIG_MODULE_NAME ${SWIG_MODULE_NAME}) # Tell CMake SWIG has generated a C++ file set_source_files_properties(module.i PROPERTIES CPLUSPLUS ON) # Generate SWIG files in set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}) # Tell CMake which SWIG interface files should be checked for changes when recompile set(SWIG_MODULE_${SWIG_MODULE_NAME}_EXTRA_DEPS copy_swig_files ${DOLFIN_SWIG_DEPENDENCIES}) # Tell CMake to run SWIG on module.i and to link against libdolfin swig_add_module(${SWIG_MODULE_NAME} python module.i) swig_link_libraries(${SWIG_MODULE_NAME} dolfin ${PYTHON_LIBRARIES}) # Install Python .py files get_target_property(SWIG_MODULE_LOCATION ${SWIG_MODULE_${SWIG_MODULE_NAME}_REAL_NAME} LOCATION) install(FILES ${SWIG_MODULE_LOCATION} ${CMAKE_CURRENT_BINARY_DIR}/${SWIG_MODULE_NAME}.py DESTINATION ${DOLFIN_INSTALL_PYTHON_MODULE_DIR}/dolfin/cpp COMPONENT RuntimeLibraries ) """ dolfin-1.3.0/cmake/scripts/download-demo-data0000755000175000017500000000725112263014601021003 0ustar johannrjohannr#!/bin/sh # # This script downloads data (mostly meshes) needed run demos # Anders Logg, 2013-03-21 download_mesh() { OS=$(uname -s) DEMO=$1 MESH=$2 echo "Downloading $MESH to $DEMO" # Use zsync if available, otherwise use curl/wget if hash zsync 2>/dev/null; then zsync -q -o $DEMO/$MESH http://fenicsproject.org/pub/data/meshes/$MESH.zsync else if [ "$OS" = "Darwin" ]; then output=`curl --output $MESH http://fenicsproject.org/pub/data/meshes/$MESH 2>&1` else output=`wget http://fenicsproject.org/pub/data/meshes/$MESH 2>&1` fi # If download fails if [ $? -ne 0 ]; then echo "$output" 1>&2 exit 1 fi mv $MESH $DEMO fi } download_mesh demo/documented/eigenvalue box_with_dent.xml.gz download_mesh demo/undocumented/mixed-poisson-sphere sphere_16.xml.gz download_mesh demo/undocumented/advection-diffusion dolfin_fine.xml.gz download_mesh demo/undocumented/advection-diffusion dolfin_fine_velocity.xml.gz download_mesh demo/undocumented/advection-diffusion dolfin_fine_subdomains.xml.gz download_mesh demo/undocumented/contact-vi-snes circle_yplane.xml.gz download_mesh demo/undocumented/contact-vi-tao circle_yplane.xml.gz download_mesh demo/undocumented/multistage-solver dolfin_fine.xml.gz download_mesh demo/undocumented/multistage-solver dolfin_fine_velocity.xml.gz download_mesh demo/undocumented/multistage-solver dolfin_fine_subdomains.xml.gz download_mesh demo/undocumented/elasticity gear.xml.gz download_mesh demo/undocumented/lift-drag dolfin_fine.xml.gz download_mesh demo/undocumented/lift-drag dolfin_fine_pressure.xml.gz download_mesh demo/documented/tensor-weighted-poisson unitsquare_32_32.xml.gz download_mesh demo/documented/tensor-weighted-poisson unitsquare_32_32_c01.xml.gz download_mesh demo/documented/tensor-weighted-poisson unitsquare_32_32_c00.xml.gz download_mesh demo/documented/tensor-weighted-poisson unitsquare_32_32_c11.xml.gz download_mesh demo/documented/stokes-taylor-hood/ dolfin_fine.xml.gz download_mesh demo/documented/stokes-taylor-hood dolfin_fine_subdomains.xml.gz download_mesh demo/undocumented/elastodynamics dolfin_fine.xml.gz download_mesh demo/undocumented/auto-adaptive-navier-stokes channel_with_flap.xml.gz download_mesh demo/documented/stokes-mini dolfin_fine.xml.gz download_mesh demo/documented/stokes-mini dolfin_fine_subdomains.xml.gz download_mesh demo/documented/subdomains dolfin_fine.xml.gz download_mesh demo/documented/stokes-stabilized dolfin_fine.xml.gz download_mesh demo/documented/stokes-stabilized dolfin_fine_subdomains.xml.gz download_mesh demo/undocumented/plot dolfin_fine.xml.gz download_mesh demo/undocumented/dg-advection-diffusion unitsquare_64_64.xml.gz download_mesh demo/undocumented/dg-advection-diffusion unitsquare_64_64_velocity.xml.gz download_mesh demo/documented/bcs aneurysm.xml.gz download_mesh demo/documented/navier-stokes lshape.xml.gz download_mesh demo/undocumented/mesh-quality dolfin_fine.xml.gz download_mesh test/unit/fem/python aneurysm.xml.gz download_mesh test/unit/io snake.xml.gz download_mesh test/unit/nls/python doughnut.xml.gz download_mesh test/unit/mesh boxes.xml.gz dolfin-1.3.0/cmake/scripts/generate-all0000755000175000017500000000106212263014601017675 0ustar johannrjohannr#!/bin/sh # # This script runs all the others. echo "The following scripts will now be run:" echo "" echo " cmake/scripts/generate-form-files" echo " cmake/scripts/generate-cmakefiles" echo " cmake/scripts/generate-swig-docstrings" echo " cmake/scripts/generate-swig-interface" echo " cmake/scripts/download-demo-data" echo "" echo "Press return to continue." read x ./cmake/scripts/generate-form-files ./cmake/scripts/generate-cmakefiles ./cmake/scripts/generate-swig-docstrings ./cmake/scripts/generate-swig-interface ./cmake/scripts/download-demo-data dolfin-1.3.0/cmake/scripts/generate-swig-interface0000755000175000017500000005253712263014601022051 0ustar johannrjohannr#!/usr/bin/env python # # Generate SWIG files for Python interface of DOLFIN # # Copyright (C) 2012 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2012-01-17 # Last changed: 2013-06-23 # System imports import os import re import glob import time import sys # Add local site-packages to path, # NOTE: We need to prepend it so systemwide installed dolfin is not picked up sys.path.insert(0, os.path.abspath("site-packages")) from dolfin_utils.cppparser import * # Local imports from codesnippets import * # Create time info for labeling generated code _local_time = time.localtime() _date_form = dict(year = _local_time.tm_year, month = _local_time.tm_mon, day = _local_time.tm_mday) # Create form for copyright statement to a SWIG interface file copyright_form_swig = dict(comment = r"//", holder="Johan Hake") # reg exp pattern _header_pattern = re.compile("#include +<(dolfin/\w+/\w+\.h)>") # Get top DOLFIN directory. script_rel_path = os.sep.join(__file__.split(os.sep)[:-1]) script_rel_path = script_rel_path or "." dolfin_dir = os.path.abspath(os.path.join(script_rel_path, os.pardir, os.pardir)) global swig_dir swig_dir = os.path.abspath(os.path.join(dolfin_dir, "dolfin", "swig")) org_swig_dir = swig_dir def extract_module_header_files(submodule, excludes): """ Extract header files for a submodule """ # Read dolfin submodule include file code = open(os.path.join(dolfin_dir, "dolfin", submodule, \ "dolfin_%s.h" % submodule)).read() # Extract all headers all_headers = re.findall(_header_pattern, code) # Filter with excludes return [header for header in all_headers \ if header.split("/")[-1] not in excludes] def generate_submodule_info(module_to_submodules, excludes): """ Check the passed module to submodule mapping and sort it Creates the reverse mapping together with additional info about each submodule """ # Extract original modules from dolfin.h # NOTE: We need these, in particular the order original_submodules = [] f = open(os.path.join(dolfin_dir, "dolfin", "dolfin.h")) for line in f: if "#include >> mesh = dolfin.UnitSquare(2,2) >>> mesh.num_cells() 8 suint num_cells() constsa .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.num_vertices() 9 suint num_vertices() constsš .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.num_edges() 0 >>> mesh.init(1) 16 >>> mesh.num_edges() 16 suint num_edges() consts^ .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.num_faces() 8 suint num_faces() consts— .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.num_facets() 0 >>> mesh.init(0,1) >>> mesh.num_facets() 16 suint num_facets() constsÀ .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.init(0,1) >>> mesh.num_entities(0) 9 >>> mesh.num_entities(1) 16 >>> mesh.num_entities(2) 8 suint num_entities(uint d) consts· .. code-block:: python >>> mesh = dolfin.UnitSquare(1,1) >>> mesh.coordinates() array([[ 0., 0.], [ 1., 0.], [ 0., 1.], [ 1., 1.]]) sdouble* coordinates()s€ .. code-block:: python >>> mesh = dolfin.UnitSquare(1,1) >>> mesh.cells() array([[0, 1, 3], [0, 2, 3]]) sconst uint* cells() consts¨ .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.init(0,1) >>> mesh.size(0) 9 >>> mesh.size(1) 16 >>> mesh.size(2) 8 suint size(uint dim) constsŽ .. code-block:: python >>> mesh = dolfin.UnitSquare(1, 1) >>> point = dolfin.Point(0.0, 2.0) >>> mesh.closest_cell(point) 1 s3dolfin::uint closest_cell(const Point& point) constsk .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.hmin() 0.70710678118654757 sdouble hmin() constsk .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.hmax() 0.70710678118654757 sdouble hmax() consts° .. code-block:: python >>> mesh = dolfin.UnitSquare(2,2) >>> mesh.str(False) '' s#std::string str(bool verbose) consttMeshsæ The following example shows how to iterate over all mesh entities of a mesh of topological dimension dim: .. code-block:: python >>> for e in dolfin.cpp.entities(mesh, 1): ... print e.index() The following example shows how to iterate over mesh entities of topological dimension dim connected (incident) to some mesh entity f: .. code-block:: python >>> f = dolfin.cpp.MeshEntity(mesh, 0, 0) >>> for e in dolfin.cpp.entities(f, 1): ... print e.index() tMeshEntityIterators .. code-block:: python >>> event = dolfin.Event("System is stiff, damping is needed.", 3) >>> for i in range(10): ... if i > 7: ... print i ... event() tEvents¸ A progress bar may be used either in an iteration with a known number of steps: .. code-block:: python >>> n = 1000000 >>> p = dolfin.Progress("Iterating...", n) >>> for i in range(n): ... p += 1 or in an iteration with an unknown number of steps: .. code-block:: python >>> pr = dolfin.Progress("Iterating") >>> t = 0.0 >>> n = 1000000.0 >>> while t < n: ... t += 1.0 ... p += t/n tProgressN(t__doc__t codesnippets(((sV/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/cmake/scripts/codeexamples.pyts*          dolfin-1.3.0/cmake/scripts/generate-cmakefiles0000755000175000017500000001434112263014601021234 0ustar johannrjohannr#!/usr/bin/env python # # Copyright (C) 2010 Garth N. Wells # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Generate CMakeLists.txt files in demo and test directories # This script should be run from the top level directory. # # Modified by Anders Logg 2013 import os import subprocess cmakelists_str = \ """# This file is automatically generated by running # # cmake/scripts/generate-cmakefiles # # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME %(project_name)s) project(${PROJECT_NAME}) # Set verbose output while testing CMake #set(CMAKE_VERBOSE_MAKEFILE 1) # Set CMake behavior cmake_policy(SET CMP0004 OLD) # Get DOLFIN configuration data (DOLFINConfig.cmake must be in DOLFIN_CMAKE_CONFIG_PATH) find_package(DOLFIN) # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug MinSizeRel Release RelWithDebInfo." FORCE) endif() # Compiler definitions add_definitions(${DOLFIN_CXX_DEFINITIONS}) # Include directories include_directories(${DOLFIN_INCLUDE_DIRS}) include_directories(SYSTEM ${DOLFIN_3RD_PARTY_INCLUDE_DIRS}) # Executable %(executables)s # Target libraries %(target_libraries)s """ executable_str = "add_executable(%s %s)" target_link_libraries_str = "target_link_libraries(%s "\ "${DOLFIN_LIBRARIES} ${DOLFIN_3RD_PARTY_LIBRARIES})" # Subdirectories sub_directories = ['demo', 'test', 'bench'] # Prefix map for subdirectories executable_prefixes = dict(test="test_", demo="demo_", bench="bench_") # Main file name map for subdirectories main_file_names = dict(test="test.cpp", demo="main.cpp", bench="main.cpp") # Projects that use custom CMakeLists.txt (shouldn't overwrite) exclude_projects = [os.path.join('demo', 'undocumented', 'plot-qt'), os.path.join('demo', 'undocumented', 'csg'), os.path.join('demo', 'undocumented', 'meshintersection')] def generate_cmake_files(subdirectory, generated_files): """Search for C++ code and write CMakeLists.txt files""" cwd = os.getcwd() executable_prefix = executable_prefixes[subdirectory] main_file_name = main_file_names[subdirectory] for root, dirs, files in os.walk(cwd + "/" + subdirectory): executable_names = set() # For 'cpp' directories, get list of .cpp files if "cpp" in dirs: cpp_files = [] program_dir = root + "/cpp" program_name = os.path.split(root)[-1] skip = False for exclude in exclude_projects : if exclude in root : skip = True if skip : print "Skipping custom CMakeLists.txt file:", root continue if executable_prefix == "bench_": program_name = program_dir[program_dir.find("bench")+6:].replace(os.path.sep, "_") name_forms = dict( project_name=executable_prefix + program_name, executables="NOT_SET", target_libraries="NOT_SET") for f in os.listdir(program_dir): filename, extension = os.path.splitext(f) if extension == ".cpp": cpp_files.append(f) # If no .cpp continue if not cpp_files: continue # Name of demo and cpp source files if main_file_name in cpp_files: # If directory contains a main file we assume that only one # executable should be generated for this directory and all other # .cpp files should be linked to this name_forms["executables"] = executable_str % \ ("${PROJECT_NAME}", ' '.join(cpp_files)) name_forms["target_libraries"] = target_link_libraries_str % \ "${PROJECT_NAME}" else: # If no main file in source files, we assume each source should # be compiled as an executable name_forms["executables"] = "\n".join(\ executable_str % (executable_prefix + f.replace(".cpp", ""), f) \ for f in cpp_files) name_forms["target_libraries"] = "\n".join(\ target_link_libraries_str % (\ executable_prefix + f.replace(".cpp", "")) \ for f in cpp_files) # Check for duplicate executable names if program_name not in executable_names: executable_names.add(program_name) else: print "Warning: duplicate executable names found when generating CMakeLists.txt files." # Write file filename = os.path.join(program_dir, "CMakeLists.txt") generated_files.append(filename) with open(filename, "w") as f: print "Creating CMakeLists.txt file:", program_name, program_dir f.write(cmakelists_str % name_forms) # FIXME: add command line option for adding files # Add to version control #subprocess.call(["bzr", "add", program_dir + "/CMakeLists.txt"]) # Generate CMakeLists.txt files for all subdirectories generated_files = [] for subdirectory in sub_directories: generate_cmake_files(subdirectory, generated_files) # Print list of generated files print "The following files were generated:" print "\n".join(generated_files) dolfin-1.3.0/cmake/post-install/0000755000175000017500000000000012263014601016352 5ustar johannrjohannrdolfin-1.3.0/cmake/post-install/CMakeLists.txt0000644000175000017500000000145512263014601021117 0ustar johannrjohannrinstall(CODE "MESSAGE( \"---------------------------------------------------------------------------- DOLFIN has now been installed in ${CMAKE_INSTALL_PREFIX} and the demo programs have been installed in ${CMAKE_INSTALL_PREFIX}/${DOLFIN_SHARE_DIR}/demo Before rushing off to try the demos, don't forget to update your environment variables. This can be done easily using the helper file 'dolfin.conf' which sets the appropriate variables (for users of the Bash shell). To update your environment variables, run the following command: source ${CMAKE_INSTALL_PREFIX}/${DOLFIN_SHARE_DIR}/dolfin.conf For future reference, we recommend that you add this command to your configuration (.bashrc, .profile or similar). ----------------------------------------------------------------------------\")") dolfin-1.3.0/cmake/modules/0000755000175000017500000000000012263014601015371 5ustar johannrjohannrdolfin-1.3.0/cmake/modules/FindCGAL.cmake0000644000175000017500000001061112263014601017701 0ustar johannrjohannr# - Try to find CGAL # Once done this will define # # CGAL_FOUND - system has CGAL # CGAL_INCLUDE_DIRS - include directories for CGAL # CGAL_LIBRARIES - libraries for CGAL # CGAL_DEFINITIONS - compiler flags for CGAL #============================================================================= # Copyright (C) 2010-2011 Anders Logg, Johannes Ring and Garth N. Wells # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. #============================================================================= message(STATUS "Checking for package 'CGAL'") # Blank out CGAL_FIND_VERSION temporarily or else find_package(CGAL ...) # (below) will fail. set(CGAL_FIND_VERSION_TMP ${CGAL_FIND_VERSION}) set(CGAL_FIND_VERSION "") # Call CGAL supplied CMake script find_package(CGAL HINTS ${CGAL_DIR} $ENV{CGAL_DIR} PATH_SUFFIXES lib cmake/modules lib/cmake lib/CGAL) # Restore CGAL_FIND_VERSION set(CGAL_FIND_VERSION ${CGAL_FIND_VERSION_TMP}) if (CGAL_FIND_VERSION) # Check if version found is >= required version if (NOT "${CGAL_VERSION}" VERSION_LESS "${CGAL_FIND_VERSION}") set(CGAL_VERSION_OK TRUE) endif() else() # No specific version of CGAL is requested set(CGAL_VERSION_OK TRUE) endif() # Add flag to fix bug in CGAL 4.1 for Intel compilers. See # https://sympa.inria.fr/sympa/arc/cgal-discuss/2013-01/msg00011.html if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") if ("${CGAL_VERSION}" VERSION_GREATER "4.0.2") set(CGAL_DEFINITIONS "-DCGAL_CFG_NO_STATEMENT_EXPRESSIONS") endif() endif() # Set variables set(CGAL_INCLUDE_DIRS ${CGAL_INCLUDE_DIRS} ${CGAL_3RD_PARTY_INCLUDE_DIRS}) set(CGAL_LIBRARIES ${CGAL_LIBRARY} ${CGAL_3RD_PARTY_LIBRARIES}) # Add GMP and MPFR libraries if defined by CGAL if (GMP_LIBRARIES) set(CGAL_LIBRARIES ${CGAL_LIBRARIES} ${GMP_LIBRARIES}) endif() if (MPFR_LIBRARIES) set(CGAL_LIBRARIES ${CGAL_LIBRARIES} ${MPFR_LIBRARIES}) endif() # Try compiling and running test program if (DOLFIN_SKIP_BUILD_TESTS) set(CGAL_TEST_RUNS TRUE) elseif (CGAL_INCLUDE_DIRS AND CGAL_LIBRARIES) # Set flags for building test program set(CMAKE_REQUIRED_INCLUDES ${CGAL_INCLUDE_DIRS}) set(CMAKE_REQUIRED_LIBRARIES ${CGAL_LIBRARIES}) set(CMAKE_REQUIRED_FLAGS ${CGAL_CXX_FLAGS_INIT}) # Add all previusly found Boost libraries - CGAL doesn't appear to supply # all necessary Boost libs (test with Boost 1.50 + CGAL 4.0.2) set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${Boost_LIBRARIES}) # Build and run test program include(CheckCXXSourceRuns) check_cxx_source_runs(" // CGAL test program #include #include #include typedef CGAL::Simple_cartesian SCK; typedef SCK::Point_3 Point; typedef CGAL::Polyhedron_3 Polyhedron_3; int main() { // CGAL points Point p1(0, 0, 0); Point p2(1, 0, 0); Point p3(0, 1, 0); Point p4(0, 0, 1); Polyhedron_3 P; P.make_tetrahedron(p1, p2, p3, p4); return 0; } " CGAL_TEST_RUNS) endif() # Standard package handling include(FindPackageHandleStandardArgs) find_package_handle_standard_args(CGAL "CGAL could not be found. Be sure to set CGAL_DIR" CGAL_LIBRARIES CGAL_INCLUDE_DIRS CGAL_TEST_RUNS CGAL_VERSION_OK) dolfin-1.3.0/cmake/modules/FindCHOLMOD.cmake0000644000175000017500000001631612263014601020270 0ustar johannrjohannr# - Try to find CHOLMOD # Once done this will define # # CHOLMOD_FOUND - system has CHOLMOD # CHOLMOD_INCLUDE_DIRS - include directories for CHOLMOD # CHOLMOD_LIBRARIES - libraries for CHOLMOD #============================================================================= # Copyright (C) 2010-2011 Garth N. Wells, Anders Logg and Johannes Ring # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. #============================================================================= message(STATUS "Checking for package 'CHOLMOD'") # Find packages that CHOLMOD depends on set(CMAKE_LIBRARY_PATH ${BLAS_DIR}/lib $ENV{BLAS_DIR}/lib ${CMAKE_LIBRARY_PATH}) set(CMAKE_LIBRARY_PATH ${LAPACK_DIR}/lib $ENV{LAPACK_DIR}/lib ${CMAKE_LIBRARY_PATH}) find_package(AMD QUIET) find_package(BLAS QUIET) find_package(LAPACK QUIET) find_package(ParMETIS 4.0.2 QUIET) # FIXME: Should we have separate FindXX modules for CAMD, COLAMD, and CCOLAMD? # FIXME: find_package(CAMD) # FIXME: find_package(COLAMD) # FIXME: find_package(CCOLAMD) # FIXME: It may be necessary to link to LAPACK and BLAS (or the vecLib # FIXME: framework on Darwin). # Check for header file find_path(CHOLMOD_INCLUDE_DIRS cholmod.h HINTS ${CHOLMOD_DIR}/include $ENV{CHOLMOD_DIR}/include PATH_SUFFIXES suitesparse ufsparse DOC "Directory where the CHOLMOD header is located" ) # Check for CHOLMOD library find_library(CHOLMOD_LIBRARY cholmod HINTS ${CHOLMOD_DIR}/lib $ENV{CHOLMOD_DIR}/lib NO_DEFAULT_PATH DOC "The CHOLMOD library" ) find_library(CHOLMOD_LIBRARY cholmod DOC "The CHOLMOD library" ) # Check for CAMD library find_library(CAMD_LIBRARY camd HINTS ${CHOLMOD_DIR}/lib ${CAMD_DIR}/lib $ENV{CHOLMOD_DIR}/lib $ENV{CAMD_DIR}/lib NO_DEFAULT_PATH DOC "The CAMD library" ) find_library(CAMD_LIBRARY camd DOC "The CAMD library" ) # Check for COLAMD library find_library(COLAMD_LIBRARY colamd HINTS ${CHOLMOD_DIR}/lib ${COLAMD_DIR}/lib $ENV{CHOLMOD_DIR}/lib $ENV{COLAMD_DIR}/lib NO_DEFAULT_PATH DOC "The COLAMD library" ) find_library(COLAMD_LIBRARY colamd DOC "The COLAMD library" ) # Check for CCOLAMD library find_library(CCOLAMD_LIBRARY ccolamd HINTS ${CHOLMOD_DIR}/lib ${CCOLAMD_DIR}/lib $ENV{CHOLMOD_DIR}/lib $ENV{CCOLAMD_DIR}/lib NO_DEFAULT_PATH DOC "The CCOLAMD library" ) find_library(CCOLAMD_LIBRARY ccolamd DOC "The CCOLAMD library" ) # Check for SUITESPARSECONFIG library find_library(SUITESPARSE_LIBRARY suitesparseconfig HINTS ${CHOLMOD_DIR}/lib ${CCOLAMD_DIR}/lib $ENV{CHOLMOD_DIR}/lib $ENV{CCOLAMD_DIR}/lib NO_DEFAULT_PATH DOC "The SUITESPARSECONFIG library" ) find_library(SUITESPARSE_LIBRARY suitesparseconfig DOC "The SUITESPARSECONFIG library" ) if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND NOT APPLE) # Check for rt library find_library(RT_LIBRARY rt DOC "The RT library" ) endif() # Collect libraries (order is important) if (AMD_FOUND) set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARY} ${AMD_LIBRARIES}) endif() if (CAMD_LIBRARY) set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARIES} ${CAMD_LIBRARY}) endif() if (COLAMD_LIBRARY) set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARIES} ${COLAMD_LIBRARY}) endif() if (CCOLAMD_LIBRARY) set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARIES} ${CCOLAMD_LIBRARY}) endif() if (SUITESPARSE_LIBRARY) set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARIES} ${SUITESPARSE_LIBRARY}) endif() if (RT_LIBRARY) set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARIES} ${RT_LIBRARY}) endif() if (PARMETIS_FOUND) set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARIES} ${PARMETIS_LIBRARIES}) endif() if (LAPACK_FOUND) set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARIES} ${LAPACK_LIBRARIES}) endif() if (BLAS_FOUND) set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARIES} ${BLAS_LIBRARIES}) endif() find_program(GFORTRAN_EXECUTABLE gfortran) if (GFORTRAN_EXECUTABLE) execute_process(COMMAND ${GFORTRAN_EXECUTABLE} -print-file-name=libgfortran.so OUTPUT_VARIABLE GFORTRAN_LIBRARY OUTPUT_STRIP_TRAILING_WHITESPACE) if (EXISTS "${GFORTRAN_LIBRARY}") set(CHOLMOD_LIBRARIES ${CHOLMOD_LIBRARIES} ${GFORTRAN_LIBRARY}) endif() endif() mark_as_advanced( CHOLMOD_INCLUDE_DIRS CHOLMOD_LIBRARY CHOLMOD_LIBRARIES CAMD_LIBRARY COLAMD_LIBRARY CCOLAMD_LIBRARY ) # Try to run a test program that uses CHOLMOD if (DOLFIN_SKIP_BUILD_TESTS) set(CHOLMOD_TEST_RUNS TRUE) elseif (CHOLMOD_INCLUDE_DIRS AND CHOLMOD_LIBRARIES AND AMD_FOUND) set(CMAKE_REQUIRED_INCLUDES ${CHOLMOD_INCLUDE_DIRS} ${AMD_INCLUDE_DIRS}) set(CMAKE_REQUIRED_LIBRARIES ${CHOLMOD_LIBRARIES}) # message("Cholmod libraries ${CHOLMOD_LIBRARIES}") # Build and run test program include(CheckCXXSourceRuns) check_cxx_source_runs(" #include #include int main() { cholmod_dense *D; cholmod_sparse *S; cholmod_dense *x, *b, *r; cholmod_factor *L; double one[2] = {1,0}, m1[2] = {-1,0}; double *dx; cholmod_common c; int n = 5; double K[5][5] = {{1.0, 0.0, 0.0, 0.0, 0.0}, {0.0, 2.0,-1.0, 0.0, 0.0}, {0.0,-1.0, 2.0,-1.0, 0.0}, {0.0, 0.0,-1.0, 2.0, 0.0}, {0.0, 0.0, 0.0, 0.0, 1.0}}; cholmod_start (&c); D = cholmod_allocate_dense(n, n, n, CHOLMOD_REAL, &c); dx = (double*)D->x; for (int i=0; i < n; i++) for (int j=0; j < n; j++) dx[i+j*n] = K[i][j]; S = cholmod_dense_to_sparse(D, 1, &c); S->stype = 1; cholmod_reallocate_sparse(cholmod_nnz(S, &c), S, &c); b = cholmod_ones(S->nrow, 1, S->xtype, &c); L = cholmod_analyze(S, &c); cholmod_factorize(S, L, &c); x = cholmod_solve(CHOLMOD_A, L, b, &c); r = cholmod_copy_dense(b, &c); cholmod_sdmult(S, 0, m1, one, x, r, &c); cholmod_free_factor(&L, &c); cholmod_free_dense(&D, &c); cholmod_free_sparse(&S, &c); cholmod_free_dense(&r, &c); cholmod_free_dense(&x, &c); cholmod_free_dense(&b, &c); cholmod_finish(&c); return 0; } " CHOLMOD_TEST_RUNS) endif() # Standard package handling include(FindPackageHandleStandardArgs) find_package_handle_standard_args(CHOLMOD "CHOLMOD could not be found. Be sure to set CHOLMOD_DIR." CHOLMOD_LIBRARIES CHOLMOD_INCLUDE_DIRS CHOLMOD_TEST_RUNS) dolfin-1.3.0/cmake/modules/FindSLEPc.cmake0000644000175000017500000002314012263014601020102 0ustar johannrjohannr# - Try to find SLEPC # Once done this will define # # SLEPC_FOUND - system has SLEPc # SLEPC_INCLUDE_DIR - include directories for SLEPc # SLEPC_LIBARIES - libraries for SLEPc # SLEPC_DIR - directory where SLEPc is built # SLEPC_VERSION - version of SLEPc # # Assumes that PETSC_DIR and PETSC_ARCH has been set by # alredy calling find_package(PETSc) #============================================================================= # Copyright (C) 2010-2012 Garth N. Wells, Anders Logg and Johannes Ring # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. #============================================================================= message(STATUS "Checking for package 'SLEPc'") # Set debian_arches (PETSC_ARCH for Debian-style installations) foreach (debian_arches linux kfreebsd) if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") set(DEBIAN_FLAVORS ${debian_arches}-gnu-c-debug ${debian_arches}-gnu-c-opt ${DEBIAN_FLAVORS}) else() set(DEBIAN_FLAVORS ${debian_arches}-gnu-c-opt ${debian_arches}-gnu-c-debug ${DEBIAN_FLAVORS}) endif() endforeach() # List of possible locations for SLEPC_DIR set(slepc_dir_locations "") list(APPEND slepc_dir_locations "/usr/lib/slepcdir/3.4.2") list(APPEND slepc_dir_locations "/usr/lib/slepcdir/3.2") list(APPEND slepc_dir_locations "/usr/lib/slepcdir/3.1") list(APPEND slepc_dir_locations "/usr/lib/slepcdir/3.0.0") list(APPEND slepc_dir_locations "/opt/local/lib/petsc") # Macports list(APPEND slepc_dir_locations "/usr/local/lib/slepc") list(APPEND slepc_dir_locations "$ENV{HOME}/slepc") # Add other possible locations for SLEPC_DIR set(_SYSTEM_LIB_PATHS "${CMAKE_SYSTEM_LIBRARY_PATH};${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") string(REGEX REPLACE ":" ";" libdirs ${_SYSTEM_LIB_PATHS}) foreach (libdir ${libdirs}) get_filename_component(slepc_dir_location "${libdir}/" PATH) list(APPEND slepc_dir_locations ${slepc_dir_location}) endforeach() # Try to figure out SLEPC_DIR by finding slepc.h find_path(SLEPC_DIR include/slepc.h HINTS ${SLEPC_DIR} $ENV{SLEPC_DIR} PATHS ${slepc_dir_locations} DOC "SLEPc directory") # Report result of search for SLEPC_DIR if (DEFINED SLEPC_DIR) message(STATUS "SLEPC_DIR is ${SLEPC_DIR}") else() message(STATUS "SLEPC_DIR is empty") endif() # Get variables from SLEPc configuration if (SLEPC_DIR) find_library(SLEPC_LIBRARY NAMES slepc HINTS ${SLEPC_DIR}/lib $ENV{SLEPC_DIR}/lib ${SLEPC_DIR}/${PETSC_ARCH}/lib $ENV{SLEPC_DIR}/$ENV{PETSC_ARCH}/lib NO_DEFAULT_PATH DOC "The SLEPc library" ) find_library(SLEPC_LIBRARY NAMES slepc DOC "The SLEPc library" ) mark_as_advanced(SLEPC_LIBRARY) # Create a temporary Makefile to probe the SLEPcc configuration set(slepc_config_makefile ${PROJECT_BINARY_DIR}/Makefile.slepc) file(WRITE ${slepc_config_makefile} "# This file was autogenerated by FindSLEPc.cmake SLEPC_DIR = ${SLEPC_DIR} PETSC_ARCH = ${PETSC_ARCH} PETSC_DIR = ${PETSC_DIR} include ${SLEPC_DIR}/conf/slepc_common show : -@echo -n \${\${VARIABLE}} ") # Define macro for getting SLEPc variables from Makefile macro(SLEPC_GET_VARIABLE var name) set(${var} "NOTFOUND" CACHE INTERNAL "Cleared" FORCE) execute_process(COMMAND ${CMAKE_MAKE_PROGRAM} --no-print-directory -f ${slepc_config_makefile} show VARIABLE=${name} OUTPUT_VARIABLE ${var} RESULT_VARIABLE slepc_return) endmacro() # Call macro to get the SLEPc variables slepc_get_variable(SLEPC_INCLUDE SLEPC_INCLUDE) slepc_get_variable(SLEPC_EXTERNAL_LIB SLEPC_EXTERNAL_LIB) # Remove temporary Makefile file(REMOVE ${slepc_config_makefile}) # Extract include paths and libraries from compile command line include(ResolveCompilerPaths) resolve_includes(SLEPC_INCLUDE_DIRS "${SLEPC_INCLUDE}") resolve_libraries(SLEPC_EXTERNAL_LIBRARIES "${SLEPC_EXTERNAL_LIB}") # Add variables to CMake cache and mark as advanced set(SLEPC_INCLUDE_DIRS ${SLEPC_INCLUDE_DIRS} CACHE STRING "SLEPc include paths." FORCE) set(SLEPC_LIBRARIES ${SLEPC_LIBRARY} CACHE STRING "SLEPc libraries." FORCE) mark_as_advanced(SLEPC_INCLUDE_DIRS SLEPC_LIBRARIES) endif() if (DOLFIN_SKIP_BUILD_TESTS) set(SLEPC_TEST_RUNS TRUE) set(SLEPC_VERSION "UNKNOWN") set(SLEPC_VERSION_OK TRUE) elseif (SLEPC_LIBRARIES AND SLEPC_INCLUDE_DIRS) # Set flags for building test program set(CMAKE_REQUIRED_INCLUDES ${SLEPC_INCLUDE_DIRS} ${PETSC_INCLUDE_DIRS}) set(CMAKE_REQUIRED_LIBRARIES ${SLEPC_LIBRARIES} ${PETSC_LIBRARIES}) # Add MPI variables if MPI has been found if (MPI_C_FOUND) set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${MPI_C_INCLUDE_PATH}) set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${MPI_C_LIBRARIES}) set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${MPI_C_COMPILE_FLAGS}") endif() # Check SLEPc version set(SLEPC_CONFIG_TEST_VERSION_CPP "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/slepc_config_test_version.cpp") file(WRITE ${SLEPC_CONFIG_TEST_VERSION_CPP} " #include #include \"slepcversion.h\" int main() { std::cout << SLEPC_VERSION_MAJOR << \".\" << SLEPC_VERSION_MINOR << \".\" << SLEPC_VERSION_SUBMINOR; return 0; } ") try_run( SLEPC_CONFIG_TEST_VERSION_EXITCODE SLEPC_CONFIG_TEST_VERSION_COMPILED ${CMAKE_CURRENT_BINARY_DIR} ${SLEPC_CONFIG_TEST_VERSION_CPP} CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}" COMPILE_OUTPUT_VARIABLE COMPILE_OUTPUT RUN_OUTPUT_VARIABLE OUTPUT ) if (SLEPC_CONFIG_TEST_VERSION_EXITCODE EQUAL 0) set(SLEPC_VERSION ${OUTPUT} CACHE TYPE STRING) mark_as_advanced(SLEPC_VERSION) endif() if (SLEPc_FIND_VERSION) # Check if version found is >= required version if (NOT "${SLEPC_VERSION}" VERSION_LESS "${SLEPc_FIND_VERSION}") set(SLEPC_VERSION_OK TRUE) endif() else() # No specific version requested set(SLEPC_VERSION_OK TRUE) endif() mark_as_advanced(SLEPC_VERSION_OK) # Run SLEPc test program set(SLEPC_TEST_LIB_CPP "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/slepc_test_lib.cpp") file(WRITE ${SLEPC_TEST_LIB_CPP} " #include \"petsc.h\" #include \"slepceps.h\" int main() { PetscErrorCode ierr; int argc = 0; char** argv = NULL; ierr = SlepcInitialize(&argc, &argv, PETSC_NULL, PETSC_NULL); EPS eps; ierr = EPSCreate(PETSC_COMM_SELF, &eps); CHKERRQ(ierr); //ierr = EPSSetFromOptions(eps); CHKERRQ(ierr); #if PETSC_VERSION_MAJOR == 3 && PETSC_VERSION_MINOR <= 1 ierr = EPSDestroy(eps); CHKERRQ(ierr); #else ierr = EPSDestroy(&eps); CHKERRQ(ierr); #endif ierr = SlepcFinalize(); CHKERRQ(ierr); return 0; } ") try_run( SLEPC_TEST_LIB_EXITCODE SLEPC_TEST_LIB_COMPILED ${CMAKE_CURRENT_BINARY_DIR} ${SLEPC_TEST_LIB_CPP} CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}" "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}" COMPILE_OUTPUT_VARIABLE SLEPC_TEST_LIB_COMPILE_OUTPUT RUN_OUTPUT_VARIABLE SLEPC_TEST_LIB_OUTPUT ) if (SLEPC_TEST_LIB_COMPILED AND SLEPC_TEST_LIB_EXITCODE EQUAL 0) message(STATUS "Performing test SLEPC_TEST_RUNS - Success") set(SLEPC_TEST_RUNS TRUE) else() message(STATUS "Performing test SLEPC_TEST_RUNS - Failed") # Test program does not run - try adding SLEPc 3rd party libs and test again list(APPEND CMAKE_REQUIRED_LIBRARIES ${SLEPC_EXTERNAL_LIBRARIES}) try_run( SLEPC_TEST_3RD_PARTY_LIBS_EXITCODE SLEPC_TEST_3RD_PARTY_LIBS_COMPILED ${CMAKE_CURRENT_BINARY_DIR} ${SLEPC_TEST_LIB_CPP} CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}" "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}" COMPILE_OUTPUT_VARIABLE SLEPC_TEST_3RD_PARTY_LIBS_COMPILE_OUTPUT RUN_OUTPUT_VARIABLE SLEPC_TEST_3RD_PARTY_LIBS_OUTPUT ) if (SLEPC_TEST_3RD_PARTY_LIBS_COMPILED AND SLEPC_TEST_3RD_PARTY_LIBS_EXITCODE EQUAL 0) message(STATUS "Performing test SLEPC_TEST_3RD_PARTY_LIBS_RUNS - Success") set(SLEPC_LIBRARIES ${SLEPC_LIBRARIES} ${SLEPC_EXTERNAL_LIBRARIES} CACHE STRING "SLEPc libraries." FORCE) set(SLEPC_TEST_RUNS TRUE) else() message(STATUS "Performing test SLEPC_TEST_3RD_PARTY_LIBS_RUNS - Failed") endif() endif() endif() # Standard package handling include(FindPackageHandleStandardArgs) find_package_handle_standard_args(SLEPc "SLEPc could not be found. Be sure to set SLEPC_DIR, PETSC_DIR, and PETSC_ARCH." SLEPC_LIBRARIES SLEPC_DIR SLEPC_INCLUDE_DIRS SLEPC_TEST_RUNS SLEPC_VERSION SLEPC_VERSION_OK) dolfin-1.3.0/cmake/modules/FindSCOTCH.cmake0000644000175000017500000002705412263014601020167 0ustar johannrjohannr# - Try to find SCOTCH # Once done this will define # # SCOTCH_FOUND - system has found SCOTCH # SCOTCH_INCLUDE_DIRS - include directories for SCOTCH # SCOTCH_LIBARIES - libraries for SCOTCH # SCOTCH_VERSION - version for SCOTCH # # Variables used by this module, they can change the default behaviour and # need to be set before calling find_package: # # SCOTCH_DEBUG - Set this to TRUE to enable debugging output # of FindScotchPT.cmake if you are having problems. # Please enable this before filing any bug reports. #============================================================================= # Copyright (C) 2010-2011 Garth N. Wells, Johannes Ring and Anders Logg # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. #============================================================================= set(SCOTCH_FOUND FALSE) message(STATUS "Checking for package 'SCOTCH-PT'") # Check for header file find_path(SCOTCH_INCLUDE_DIRS ptscotch.h HINTS ${SCOTCH_DIR}/include $ENV{SCOTCH_DIR}/include ${PETSC_DIR}/include PATH_SUFFIXES scotch DOC "Directory where the SCOTCH-PT header is located" ) # Check for scotch find_library(SCOTCH_LIBRARY NAMES scotch HINTS ${SCOTCH_DIR}/lib $ENV{SCOTCH_DIR}/lib ${PETSC_DIR}/lib NO_DEFAULT_PATH DOC "The SCOTCH library" ) find_library(SCOTCH_LIBRARY NAMES scotch DOC "The SCOTCH library" ) # Check for scotcherr find_library(SCOTCHERR_LIBRARY NAMES scotcherr HINTS ${SCOTCH_DIR}/lib $ENV{SCOTCH_DIR}/lib NO_DEFAULT_PATH DOC "The SCOTCH-ERROR library" ) find_library(SCOTCHERR_LIBRARY NAMES scotcherr DOC "The SCOTCH-ERROR library" ) # Check for ptscotch find_library(PTSCOTCH_LIBRARY NAMES ptscotch HINTS ${SCOTCH_DIR}/lib $ENV{SCOTCH_DIR}/lib ${PETSC_DIR}/lib NO_DEFAULT_PATH DOC "The PTSCOTCH library" ) find_library(PTSCOTCH_LIBRARY NAMES ptscotch DOC "The PTSCOTCH library" ) # Check for ptesmumps find_library(PTESMUMPS_LIBRARY NAMES ptesmumps esmumps HINTS ${SCOTCH_DIR}/lib $ENV{SCOTCH_DIR}/lib ${PETSC_DIR}/lib NO_DEFAULT_PATH DOC "The PTSCOTCH-ESMUMPS library" ) find_library(PTESMUMPS_LIBRARY NAMES ptesmumps esmumps DOC "The PTSCOTCH-ESMUMPS library" ) # Check for ptscotcherr find_library(PTSCOTCHERR_LIBRARY NAMES ptscotcherr HINTS ${SCOTCH_DIR}/lib $ENV{SCOTCH_DIR}/lib ${PETSC_DIR}/lib NO_DEFAULT_PATH DOC "The PTSCOTCH-ERROR library" ) find_library(PTSCOTCHERR_LIBRARY NAMES ptscotcherr DOC "The PTSCOTCH-ERROR library" ) #set(SCOTCH_DEBUG 1) set(SCOTCH_LIBRARIES ${PTSCOTCH_LIBRARY}) if (PTESMUMPS_LIBRARY) set(SCOTCH_LIBRARIES ${SCOTCH_LIBRARIES} ${PTESMUMPS_LIBRARY}) endif() set(SCOTCH_LIBRARIES ${SCOTCH_LIBRARIES} ${PTSCOTCHERR_LIBRARY}) # Try compiling and running test program if (DOLFIN_SKIP_BUILD_TESTS) set(SCOTCH_TEST_RUNS TRUE) elseif (SCOTCH_INCLUDE_DIRS AND SCOTCH_LIBRARIES) if (SCOTCH_DEBUG) message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " "location of ptscotch.h: ${SCOTCH_INCLUDE_DIRS}/ptscotch.h") message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " "location of libscotch: ${SCOTCH_LIBRARY}") message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " "location of libptscotch: ${PTSCOTCH_LIBRARY}") message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " "location of libptscotcherr: ${PTSCOTCHERR_LIBRARY}") endif() # Set flags for building test program set(CMAKE_REQUIRED_INCLUDES ${SCOTCH_INCLUDE_DIRS}) set(CMAKE_REQUIRED_LIBRARIES ${SCOTCH_LIBRARIES}) #set(CMAKE_REQUIRED_LIBRARIES ${SCOTCH_LIBRARY} ${SCOTCHERR_LIBRARY}) # Add MPI variables if MPI has been found if (MPI_CXX_FOUND) set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${MPI_CXX_INCLUDE_PATH}) set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${MPI_CXX_LIBRARIES}) set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${MPI_CXX_COMPILE_FLAGS}") endif() set(SCOTCH_CONFIG_TEST_VERSION_CPP "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/scotch_config_test_version.cpp") file(WRITE ${SCOTCH_CONFIG_TEST_VERSION_CPP} " #define MPICH_IGNORE_CXX_SEEK 1 #include #include #include #include #include int main() { std::cout << SCOTCH_VERSION << \".\" << SCOTCH_RELEASE << \".\" << SCOTCH_PATCHLEVEL; return 0; } ") try_run( SCOTCH_CONFIG_TEST_VERSION_EXITCODE SCOTCH_CONFIG_TEST_VERSION_COMPILED ${CMAKE_CURRENT_BINARY_DIR} ${SCOTCH_CONFIG_TEST_VERSION_CPP} CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}" "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}" COMPILE_OUTPUT_VARIABLE COMPILE_OUTPUT RUN_OUTPUT_VARIABLE OUTPUT ) # Set version number if (SCOTCH_CONFIG_TEST_VERSION_EXITCODE EQUAL 0) set(SCOTCH_VERSION ${OUTPUT} CACHE TYPE STRING) message(STATUS "Found SCOTCH (version ${SCOTCH_VERSION})") endif() # For SCOTCH version > 6, need to add libraries scotch and ptscotch if (NOT ${SCOTCH_VERSION} VERSION_LESS "6") set(SCOTCH_LIBRARIES ${PTSCOTCH_LIBRARY} ${SCOTCH_LIBRARY} ${PTSCOTCHERR_LIBRARY}) set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${SCOTCH_LIBRARY}) endif() # PT-SCOTCH was first introduced in SCOTCH version 5.0 # FIXME: parallel graph partitioning features in PT-SCOTCH was first # introduced in 5.1. Do we require version 5.1? if (NOT ${SCOTCH_VERSION} VERSION_LESS "5.0") set(SCOTCH_TEST_LIB_CPP "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/scotch_test_lib.cpp") file(WRITE ${SCOTCH_TEST_LIB_CPP} " #define MPICH_IGNORE_CXX_SEEK 1 #include #include #include #include #include #include int main() { int provided; SCOTCH_Dgraph dgrafdat; MPI_Init_thread(0, 0, MPI_THREAD_MULTIPLE, &provided); if (SCOTCH_dgraphInit(&dgrafdat, MPI_COMM_WORLD) != 0) { if (MPI_THREAD_MULTIPLE > provided) { std::cout << \"MPI implementation is not thread-safe:\" << std::endl; std::cout << \"SCOTCH should be compiled without SCOTCH_PTHREAD\" << std::endl; exit(1); } else { std::cout << \"libptscotch linked to libscotch or other unknown error\" << std::endl; exit(2); } } else { SCOTCH_dgraphExit(&dgrafdat); } MPI_Finalize(); return 0; } ") message(STATUS "Performing test SCOTCH_TEST_RUNS") try_run( SCOTCH_TEST_LIB_EXITCODE SCOTCH_TEST_LIB_COMPILED ${CMAKE_CURRENT_BINARY_DIR} ${SCOTCH_TEST_LIB_CPP} CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}" "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}" COMPILE_OUTPUT_VARIABLE SCOTCH_TEST_LIB_COMPILE_OUTPUT RUN_OUTPUT_VARIABLE SCOTCH_TEST_LIB_OUTPUT ) if (SCOTCH_TEST_LIB_COMPILED AND SCOTCH_TEST_LIB_EXITCODE EQUAL 0) message(STATUS "Performing test SCOTCH_TEST_RUNS - Success") set(SCOTCH_TEST_RUNS TRUE) else() message(STATUS "Performing test SCOTCH_TEST_RUNS - Failed") if (SCOTCH_DEBUG) # Output some variables message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " "SCOTCH_TEST_LIB_COMPILED = ${SCOTCH_TEST_LIB_COMPILED}") message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " "SCOTCH_TEST_LIB_COMPILE_OUTPUT = ${SCOTCH_TEST_LIB_COMPILE_OUTPUT}") message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " "SCOTCH_TEST_LIB_EXITCODE = ${SCOTCH_TEST_LIB_EXITCODE}") message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " "SCOTCH_TEST_LIB_OUTPUT = ${SCOTCH_TEST_LIB_OUTPUT}") endif() endif() # If program does not run, try adding zlib library and test again if(NOT SCOTCH_TEST_RUNS) if (NOT ZLIB_FOUND) find_package(ZLIB) endif() if (ZLIB_INCLUDE_DIRS AND ZLIB_LIBRARIES) set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${ZLIB_INCLUDE_DIRS}) set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${ZLIB_LIBRARIES}) message(STATUS "Performing test SCOTCH_ZLIB_TEST_RUNS") try_run( SCOTCH_ZLIB_TEST_LIB_EXITCODE SCOTCH_ZLIB_TEST_LIB_COMPILED ${CMAKE_CURRENT_BINARY_DIR} ${SCOTCH_TEST_LIB_CPP} CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}" "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}" COMPILE_OUTPUT_VARIABLE SCOTCH_ZLIB_TEST_LIB_COMPILE_OUTPUT RUN_OUTPUT_VARIABLE SCOTCH_ZLIB_TEST_LIB_OUTPUT ) # Add zlib flags if required and set test run to 'true' if (SCOTCH_ZLIB_TEST_LIB_COMPILED AND SCOTCH_ZLIB_TEST_LIB_EXITCODE EQUAL 0) message(STATUS "Performing test SCOTCH_ZLIB_TEST_RUNS - Success") set(SCOTCH_INCLUDE_DIRS ${SCOTCH_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS}) set(SCOTCH_LIBRARIES ${SCOTCH_LIBRARIES} ${ZLIB_LIBRARIES}) set(SCOTCH_TEST_RUNS TRUE) else() message(STATUS "Performing test SCOTCH_ZLIB_TEST_RUNS - Failed") if (SCOTCH_DEBUG) message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " "SCOTCH_ZLIB_TEST_LIB_COMPILED = ${SCOTCH_ZLIB_TEST_LIB_COMPILED}") message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " "SCOTCH_ZLIB_TEST_LIB_COMPILE_OUTPUT = ${SCOTCH_ZLIB_TEST_LIB_COMPILE_OUTPUT}") message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " "SCOTCH_TEST_LIB_EXITCODE = ${SCOTCH_TEST_LIB_EXITCODE}") message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " "SCOTCH_TEST_LIB_OUTPUT = ${SCOTCH_TEST_LIB_OUTPUT}") endif() endif() endif() endif() endif() endif() # Standard package handling find_package_handle_standard_args(SCOTCH "SCOTCH could not be found. Be sure to set SCOTCH_DIR." SCOTCH_LIBRARIES SCOTCH_INCLUDE_DIRS SCOTCH_TEST_RUNS) dolfin-1.3.0/cmake/modules/FindBLAS.cmake0000644000175000017500000004663712263014601017735 0ustar johannrjohannr# - Find BLAS library # This module finds an installed fortran library that implements the BLAS # linear-algebra interface (see http://www.netlib.org/blas/). # The list of libraries searched for is taken # from the autoconf macro file, acx_blas.m4 (distributed at # http://ac-archive.sourceforge.net/ac-archive/acx_blas.html). # # This module sets the following variables: # BLAS_FOUND - set to true if a library implementing the BLAS interface # is found # BLAS_LINKER_FLAGS - uncached list of required linker flags (excluding -l # and -L). # BLAS_LIBRARIES - uncached list of libraries (using full path name) to # link against to use BLAS # BLAS95_LIBRARIES - uncached list of libraries (using full path name) # to link against to use BLAS95 interface # BLAS95_FOUND - set to true if a library implementing the BLAS f95 interface # is found # BLA_STATIC if set on this determines what kind of linkage we do (static) # BLA_VENDOR if set checks only the specified vendor, if not set checks # all the possibilities # BLA_F95 if set on tries to find the f95 interfaces for BLAS/LAPACK ########## ### List of vendors (BLA_VENDOR) valid in this module ## Goto,ATLAS PhiPACK,CXML,DXML,SunPerf,SCSL,SGIMATH,IBMESSL,Intel10_32 (intel mkl v10 32 bit),Intel10_64lp (intel mkl v10 64 bit,lp thread model, lp64 model), ## Intel10_64lp_seq (intel mkl v10 64 bit,sequential code, lp64 model), ## Intel( older versions of mkl 32 and 64 bit), ACML,ACML_MP,ACML_GPU,Apple, NAS, Generic # C/CXX should be enabled to use Intel mkl #============================================================================= # Copyright 2007-2009 Kitware, Inc. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= include(CheckFunctionExists) include(CheckFortranFunctionExists) set(_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) # Check the language being used get_property( _LANGUAGES_ GLOBAL PROPERTY ENABLED_LANGUAGES ) if( _LANGUAGES_ MATCHES Fortran AND CMAKE_Fortran_COMPILER_WORKS ) set( _CHECK_FORTRAN TRUE ) elseif( (_LANGUAGES_ MATCHES C) OR (_LANGUAGES_ MATCHES CXX) ) set( _CHECK_FORTRAN FALSE ) else() if(BLAS_FIND_REQUIRED) message(FATAL_ERROR "FindBLAS requires Fortran, C, or C++ to be enabled.") else(BLAS_FIND_REQUIRED) message(STATUS "Looking for BLAS... - NOT found (Unsupported languages)") return() endif(BLAS_FIND_REQUIRED) endif( ) macro(Check_Fortran_Libraries LIBRARIES _prefix _name _flags _list _thread) # This macro checks for the existence of the combination of fortran libraries # given by _list. If the combination is found, this macro checks (using the # Check_Fortran_Function_Exists macro) whether can link against that library # combination using the name of a routine given by _name using the linker # flags given by _flags. If the combination of libraries is found and passes # the link test, LIBRARIES is set to the list of complete library paths that # have been found. Otherwise, LIBRARIES is set to FALSE. # N.B. _prefix is the prefix applied to the names of all cached variables that # are generated internally and marked advanced by this macro. set(_libdir ${ARGN}) set(_libraries_work TRUE) set(${LIBRARIES}) set(_combined_name) if (NOT _libdir) if (WIN32) set(_libdir ENV LIB) elseif (APPLE) set(_libdir /usr/local/lib /usr/lib /usr/local/lib64 /usr/lib64 ENV DYLD_LIBRARY_PATH) else () set(_libdir /usr/local/lib /usr/lib /usr/local/lib64 /usr/lib64 ENV LD_LIBRARY_PATH) endif () endif () foreach(_library ${_list}) set(_combined_name ${_combined_name}_${_library}) if(_libraries_work) if (BLA_STATIC) if (WIN32) set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES}) endif ( WIN32 ) if (APPLE) set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES}) else (APPLE) set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) endif (APPLE) else (BLA_STATIC) if (CMAKE_SYSTEM_NAME STREQUAL "Linux") # for ubuntu's libblas3gf and liblapack3gf packages #set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} .so.3gf) endif () endif (BLA_STATIC) find_library(${_prefix}_${_library}_LIBRARY NAMES ${_library} PATHS ${_libdir} ) mark_as_advanced(${_prefix}_${_library}_LIBRARY) set(${LIBRARIES} ${${LIBRARIES}} ${${_prefix}_${_library}_LIBRARY}) set(_libraries_work ${${_prefix}_${_library}_LIBRARY}) endif(_libraries_work) endforeach(_library ${_list}) if(_libraries_work) # Test this combination of libraries. set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${${LIBRARIES}} ${_thread}) # message("DEBUG: CMAKE_REQUIRED_LIBRARIES = ${CMAKE_REQUIRED_LIBRARIES}") # GNW: Add special flags for static BLAS libraries for function check if(BLA_STATIC AND UNIX) set(CMAKE_REQUIRED_LIBRARIES ${_flags} "-Wl,--start-group ${${LIBRARIES}};-Wl,--end-group" ${_thread}) endif() if (_CHECK_FORTRAN) check_fortran_function_exists("${_name}" ${_prefix}${_combined_name}_WORKS) else() check_function_exists("${_name}_" ${_prefix}${_combined_name}_WORKS) endif() set(CMAKE_REQUIRED_LIBRARIES) mark_as_advanced(${_prefix}${_combined_name}_WORKS) set(_libraries_work ${${_prefix}${_combined_name}_WORKS}) endif(_libraries_work) if(NOT _libraries_work) set(${LIBRARIES} FALSE) endif(NOT _libraries_work) #message("DEBUG: ${LIBRARIES} = ${${LIBRARIES}}") endmacro(Check_Fortran_Libraries) set(BLAS_LINKER_FLAGS) set(BLAS_LIBRARIES) set(BLAS95_LIBRARIES) if ($ENV{BLA_VENDOR} MATCHES ".+") set(BLA_VENDOR $ENV{BLA_VENDOR}) else ($ENV{BLA_VENDOR} MATCHES ".+") if(NOT BLA_VENDOR) set(BLA_VENDOR "All") endif(NOT BLA_VENDOR) endif ($ENV{BLA_VENDOR} MATCHES ".+") if (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All") if(NOT BLAS_LIBRARIES) # gotoblas (http://www.tacc.utexas.edu/tacc-projects/gotoblas2) check_fortran_libraries( BLAS_LIBRARIES BLAS sgemm "" "goto2" "" ) endif(NOT BLAS_LIBRARIES) endif (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All") if (BLA_VENDOR STREQUAL "ATLAS" OR BLA_VENDOR STREQUAL "All") if(NOT BLAS_LIBRARIES) # BLAS in ATLAS library? (http://math-atlas.sourceforge.net/) check_fortran_libraries( BLAS_LIBRARIES BLAS dgemm "" "cblas;f77blas;atlas" "" ) endif(NOT BLAS_LIBRARIES) endif (BLA_VENDOR STREQUAL "ATLAS" OR BLA_VENDOR STREQUAL "All") # BLAS in PhiPACK libraries? (requires generic BLAS lib, too) if (BLA_VENDOR STREQUAL "PhiPACK" OR BLA_VENDOR STREQUAL "All") if(NOT BLAS_LIBRARIES) check_fortran_libraries( BLAS_LIBRARIES BLAS sgemm "" "sgemm;dgemm;blas" "" ) endif(NOT BLAS_LIBRARIES) endif (BLA_VENDOR STREQUAL "PhiPACK" OR BLA_VENDOR STREQUAL "All") # BLAS in Alpha CXML library? if (BLA_VENDOR STREQUAL "CXML" OR BLA_VENDOR STREQUAL "All") if(NOT BLAS_LIBRARIES) check_fortran_libraries( BLAS_LIBRARIES BLAS sgemm "" "cxml" "" ) endif(NOT BLAS_LIBRARIES) endif (BLA_VENDOR STREQUAL "CXML" OR BLA_VENDOR STREQUAL "All") # BLAS in Alpha DXML library? (now called CXML, see above) if (BLA_VENDOR STREQUAL "DXML" OR BLA_VENDOR STREQUAL "All") if(NOT BLAS_LIBRARIES) check_fortran_libraries( BLAS_LIBRARIES BLAS sgemm "" "dxml" "" ) endif(NOT BLAS_LIBRARIES) endif (BLA_VENDOR STREQUAL "DXML" OR BLA_VENDOR STREQUAL "All") # BLAS in Sun Performance library? if (BLA_VENDOR STREQUAL "SunPerf" OR BLA_VENDOR STREQUAL "All") if(NOT BLAS_LIBRARIES) check_fortran_libraries( BLAS_LIBRARIES BLAS sgemm "-xlic_lib=sunperf" "sunperf;sunmath" "" ) if(BLAS_LIBRARIES) set(BLAS_LINKER_FLAGS "-xlic_lib=sunperf") endif(BLAS_LIBRARIES) endif(NOT BLAS_LIBRARIES) endif (BLA_VENDOR STREQUAL "SunPerf" OR BLA_VENDOR STREQUAL "All") # BLAS in SCSL library? (SGI/Cray Scientific Library) if (BLA_VENDOR STREQUAL "SCSL" OR BLA_VENDOR STREQUAL "All") if(NOT BLAS_LIBRARIES) check_fortran_libraries( BLAS_LIBRARIES BLAS sgemm "" "scsl" "" ) endif(NOT BLAS_LIBRARIES) endif (BLA_VENDOR STREQUAL "SCSL" OR BLA_VENDOR STREQUAL "All") # BLAS in SGIMATH library? if (BLA_VENDOR STREQUAL "SGIMATH" OR BLA_VENDOR STREQUAL "All") if(NOT BLAS_LIBRARIES) check_fortran_libraries( BLAS_LIBRARIES BLAS sgemm "" "complib.sgimath" "" ) endif(NOT BLAS_LIBRARIES) endif (BLA_VENDOR STREQUAL "SGIMATH" OR BLA_VENDOR STREQUAL "All") # BLAS in IBM ESSL library? (requires generic BLAS lib, too) if (BLA_VENDOR STREQUAL "IBMESSL" OR BLA_VENDOR STREQUAL "All") if(NOT BLAS_LIBRARIES) check_fortran_libraries( BLAS_LIBRARIES BLAS sgemm "" "essl;blas" "" ) endif(NOT BLAS_LIBRARIES) endif (BLA_VENDOR STREQUAL "IBMESSL" OR BLA_VENDOR STREQUAL "All") #BLAS in acml library? if (BLA_VENDOR MATCHES "ACML.*" OR BLA_VENDOR STREQUAL "All") if( ((BLA_VENDOR STREQUAL "ACML") AND (NOT BLAS_ACML_LIB_DIRS)) OR ((BLA_VENDOR STREQUAL "ACML_MP") AND (NOT BLAS_ACML_MP_LIB_DIRS)) OR ((BLA_VENDOR STREQUAL "ACML_GPU") AND (NOT BLAS_ACML_GPU_LIB_DIRS)) ) # try to find acml in "standard" paths if( WIN32 ) file( GLOB _ACML_ROOT "C:/AMD/acml*/ACML-EULA.txt" ) else() file( GLOB _ACML_ROOT "/opt/acml*/ACML-EULA.txt" ) endif() if( WIN32 ) file( GLOB _ACML_GPU_ROOT "C:/AMD/acml*/GPGPUexamples" ) else() file( GLOB _ACML_GPU_ROOT "/opt/acml*/GPGPUexamples" ) endif() list(GET _ACML_ROOT 0 _ACML_ROOT) list(GET _ACML_GPU_ROOT 0 _ACML_GPU_ROOT) if( _ACML_ROOT ) get_filename_component( _ACML_ROOT ${_ACML_ROOT} PATH ) if( SIZEOF_INTEGER EQUAL 8 ) set( _ACML_PATH_SUFFIX "_int64" ) else() set( _ACML_PATH_SUFFIX "" ) endif() if( CMAKE_Fortran_COMPILER_ID STREQUAL "Intel" ) set( _ACML_COMPILER32 "ifort32" ) set( _ACML_COMPILER64 "ifort64" ) elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "SunPro" ) set( _ACML_COMPILER32 "sun32" ) set( _ACML_COMPILER64 "sun64" ) elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "PGI" ) set( _ACML_COMPILER32 "pgi32" ) if( WIN32 ) set( _ACML_COMPILER64 "win64" ) else() set( _ACML_COMPILER64 "pgi64" ) endif() elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "Open64" ) # 32 bit builds not supported on Open64 but for code simplicity # We'll just use the same directory twice set( _ACML_COMPILER32 "open64_64" ) set( _ACML_COMPILER64 "open64_64" ) elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "NAG" ) set( _ACML_COMPILER32 "nag32" ) set( _ACML_COMPILER64 "nag64" ) else() #if( CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" ) set( _ACML_COMPILER32 "gfortran32" ) set( _ACML_COMPILER64 "gfortran64" ) endif() if( BLA_VENDOR STREQUAL "ACML_MP" ) set(_ACML_MP_LIB_DIRS "${_ACML_ROOT}/${_ACML_COMPILER32}_mp${_ACML_PATH_SUFFIX}/lib" "${_ACML_ROOT}/${_ACML_COMPILER64}_mp${_ACML_PATH_SUFFIX}/lib" ) else() #if( _BLAS_VENDOR STREQUAL "ACML" ) set(_ACML_LIB_DIRS "${_ACML_ROOT}/${_ACML_COMPILER32}${_ACML_PATH_SUFFIX}/lib" "${_ACML_ROOT}/${_ACML_COMPILER64}${_ACML_PATH_SUFFIX}/lib" ) endif() endif() elseif(BLAS_${BLA_VENDOR}_LIB_DIRS) set(_${BLA_VENDOR}_LIB_DIRS ${BLAS_${BLA_VENDOR}_LIB_DIRS}) endif() if( BLA_VENDOR STREQUAL "ACML_MP" ) foreach( BLAS_ACML_MP_LIB_DIRS ${_ACML_MP_LIB_DIRS}) check_fortran_libraries ( BLAS_LIBRARIES BLAS sgemm "" "acml_mp;acml_mv" "" ${BLAS_ACML_MP_LIB_DIRS} ) if( BLAS_LIBRARIES ) break() endif() endforeach() elseif( BLA_VENDOR STREQUAL "ACML_GPU" ) foreach( BLAS_ACML_GPU_LIB_DIRS ${_ACML_GPU_LIB_DIRS}) check_fortran_libraries ( BLAS_LIBRARIES BLAS sgemm "" "acml;acml_mv;CALBLAS" "" ${BLAS_ACML_GPU_LIB_DIRS} ) if( BLAS_LIBRARIES ) break() endif() endforeach() else() #if( _BLAS_VENDOR STREQUAL "ACML" ) foreach( BLAS_ACML_LIB_DIRS ${_ACML_LIB_DIRS} ) check_fortran_libraries ( BLAS_LIBRARIES BLAS sgemm "" "acml;acml_mv" "" ${BLAS_ACML_LIB_DIRS} ) if( BLAS_LIBRARIES ) break() endif() endforeach() endif() # Either acml or acml_mp should be in LD_LIBRARY_PATH but not both if(NOT BLAS_LIBRARIES) check_fortran_libraries( BLAS_LIBRARIES BLAS sgemm "" "acml;acml_mv" "" ) endif(NOT BLAS_LIBRARIES) if(NOT BLAS_LIBRARIES) check_fortran_libraries( BLAS_LIBRARIES BLAS sgemm "" "acml_mp;acml_mv" "" ) endif(NOT BLAS_LIBRARIES) if(NOT BLAS_LIBRARIES) check_fortran_libraries( BLAS_LIBRARIES BLAS sgemm "" "acml;acml_mv;CALBLAS" "" ) endif(NOT BLAS_LIBRARIES) endif () # ACML # Apple BLAS library? if (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All") if(NOT BLAS_LIBRARIES) check_fortran_libraries( BLAS_LIBRARIES BLAS dgemm "" "Accelerate" "" ) endif(NOT BLAS_LIBRARIES) endif (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All") if (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All") if ( NOT BLAS_LIBRARIES ) check_fortran_libraries( BLAS_LIBRARIES BLAS dgemm "" "vecLib" "" ) endif ( NOT BLAS_LIBRARIES ) endif (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All") # Generic BLAS library? if (BLA_VENDOR STREQUAL "Generic" OR BLA_VENDOR STREQUAL "All") if(NOT BLAS_LIBRARIES) check_fortran_libraries( BLAS_LIBRARIES BLAS sgemm "" "blas" "" ) endif(NOT BLAS_LIBRARIES) endif (BLA_VENDOR STREQUAL "Generic" OR BLA_VENDOR STREQUAL "All") #BLAS in intel mkl 10 library? (em64t 64bit) if (BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All") if (NOT WIN32) set(LM "-lm") endif () if (_LANGUAGES_ MATCHES C OR _LANGUAGES_ MATCHES CXX) if(BLAS_FIND_QUIETLY OR NOT BLAS_FIND_REQUIRED) find_package(Threads) else(BLAS_FIND_QUIETLY OR NOT BLAS_FIND_REQUIRED) find_package(Threads REQUIRED) endif(BLAS_FIND_QUIETLY OR NOT BLAS_FIND_REQUIRED) set(BLAS_SEARCH_LIBS "") if(BLA_F95) set(BLAS_mkl_SEARCH_SYMBOL SGEMM) set(_LIBRARIES BLAS95_LIBRARIES) if (WIN32) list(APPEND BLAS_SEARCH_LIBS "mkl_blas95 mkl_intel_c mkl_intel_thread mkl_core libguide40") else (WIN32) if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All") list(APPEND BLAS_SEARCH_LIBS "mkl_blas95 mkl_intel mkl_intel_thread mkl_core guide") endif () if (BLA_VENDOR STREQUAL "Intel10_64lp" OR BLA_VENDOR STREQUAL "All") # old version list(APPEND BLAS_SEARCH_LIBS "mkl_blas95 mkl_intel_lp64 mkl_intel_thread mkl_core guide") # mkl >= 10.3 if (CMAKE_C_COMPILER MATCHES ".+gcc.*") list(APPEND BLAS_SEARCH_LIBS "mkl_blas95_lp64 mkl_intel_lp64 mkl_gnu_thread mkl_core") set(LM "${LM};-lgomp") else () list(APPEND BLAS_SEARCH_LIBS "mkl_blas95_lp64 mkl_intel_lp64 mkl_intel_thread mkl_core iomp5") endif () endif () endif (WIN32) if (BLA_VENDOR STREQUAL "Intel10_64lp_seq" OR BLA_VENDOR STREQUAL "All") list(APPEND BLAS_SEARCH_LIBS "mkl_blas95_lp64 mkl_intel_lp64 mkl_sequential mkl_core") endif () else (BLA_F95) set(BLAS_mkl_SEARCH_SYMBOL sgemm) set(_LIBRARIES BLAS_LIBRARIES) if (WIN32) list(APPEND BLAS_SEARCH_LIBS "mkl_c_dll mkl_intel_thread_dll mkl_core_dll libguide40") else (WIN32) if (BLA_VENDOR STREQUAL "Intel10_32" OR BLA_VENDOR STREQUAL "All") list(APPEND BLAS_SEARCH_LIBS "mkl_intel mkl_intel_thread mkl_core guide") endif () if (BLA_VENDOR STREQUAL "Intel10_64lp" OR BLA_VENDOR STREQUAL "All") # old version list(APPEND BLAS_SEARCH_LIBS "mkl_intel_lp64 mkl_intel_thread mkl_core guide") # mkl >= 10.3 if (CMAKE_C_COMPILER MATCHES ".+gcc.*") list(APPEND BLAS_SEARCH_LIBS "mkl_intel_lp64 mkl_gnu_thread mkl_core") set(LM "${LM};-lgomp") else () list(APPEND BLAS_SEARCH_LIBS "mkl_intel_lp64 mkl_intel_thread mkl_core iomp5") endif () endif () #older vesions of intel mkl libs if (BLA_VENDOR STREQUAL "Intel" OR BLA_VENDOR STREQUAL "All") list(APPEND BLAS_SEARCH_LIBS "mkl") list(APPEND BLAS_SEARCH_LIBS "mkl_ia32") list(APPEND BLAS_SEARCH_LIBS "mkl_em64t") endif () endif (WIN32) if (BLA_VENDOR STREQUAL "Intel10_64lp_seq" OR BLA_VENDOR STREQUAL "All") list(APPEND BLAS_SEARCH_LIBS "mkl_intel_lp64 mkl_sequential mkl_core") endif () endif (BLA_F95) foreach (IT ${BLAS_SEARCH_LIBS}) string(REPLACE " " ";" SEARCH_LIBS ${IT}) if (${_LIBRARIES}) else () check_fortran_libraries( ${_LIBRARIES} BLAS ${BLAS_mkl_SEARCH_SYMBOL} "" "${SEARCH_LIBS}" "${CMAKE_THREAD_LIBS_INIT};${LM}" ) endif () endforeach () endif (_LANGUAGES_ MATCHES C OR _LANGUAGES_ MATCHES CXX) endif (BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All") if(BLA_F95) if(BLAS95_LIBRARIES) set(BLAS95_FOUND TRUE) else(BLAS95_LIBRARIES) set(BLAS95_FOUND FALSE) endif(BLAS95_LIBRARIES) if(NOT BLAS_FIND_QUIETLY) if(BLAS95_FOUND) message(STATUS "A library with BLAS95 API found.") else(BLAS95_FOUND) if(BLAS_FIND_REQUIRED) message(FATAL_ERROR "A required library with BLAS95 API not found. Please specify library location.") else(BLAS_FIND_REQUIRED) message(STATUS "A library with BLAS95 API not found. Please specify library location.") endif(BLAS_FIND_REQUIRED) endif(BLAS95_FOUND) endif(NOT BLAS_FIND_QUIETLY) set(BLAS_FOUND TRUE) set(BLAS_LIBRARIES "${BLAS95_LIBRARIES}") else(BLA_F95) if(BLAS_LIBRARIES) set(BLAS_FOUND TRUE) else(BLAS_LIBRARIES) set(BLAS_FOUND FALSE) endif(BLAS_LIBRARIES) if(NOT BLAS_FIND_QUIETLY) if(BLAS_FOUND) message(STATUS "A library with BLAS API found.") else(BLAS_FOUND) if(BLAS_FIND_REQUIRED) message(FATAL_ERROR "A required library with BLAS API not found. Please specify library location." ) else(BLAS_FIND_REQUIRED) message(STATUS "A library with BLAS API not found. Please specify library location." ) endif(BLAS_FIND_REQUIRED) endif(BLAS_FOUND) endif(NOT BLAS_FIND_QUIETLY) endif(BLA_F95) set(CMAKE_FIND_LIBRARY_SUFFIXES ${_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) dolfin-1.3.0/cmake/modules/FindGMP.cmake0000644000175000017500000000567412263014601017633 0ustar johannrjohannr# - Try to find the GMP librairies # Once done this will define # # GMP_FOUND - system has GMP lib # GMP_INCLUDE_DIRS - include directories for GMP # GMP_LIBRARIES - libraries for GMP #============================================================================= # Copyright (c) 2006, Laurent Montel, # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= if (GMP_INCLUDE_DIRS AND GMP_LIBRARIES) # Already in cache, be silent set(GMP_FIND_QUIETLY TRUE) endif (GMP_INCLUDE_DIRS AND GMP_LIBRARIES) find_path(GMP_INCLUDE_DIRS NAMES gmp.h HINTS ${GMP_DIR}/include $ENV{GMP_DIR}/include DOC "Directory where the GMP header file is located" ) find_library(GMP_LIBRARIES NAMES gmp libgmp HINTS ${GMP_DIR}/lib $ENV{GMP_DIR}/lib NO_DEFAULT_PATH DOC "The GMP libraries" ) find_library(GMP_LIBRARIES NAMES gmp libgmp DOC "The GMP libraries" ) find_library(GMPXX_LIBRARIES NAMES gmpxx HINTS ${GMP_DIR}/lib $ENV{GMP_DIR}/lib NO_DEFAULT_PATH DOC "The GMPXX libraries" ) find_library(GMPXX_LIBRARIES NAMES gmpxx DOC "The GMPXX libraries" ) find_library(MPFR_LIBRARIES NAMES mpfr HINTS ${GMP_DIR}/lib $ENV{GMP_DIR}/lib NO_DEFAULT_PATH DOC "The NPFR libraries" ) find_library(MPFR_LIBRARIES NAMES mpfr DOC "The NPFR libraries" ) set(GMP_LIBRARIES ${GMP_LIBRARIES} ${GMPXX_LIBRARIES} ${MPFR_LIBRARIES}) message(STATUS "GMP_LIBRARIES = ${GMP_LIBRARIES}") mark_as_advanced(GMP_INCLUDE_DIRS GMP_LIBRARIES) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(GMP DEFAULT_MSG GMP_LIBRARIES GMP_INCLUDE_DIRS) dolfin-1.3.0/cmake/modules/CheckOpenMP.cmake0000644000175000017500000000221012263014601020462 0ustar johannrjohannr# CheckOpenMP - this module defines the following macros # check_openmp_unsigned_int_loop_control_variable() # - variable to store the result # This macro checks if the control variable of a loop associated # with a for directive can be of unsigned type. In OpenMP 2.5, # only signed integer type was allowed. See Section 2.5.1 on # p. 38 of the OpenMP 3.0 Specification. include(CheckCXXSourceRuns) macro(check_openmp_unsigned_int_loop_control_variable _test_result) if (NOT OPENMP_FOUND) find_package(OpenMP) endif() set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${OpenMP_CXX_FLAGS}") check_cxx_source_runs(" #include #include #define N 20 int main () { float a[N]; omp_set_dynamic(0); omp_set_num_threads(10); for (int i=0; i int main() { int n = 5; double x[5]; void *Symbolic, *Numeric; int i; int Ap[] = { 0, 2, 5, 9, 10, 12 }; int Ai[] = { 0, 1, 0, 2, 4, 1, 2, 3, 4, 2, 1, 4 }; double Ax[] = { 2, 3, 3, -1, 4, 4, -3, 1, 2, 2, 6, 1 }; double b[] = { 8, 45, -3, 3, 19 }; umfpack_di_symbolic(n, n, Ap, Ai, Ax, &Symbolic, NULL, NULL); umfpack_di_numeric(Ap, Ai, Ax, Symbolic, &Numeric, NULL, NULL); umfpack_di_free_symbolic(&Symbolic); umfpack_di_solve(UMFPACK_A, Ap, Ai, Ax, x, b, Numeric, NULL, NULL); umfpack_di_free_numeric(&Numeric); return 0; } " UMFPACK_TEST_RUNS) endif() # Standard package handling include(FindPackageHandleStandardArgs) find_package_handle_standard_args(UMFPACK "UMFPACK could not be found. Be sure to set UMFPACK_DIR." UMFPACK_LIBRARIES UMFPACK_INCLUDE_DIRS AMD_LIBRARIES BLAS_LIBRARIES UMFPACK_TEST_RUNS) dolfin-1.3.0/cmake/modules/FindPETSc.cmake0000644000175000017500000003161112263014601020114 0ustar johannrjohannr# - Try to find PETSc # Once done this will define # # PETSC_FOUND - system has PETSc # PETSC_INCLUDE_DIRS - include directories for PETSc # PETSC_LIBRARIES - libraries for PETSc # PETSC_DIR - directory where PETSc is built # PETSC_ARCH - architecture for which PETSc is built # PETSC_CUSP_FOUND - PETSc has Cusp support # PETSC_VERSION - version for PETSc # PETSC_VERSION_MAJOR - First number in PETSC_VERSION # PETSC_VERSION_MINOR - Second number in PETSC_VERSION # PETSC_VERSION_SUBMINOR - Third number in PETSC_VERSION # # This config script is (very loosley) based on a PETSc CMake script by Jed Brown. #============================================================================= # Copyright (C) 2010-2012 Garth N. Wells, Anders Logg and Johannes Ring # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. #============================================================================= # NOTE: The PETSc Makefile returns a bunch of libraries with '-L' and '-l', # wheres we would prefer complete paths. For a discussion, see # http://www.cmake.org/Wiki/CMake:Improving_Find*_Modules#Current_workarounds message(STATUS "Checking for package 'PETSc'") # Set debian_arches (PETSC_ARCH for Debian-style installations) foreach (debian_arches linux kfreebsd) if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") set(DEBIAN_FLAVORS ${debian_arches}-gnu-c-debug ${debian_arches}-gnu-c-opt ${DEBIAN_FLAVORS}) else() set(DEBIAN_FLAVORS ${debian_arches}-gnu-c-opt ${debian_arches}-gnu-c-debug ${DEBIAN_FLAVORS}) endif() endforeach() # List of possible locations for PETSC_DIR set(petsc_dir_locations "") list(APPEND petsc_dir_locations "/usr/lib/petscdir/3.4.2") # Debian location list(APPEND petsc_dir_locations "/usr/lib/petscdir/3.2") # Debian location list(APPEND petsc_dir_locations "/usr/lib/petscdir/3.1") # Debian location list(APPEND petsc_dir_locations "/usr/lib/petscdir/3.0.0") # Debian location list(APPEND petsc_dir_locations "/opt/local/lib/petsc") # Macports location list(APPEND petsc_dir_locations "/usr/local/lib/petsc") # User location list(APPEND petsc_dir_locations "$ENV{HOME}/petsc") # User location # Add other possible locations for PETSC_DIR set(_SYSTEM_LIB_PATHS "${CMAKE_SYSTEM_LIBRARY_PATH};${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") string(REGEX REPLACE ":" ";" libdirs ${_SYSTEM_LIB_PATHS}) foreach (libdir ${libdirs}) get_filename_component(petsc_dir_location "${libdir}/" PATH) list(APPEND petsc_dir_locations ${petsc_dir_location}) endforeach() # Try to figure out PETSC_DIR by finding petsc.h find_path(PETSC_DIR include/petsc.h HINTS ${PETSC_DIR} $ENV{PETSC_DIR} PATHS ${petsc_dir_locations} DOC "PETSc directory") # Report result of search for PETSC_DIR if (DEFINED PETSC_DIR) message(STATUS "PETSC_DIR is ${PETSC_DIR}") else() message(STATUS "PETSC_DIR is empty") endif() # Try to figure out PETSC_ARCH if not set if (PETSC_DIR AND NOT PETSC_ARCH) set(_petsc_arches $ENV{PETSC_ARCH} # If set, use environment variable first ${DEBIAN_FLAVORS} # Debian defaults x86_64-unknown-linux-gnu i386-unknown-linux-gnu) set(petscconf "NOTFOUND" CACHE FILEPATH "Cleared" FORCE) foreach (arch ${_petsc_arches}) if (NOT PETSC_ARCH) find_path(petscconf petscconf.h HINTS ${PETSC_DIR} PATH_SUFFIXES ${arch}/include bmake/${arch} NO_DEFAULT_PATH) if (petscconf) set(PETSC_ARCH "${arch}" CACHE STRING "PETSc build architecture") endif() endif() endforeach() set(petscconf "NOTFOUND" CACHE INTERNAL "Scratch variable" FORCE) endif() # Report result of search for PETSC_ARCH if (DEFINED PETSC_ARCH) message(STATUS "PETSC_ARCH is ${PETSC_ARCH}") else() message(STATUS "PETSC_ARCH is empty") endif() # Look for petscconf.h if (EXISTS ${PETSC_DIR}/${PETSC_ARCH}/include/petscconf.h) message(STATUS "Found petscconf.h") set(FOUND_PETSC_CONF 1) else() message(STATUS "Unable to find petscconf.h") endif() # Get variables from PETSc configuration if (FOUND_PETSC_CONF) # Create a temporary Makefile to probe the PETSc configuration set(petsc_config_makefile ${PROJECT_BINARY_DIR}/Makefile.petsc) file(WRITE ${petsc_config_makefile} "# This file was autogenerated by FindPETSc.cmake PETSC_DIR = ${PETSC_DIR} PETSC_ARCH = ${PETSC_ARCH} include ${PETSC_DIR}/conf/variables show : -@echo -n \${\${VARIABLE}} ") # Define macro for getting PETSc variables from Makefile macro(PETSC_GET_VARIABLE var name) set(${var} "NOTFOUND" CACHE INTERNAL "Cleared" FORCE) execute_process(COMMAND ${CMAKE_MAKE_PROGRAM} --no-print-directory -f ${petsc_config_makefile} show VARIABLE=${name} OUTPUT_VARIABLE ${var} RESULT_VARIABLE petsc_return) endmacro() # Call macro to get the PETSc variables petsc_get_variable(PETSC_INCLUDE PETSC_INCLUDE) # 3.1 petsc_get_variable(PETSC_CC_INCLUDES PETSC_CC_INCLUDES) # dev set(PETSC_INCLUDE ${PETSC_INCLUDE} ${PETSC_CC_INCLUDES}) petsc_get_variable(PETSC_LIB_BASIC PETSC_LIB_BASIC) petsc_get_variable(PETSC_LIB_DIR PETSC_LIB_DIR) set(PETSC_LIB "-L${PETSC_LIB_DIR} ${PETSC_LIB_BASIC}") # Call macro to get the PETSc 3rd-party libraries petsc_get_variable(PETSC_EXTERNAL_LIB_BASIC PETSC_EXTERNAL_LIB_BASIC) # Extract include paths and libraries from compile command line include(ResolveCompilerPaths) resolve_includes(PETSC_INCLUDE_DIRS "${PETSC_INCLUDE}") resolve_libraries(PETSC_LIBRARIES "${PETSC_LIB}") resolve_libraries(PETSC_EXTERNAL_LIBRARIES "${PETSC_EXTERNAL_LIB_BASIC}") # Add some extra libraries on OSX if (APPLE) # CMake will have troubel finding the gfortan libraries if compiling # with clang (the libs may be required by 3rd party Fortran libraries) find_program(GFORTRAN_EXECUTABLE gfortran) if (GFORTRAN_EXECUTABLE) execute_process(COMMAND ${GFORTRAN_EXECUTABLE} -print-file-name=libgfortran.dylib OUTPUT_VARIABLE GFORTRAN_LIBRARY OUTPUT_STRIP_TRAILING_WHITESPACE) if (EXISTS "${GFORTRAN_LIBRARY}") list(APPEND PETSC_EXTERNAL_LIBRARIES ${GFORTRAN_LIBRARY}) endif() endif() find_package(X11) list(APPEND PETSC_INCLUDE_DIRS ${X11_X11_INCLUDE_PATH}) list(APPEND PETSC_EXTERNAL_LIBRARIES ${X11_LIBRARIES}) # ResolveCompilerPaths strips OSX frameworks, so add BLAS here for OSX petsc_get_variable(PETSC_BLASLAPACK_LIB BLASLAPACK_LIB) list(APPEND PETSC_EXTERNAL_LIBRARIES ${PETSC_BLASLAPACK_LIB}) endif() # Remove temporary Makefile file(REMOVE ${petsc_config_makefile}) # Add variables to CMake cache and mark as advanced set(PETSC_INCLUDE_DIRS ${PETSC_INCLUDE_DIRS} CACHE STRING "PETSc include paths." FORCE) set(PETSC_LIBRARIES ${PETSC_LIBRARIES} CACHE STRING "PETSc libraries." FORCE) mark_as_advanced(PETSC_INCLUDE_DIRS PETSC_LIBRARIES) endif() # Build PETSc test program if (DOLFIN_SKIP_BUILD_TESTS) set(PETSC_TEST_RUNS TRUE) set(PETSC_VERSION "UNKNOWN") set(PETSC_VERSION_OK TRUE) elseif (FOUND_PETSC_CONF) # Set flags for building test program set(CMAKE_REQUIRED_INCLUDES ${PETSC_INCLUDE_DIRS}) set(CMAKE_REQUIRED_LIBRARIES ${PETSC_LIBRARIES}) # Add MPI variables if MPI has been found if (MPI_C_FOUND) set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${MPI_C_INCLUDE_PATH}) set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${MPI_C_LIBRARIES}) set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${MPI_C_COMPILE_FLAGS}") endif() # Check PETSc version set(PETSC_CONFIG_TEST_VERSION_CPP "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/petsc_config_test_version.cpp") file(WRITE ${PETSC_CONFIG_TEST_VERSION_CPP} " #include #include \"petscversion.h\" int main() { std::cout << PETSC_VERSION_MAJOR << \".\" << PETSC_VERSION_MINOR << \".\" << PETSC_VERSION_SUBMINOR; return 0; } ") try_run( PETSC_CONFIG_TEST_VERSION_EXITCODE PETSC_CONFIG_TEST_VERSION_COMPILED ${CMAKE_CURRENT_BINARY_DIR} ${PETSC_CONFIG_TEST_VERSION_CPP} CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}" COMPILE_OUTPUT_VARIABLE COMPILE_OUTPUT RUN_OUTPUT_VARIABLE OUTPUT ) if (PETSC_CONFIG_TEST_VERSION_EXITCODE EQUAL 0) set(PETSC_VERSION ${OUTPUT} CACHE TYPE STRING) string(REPLACE "." ";" PETSC_VERSION_LIST ${PETSC_VERSION}) list(GET PETSC_VERSION_LIST 0 PETSC_VERSION_MAJOR) list(GET PETSC_VERSION_LIST 1 PETSC_VERSION_MINOR) list(GET PETSC_VERSION_LIST 2 PETSC_VERSION_SUBMINOR) mark_as_advanced(PETSC_VERSION) mark_as_advanced(PETSC_VERSION_MAJOR, PETSC_VERSION_MINOR, PETSC_VERSION_SUBMINOR) endif() if (PETSc_FIND_VERSION) # Check if version found is >= required version if (NOT "${PETSC_VERSION}" VERSION_LESS "${PETSc_FIND_VERSION}") set(PETSC_VERSION_OK TRUE) endif() else() # No specific version requested set(PETSC_VERSION_OK TRUE) endif() mark_as_advanced(PETSC_VERSION_OK) # Run PETSc test program set(PETSC_TEST_LIB_CPP "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/petsc_test_lib.cpp") file(WRITE ${PETSC_TEST_LIB_CPP} " #include \"petscts.h\" #include \"petsc.h\" int main() { PetscErrorCode ierr; TS ts; int argc = 0; char** argv = NULL; ierr = PetscInitialize(&argc, &argv, PETSC_NULL, PETSC_NULL);CHKERRQ(ierr); ierr = TSCreate(PETSC_COMM_WORLD,&ts);CHKERRQ(ierr); ierr = TSSetFromOptions(ts);CHKERRQ(ierr); #if PETSC_VERSION_MAJOR == 3 && PETSC_VERSION_MINOR <= 1 ierr = TSDestroy(ts);CHKERRQ(ierr); #else ierr = TSDestroy(&ts);CHKERRQ(ierr); #endif ierr = PetscFinalize();CHKERRQ(ierr); return 0; } ") try_run( PETSC_TEST_LIB_EXITCODE PETSC_TEST_LIB_COMPILED ${CMAKE_CURRENT_BINARY_DIR} ${PETSC_TEST_LIB_CPP} CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}" "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}" COMPILE_OUTPUT_VARIABLE PETSC_TEST_LIB_COMPILE_OUTPUT RUN_OUTPUT_VARIABLE PETSC_TEST_LIB_OUTPUT ) if (PETSC_TEST_LIB_COMPILED AND PETSC_TEST_LIB_EXITCODE EQUAL 0) message(STATUS "Performing test PETSC_TEST_RUNS - Success") set(PETSC_TEST_RUNS TRUE) else() message(STATUS "Performing test PETSC_TEST_RUNS - Failed") # Test program does not run - try adding PETSc 3rd party libs and test again list(APPEND CMAKE_REQUIRED_LIBRARIES ${PETSC_EXTERNAL_LIBRARIES}) try_run( PETSC_TEST_3RD_PARTY_LIBS_EXITCODE PETSC_TEST_3RD_PARTY_LIBS_COMPILED ${CMAKE_CURRENT_BINARY_DIR} ${PETSC_TEST_LIB_CPP} CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}" "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}" COMPILE_OUTPUT_VARIABLE PETSC_TEST_3RD_PARTY_LIBS_COMPILE_OUTPUT RUN_OUTPUT_VARIABLE PETSC_TEST_3RD_PARTY_LIBS_OUTPUT ) if (PETSC_TEST_3RD_PARTY_LIBS_COMPILED AND PETSC_TEST_3RD_PARTY_LIBS_EXITCODE EQUAL 0) message(STATUS "Performing test PETSC_TEST_3RD_PARTY_LIBS_RUNS - Success") set(PETSC_LIBRARIES ${PETSC_LIBRARIES} ${PETSC_EXTERNAL_LIBRARIES} CACHE STRING "PETSc libraries." FORCE) set(PETSC_TEST_RUNS TRUE) else() message(STATUS "Performing test PETSC_TEST_3RD_PARTY_LIBS_RUNS - Failed") endif() endif() # Run test program to check for PETSc Cusp include(CheckCXXSourceRuns) check_cxx_source_runs(" #include \"petsc.h\" int main() { #if PETSC_HAVE_CUSP return 0; #else return 1; #endif } " PETSC_CUSP_FOUND) if (PETSC_CUSP_FOUND) message(STATUS "PETSc configured with Cusp support") else() message(STATUS "PETSc configured without Cusp support") endif() endif() # Standard package handling include(FindPackageHandleStandardArgs) find_package_handle_standard_args(PETSc "PETSc could not be found. Be sure to set PETSC_DIR and PETSC_ARCH." PETSC_LIBRARIES PETSC_DIR PETSC_INCLUDE_DIRS PETSC_TEST_RUNS PETSC_VERSION PETSC_VERSION_OK) dolfin-1.3.0/cmake/modules/FindEigen3.cmake0000644000175000017500000000606012263014601020310 0ustar johannrjohannr# - Try to find Eigen3 lib # # This module supports requiring a minimum version, e.g. you can do # find_package(Eigen3 3.1.2) # to require version 3.1.2 or newer of Eigen3. # # Once done this will define # # EIGEN3_FOUND - system has eigen lib with correct version # EIGEN3_INCLUDE_DIR - the eigen include directory # EIGEN3_VERSION - eigen version # Copyright (c) 2006, 2007 Montel Laurent, # Copyright (c) 2008, 2009 Gael Guennebaud, # Copyright (c) 2009 Benoit Jacob # Redistribution and use is allowed according to the terms of the # 2-clause BSD license. # Modified by Garth N. Wells to add EIGEN_DIR to # search path if(NOT Eigen3_FIND_VERSION) if(NOT Eigen3_FIND_VERSION_MAJOR) set(Eigen3_FIND_VERSION_MAJOR 2) endif(NOT Eigen3_FIND_VERSION_MAJOR) if(NOT Eigen3_FIND_VERSION_MINOR) set(Eigen3_FIND_VERSION_MINOR 91) endif(NOT Eigen3_FIND_VERSION_MINOR) if(NOT Eigen3_FIND_VERSION_PATCH) set(Eigen3_FIND_VERSION_PATCH 0) endif(NOT Eigen3_FIND_VERSION_PATCH) set(Eigen3_FIND_VERSION "${Eigen3_FIND_VERSION_MAJOR}.${Eigen3_FIND_VERSION_MINOR}.${Eigen3_FIND_VERSION_PATCH}") endif(NOT Eigen3_FIND_VERSION) macro(_eigen3_check_version) file(READ "${EIGEN3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header) string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}") set(EIGEN3_WORLD_VERSION "${CMAKE_MATCH_1}") string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}") set(EIGEN3_MAJOR_VERSION "${CMAKE_MATCH_1}") string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}") set(EIGEN3_MINOR_VERSION "${CMAKE_MATCH_1}") set(EIGEN3_VERSION ${EIGEN3_WORLD_VERSION}.${EIGEN3_MAJOR_VERSION}.${EIGEN3_MINOR_VERSION}) if(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION}) set(EIGEN3_VERSION_OK FALSE) else(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION}) set(EIGEN3_VERSION_OK TRUE) endif(${EIGEN3_VERSION} VERSION_LESS ${Eigen3_FIND_VERSION}) if(NOT EIGEN3_VERSION_OK) message(STATUS "Eigen3 version ${EIGEN3_VERSION} found in ${EIGEN3_INCLUDE_DIR}, " "but at least version ${Eigen3_FIND_VERSION} is required") endif(NOT EIGEN3_VERSION_OK) endmacro(_eigen3_check_version) if (EIGEN3_INCLUDE_DIR) # in cache already _eigen3_check_version() set(EIGEN3_FOUND ${EIGEN3_VERSION_OK}) else (EIGEN3_INCLUDE_DIR) find_path(EIGEN3_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library PATHS ${EIGEN_DIR} $ENV{EIGEN_DIR} ${CMAKE_INSTALL_PREFIX}/include ${KDE4_INCLUDE_DIR} PATH_SUFFIXES eigen3 eigen ) if(EIGEN3_INCLUDE_DIR) _eigen3_check_version() endif(EIGEN3_INCLUDE_DIR) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Eigen3 DEFAULT_MSG EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK) mark_as_advanced(EIGEN3_INCLUDE_DIR) endif(EIGEN3_INCLUDE_DIR) dolfin-1.3.0/cmake/modules/FindAMD.cmake0000644000175000017500000000452112263014601017577 0ustar johannrjohannr# - Try to find AMD # Once done this will define # # AMD_FOUND - system has AMD # AMD_INCLUDE_DIRS - include directories for AMD # AMD_LIBRARIES - libraries for AMD #============================================================================= # Copyright (C) 2010 Anders Logg # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. #============================================================================= message(STATUS "Checking for package 'AMD'") # Check for header file find_path(AMD_INCLUDE_DIRS amd.h HINTS ${AMD_DIR}/include $ENV{AMD_DIR}/include PATH_SUFFIXES suitesparse ufsparse DOC "Directory where the AMD header is located" ) mark_as_advanced(AMD_INCLUDE_DIRS) # Check for AMD library find_library(AMD_LIBRARIES amd HINTS ${AMD_DIR}/lib $ENV{AMD_DIR}/lib NO_DEFAULT_PATH DOC "The AMD library" ) find_library(AMD_LIBRARIES amd DOC "The AMD library" ) mark_as_advanced(AMD_LIBRARY) # Standard package handling include(FindPackageHandleStandardArgs) find_package_handle_standard_args(AMD "AMD could not be found. Be sure to set AMD_DIR." AMD_LIBRARIES AMD_INCLUDE_DIRS) dolfin-1.3.0/cmake/modules/CorrectWindowsPaths.cmake0000644000175000017500000000066112263014601022352 0ustar johannrjohannr# CorrectWindowsPaths - this module defines one macro # # CONVERT_CYGWIN_PATH( PATH ) # This uses the command cygpath (provided by cygwin) to convert # unix-style paths into paths useable by cmake on windows macro (CONVERT_CYGWIN_PATH _path) if (WIN32) EXECUTE_PROCESS(COMMAND cygpath.exe -m ${${_path}} OUTPUT_VARIABLE ${_path}) string (STRIP ${${_path}} ${_path}) endif (WIN32) endmacro (CONVERT_CYGWIN_PATH) dolfin-1.3.0/cmake/modules/ResolveCompilerPaths.cmake0000644000175000017500000001045112263014601022506 0ustar johannrjohannr# ResolveCompilerPaths - this module defines two macros # # RESOLVE_LIBRARIES (XXX_LIBRARIES LINK_LINE) # This macro is intended to be used by FindXXX.cmake modules. # It parses a compiler link line and resolves all libraries # (-lfoo) using the library path contexts (-L/path) in scope. # The result in XXX_LIBRARIES is the list of fully resolved libs. # Example: # # RESOLVE_LIBRARIES (FOO_LIBRARIES "-L/A -la -L/B -lb -lc -ld") # # will be resolved to # # FOO_LIBRARIES:STRING="/A/liba.so;/B/libb.so;/A/libc.so;/usr/lib/libd.so" # # if the filesystem looks like # # /A: liba.so libc.so # /B: liba.so libb.so # /usr/lib: liba.so libb.so libc.so libd.so # # and /usr/lib is a system directory. # # Note: If RESOLVE_LIBRARIES() resolves a link line differently from # the native linker, there is a bug in this macro (please report it). # # RESOLVE_INCLUDES (XXX_INCLUDES INCLUDE_LINE) # This macro is intended to be used by FindXXX.cmake modules. # It parses a compile line and resolves all includes # (-I/path/to/include) to a list of directories. Other flags are ignored. # Example: # # RESOLVE_INCLUDES (FOO_INCLUDES "-I/A -DBAR='\"irrelevant -I/string here\"' -I/B") # # will be resolved to # # FOO_INCLUDES:STRING="/A;/B" # # assuming both directories exist. # Note: as currently implemented, the -I/string will be picked up mistakenly (cry, cry) include (CorrectWindowsPaths) macro (RESOLVE_LIBRARIES LIBS LINK_LINE) string (REGEX MATCHALL "((-L|-l|-Wl)([^\" ]+|\"[^\"]+\")|[^\" ]+\\.(a|so|dll|lib))" _all_tokens "${LINK_LINE}") set (_libs_found) set (_directory_list) foreach (token ${_all_tokens}) if (token MATCHES "-L([^\" ]+|\"[^\"]+\")") # If it's a library path, add it to the list string (REGEX REPLACE "^-L" "" token ${token}) string (REGEX REPLACE "//" "/" token ${token}) convert_cygwin_path(token) list (APPEND _directory_list ${token}) elseif (token MATCHES "^(-l([^\" ]+|\"[^\"]+\")|[^\" ]+\\.(a|so|dll|lib))") # It's a library, resolve the path by looking in the list and then (by default) in system directories if (WIN32) #windows expects "libfoo", linux expects "foo" string (REGEX REPLACE "^-l" "lib" token ${token}) else (WIN32) string (REGEX REPLACE "^-l" "" token ${token}) endif (WIN32) set (_root) if (token MATCHES "^/") # We have an absolute path #separate into a path and a library name: string (REGEX MATCH "[^/]*\\.(a|so|dll|lib)$" libname ${token}) string (REGEX MATCH ".*[^${libname}$]" libpath ${token}) convert_cygwin_path(libpath) set (_directory_list ${_directory_list} ${libpath}) set (token ${libname}) endif (token MATCHES "^/") set (_lib "NOTFOUND" CACHE FILEPATH "Cleared" FORCE) # First search only the HINTS paths, then (if nothing was found) CMake's # default paths. find_library (_lib ${token} HINTS ${_directory_list} NO_DEFAULT_PATH ${_root}) find_library (_lib ${token} ${_root}) if (_lib) string (REPLACE "//" "/" _lib ${_lib}) list (APPEND _libs_found ${_lib}) else (_lib) message (STATUS "Unable to find library ${token}") endif (_lib) endif (token MATCHES "-L([^\" ]+|\"[^\"]+\")") endforeach (token) set (_lib "NOTFOUND" CACHE INTERNAL "Scratch variable" FORCE) # only the LAST occurence of each library is required since there should be no circular dependencies if (_libs_found) list (REVERSE _libs_found) list (REMOVE_DUPLICATES _libs_found) list (REVERSE _libs_found) endif (_libs_found) set (${LIBS} "${_libs_found}") endmacro (RESOLVE_LIBRARIES) macro (RESOLVE_INCLUDES INCS COMPILE_LINE) string (REGEX MATCHALL "-I([^\" ]+|\"[^\"]+\")" _all_tokens "${COMPILE_LINE}") set (_incs_found) foreach (token ${_all_tokens}) string (REGEX REPLACE "^-I" "" token ${token}) string (REGEX REPLACE "//" "/" token ${token}) convert_cygwin_path(token) if (EXISTS ${token}) list (APPEND _incs_found ${token}) else (EXISTS ${token}) message (STATUS "Include directory ${token} does not exist") endif (EXISTS ${token}) endforeach (token) list (REMOVE_DUPLICATES _incs_found) set (${INCS} "${_incs_found}") endmacro (RESOLVE_INCLUDES) dolfin-1.3.0/cmake/modules/FindCppUnit.cmake0000644000175000017500000000517312263014601020564 0ustar johannrjohannr# - Try to find CPPUNIT # Once done this will define # # CPPUNIT_FOUND - system has CPPUNIT # CPPUNIT_INCLUDE_DIRS - include directories for CPPUNIT # CPPUNIT_LIBRARIES - libraries for CPPUNIT # CPPUNIT_VERSION - CPPUNIT version string (MAJOR.MINOR.MICRO) #============================================================================= # Copyright (C) 2010-2012 Garth N. Wells, Anders Logg and Johannes Ring # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. #============================================================================= include(FindPkgConfig) pkg_check_modules(PC_CPPUNIT cppunit) set(CPPUNIT_VERSION ${PC_CPPUNIT_VERSION}) # Check for header file find_path(CPPUNIT_INCLUDE_DIRS cppunit/Test.h HINTS ${PC_CPPUNIT_INCLUDEDIR} ${CPPUNIT_DIR}/include $ENV{CPPUNIT_DIR}/include DOC "Directory where the CPPUNIT header is located" ) # Check for library find_library(CPPUNIT_LIBRARIES cppunit HINTS ${PC_CPPUNIT_LIBDIR} ${CPPUNIT_DIR}/lib $ENV{CPPUNIT_DIR}/lib NO_DEFAULT_PATH DOC "The CPPUNIT library" ) find_library(CPPUNIT_LIBRARIES cppunit DOC "The CPPUNIT library" ) mark_as_advanced( CPPUNIT_LIBRARIES CPPUNIT_INCLUDE_DIRS CPPUNIT_VERSION ) # Standard package handling include(FindPackageHandleStandardArgs) find_package_handle_standard_args(CPPUNIT "CPPUNIT could not be found. Be sure to set CPPUNIT_DIR." CPPUNIT_LIBRARIES CPPUNIT_INCLUDE_DIRS) dolfin-1.3.0/cmake/modules/FindNumPy.cmake0000644000175000017500000000632612263014601020253 0ustar johannrjohannr# - Find NumPy # Find the native NumPy includes # This module defines # NUMPY_INCLUDE_DIR, where to find numpy/arrayobject.h, etc. # NUMPY_VERSION, The string version of the numpy version # NUMPY_VERSION_MAJOR, The first number of the numpy version # NUMPY_VERSION_MINOR, The second number of the numpy version # NUMPY_VERSION_MICRO, The third number of the numpy version # NUMPY_FOUND, If false, do not try to use NumPy headers. #============================================================================= # Copyright (C) 2010 Johannes Ring # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. #============================================================================= if(NUMPY_INCLUDE_DIR) # in cache already set(NUMPY_FIND_QUIETLY TRUE) endif(NUMPY_INCLUDE_DIR) execute_process( COMMAND ${PYTHON_EXECUTABLE} -c "import numpy; print numpy.get_include()" OUTPUT_VARIABLE NUMPY_INCLUDE_DIR RESULT_VARIABLE NUMPY_NOT_FOUND OUTPUT_STRIP_TRAILING_WHITESPACE ) if(NUMPY_INCLUDE_DIR) set(NUMPY_FOUND TRUE) set(NUMPY_INCLUDE_DIR ${NUMPY_INCLUDE_DIR} CACHE STRING "NumPy include path") else(NUMPY_INCLUDE_DIR) set(NUMPY_FOUND FALSE) endif(NUMPY_INCLUDE_DIR) if(NUMPY_FOUND) execute_process( COMMAND ${PYTHON_EXECUTABLE} -c "import numpy; print numpy.version.version" OUTPUT_VARIABLE NUMPY_VERSION RESULT_VARIABLE NUMPY_NOT_FOUND OUTPUT_STRIP_TRAILING_WHITESPACE ) string(REPLACE "." ";" NUMPY_VERSION_LIST ${NUMPY_VERSION}) list(GET NUMPY_VERSION_LIST 0 NUMPY_VERSION_MAJOR) list(GET NUMPY_VERSION_LIST 1 NUMPY_VERSION_MINOR) list(GET NUMPY_VERSION_LIST 2 NUMPY_VERSION_MICRO) if(NOT NUMPY_FIND_QUIETLY) message(STATUS "NumPy header version ${NUMPY_VERSION} found") endif(NOT NUMPY_FIND_QUIETLY) else(NUMPY_FOUND) if(NUMPY_FIND_REQUIRED) message(FATAL_ERROR "NumPy headers missing") endif(NUMPY_FIND_REQUIRED) endif(NUMPY_FOUND) mark_as_advanced(NUMPY_INCLUDE_DIR, NUMPY_VERSION, NUMPY_VERSION_MAJOR, NUMPY_VERSION_MINOR, NUMPY_VERSION_MICRO) dolfin-1.3.0/cmake/modules/FindMPI.cmake0000644000175000017500000007442512263014601017635 0ustar johannrjohannr# - Find a Message Passing Interface (MPI) implementation # The Message Passing Interface (MPI) is a library used to write # high-performance distributed-memory parallel applications, and # is typically deployed on a cluster. MPI is a standard interface # (defined by the MPI forum) for which many implementations are # available. All of them have somewhat different include paths, # libraries to link against, etc., and this module tries to smooth # out those differences. # # === Variables === # # This module will set the following variables per language in your project, # where is one of C, CXX, or Fortran: # MPI__FOUND TRUE if FindMPI found MPI flags for # MPI__COMPILER MPI Compiler wrapper for # MPI__COMPILE_FLAGS Compilation flags for MPI programs # MPI__INCLUDE_PATH Include path(s) for MPI header # MPI__LINK_FLAGS Linking flags for MPI programs # MPI__LIBRARIES All libraries to link MPI programs against # Additionally, FindMPI sets the following variables for running MPI # programs from the command line: # MPIEXEC Executable for running MPI programs # MPIEXEC_NUMPROC_FLAG Flag to pass to MPIEXEC before giving # it the number of processors to run on # MPIEXEC_PREFLAGS Flags to pass to MPIEXEC directly # before the executable to run. # MPIEXEC_POSTFLAGS Flags to pass to MPIEXEC after other flags # === Usage === # # To use this module, simply call FindMPI from a CMakeLists.txt file, or # run find_package(MPI), then run CMake. If you are happy with the auto- # detected configuration for your language, then you're done. If not, you # have two options: # 1. Set MPI__COMPILER to the MPI wrapper (mpicc, etc.) of your # choice and reconfigure. FindMPI will attempt to determine all the # necessary variables using THAT compiler's compile and link flags. # 2. If this fails, or if your MPI implementation does not come with # a compiler wrapper, then set both MPI__LIBRARIES and # MPI__INCLUDE_PATH. You may also set any other variables # listed above, but these two are required. This will circumvent # autodetection entirely. # When configuration is successful, MPI__COMPILER will be set to the # compiler wrapper for , if it was found. MPI__FOUND and other # variables above will be set if any MPI implementation was found for , # regardless of whether a compiler was found. # # When using MPIEXEC to execute MPI applications, you should typically use # all of the MPIEXEC flags as follows: # ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} PROCS # ${MPIEXEC_PREFLAGS} EXECUTABLE ${MPIEXEC_POSTFLAGS} ARGS # where PROCS is the number of processors on which to execute the program, # EXECUTABLE is the MPI program, and ARGS are the arguments to pass to the # MPI program. # # === Backward Compatibility === # # For backward compatibility with older versions of FindMPI, these # variables are set, but deprecated: # MPI_FOUND MPI_COMPILER MPI_LIBRARY # MPI_COMPILE_FLAGS MPI_INCLUDE_PATH MPI_EXTRA_LIBRARY # MPI_LINK_FLAGS MPI_LIBRARIES # In new projects, please use the MPI__XXX equivalents. #============================================================================= # Copyright 2001-2011 Kitware, Inc. # Copyright 2010-2011 Todd Gamblin tgamblin@llnl.gov # Copyright 2001-2009 Dave Partyka # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= # include this to handle the QUIETLY and REQUIRED arguments include(FindPackageHandleStandardArgs) include(GetPrerequisites) # # This part detects MPI compilers, attempting to wade through the mess of compiler names in # a sensible way. # # The compilers are detected in this order: # # 1. Try to find the most generic availble MPI compiler, as this is usually set up by # cluster admins. e.g., if plain old mpicc is available, we'll use it and assume it's # the right compiler. # # 2. If a generic mpicc is NOT found, then we attempt to find one that matches # CMAKE__COMPILER_ID. e.g. if you are using XL compilers, we'll try to find mpixlc # and company, but not mpiicc. This hopefully prevents toolchain mismatches. # # If you want to force a particular MPI compiler other than what we autodetect (e.g. if you # want to compile regular stuff with GNU and parallel stuff with Intel), you can always set # your favorite MPI__COMPILER explicitly and this stuff will be ignored. # # Start out with the generic MPI compiler names, as these are most commonly used. set(_MPI_C_COMPILER_NAMES mpicc mpcc mpicc_r mpcc_r) set(_MPI_CXX_COMPILER_NAMES mpicxx mpiCC mpcxx mpCC mpic++ mpc++ mpicxx_r mpiCC_r mpcxx_r mpCC_r mpic++_r mpc++_r) set(_MPI_Fortran_COMPILER_NAMES mpif95 mpif95_r mpf95 mpf95_r mpif90 mpif90_r mpf90 mpf90_r mpif77 mpif77_r mpf77 mpf77_r) # GNU compiler names set(_MPI_GNU_C_COMPILER_NAMES mpigcc mpgcc mpigcc_r mpgcc_r) set(_MPI_GNU_CXX_COMPILER_NAMES mpig++ mpg++ mpig++_r mpg++_r) set(_MPI_GNU_Fortran_COMPILER_NAMES mpigfortran mpgfortran mpigfortran_r mpgfortran_r mpig77 mpig77_r mpg77 mpg77_r) # Intel MPI compiler names set(_MPI_Intel_C_COMPILER_NAMES mpiicc) set(_MPI_Intel_CXX_COMPILER_NAMES mpiicpc mpiicxx mpiic++ mpiiCC) set(_MPI_Intel_Fortran_COMPILER_NAMES mpiifort mpiif95 mpiif90 mpiif77) # PGI compiler names set(_MPI_PGI_C_COMPILER_NAMES mpipgcc mppgcc) set(_MPI_PGI_CXX_COMPILER_NAMES mpipgCC mppgCC) set(_MPI_PGI_Fortran_COMPILER_NAMES mpipgf95 mpipgf90 mppgf95 mppgf90 mpipgf77 mppgf77) # XLC MPI Compiler names set(_MPI_XL_C_COMPILER_NAMES mpxlc mpxlc_r mpixlc mpixlc_r) set(_MPI_XL_CXX_COMPILER_NAMES mpixlcxx mpixlC mpixlc++ mpxlcxx mpxlc++ mpixlc++ mpxlCC mpixlcxx_r mpixlC_r mpixlc++_r mpxlcxx_r mpxlc++_r mpixlc++_r mpxlCC_r) set(_MPI_XL_Fortran_COMPILER_NAMES mpixlf95 mpixlf95_r mpxlf95 mpxlf95_r mpixlf90 mpixlf90_r mpxlf90 mpxlf90_r mpixlf77 mpixlf77_r mpxlf77 mpxlf77_r mpixlf mpixlf_r mpxlf mpxlf_r) # append vendor-specific compilers to the list if we either don't know the compiler id, # or if we know it matches the regular compiler. foreach (lang C CXX Fortran) foreach (id GNU Intel PGI XL) if (NOT CMAKE_${lang}_COMPILER_ID OR "${CMAKE_${lang}_COMPILER_ID}" STREQUAL "${id}") list(APPEND _MPI_${lang}_COMPILER_NAMES ${_MPI_${id}_${lang}_COMPILER_NAMES}) endif() unset(_MPI_${id}_${lang}_COMPILER_NAMES) # clean up the namespace here endforeach() endforeach() # Names to try for MPI exec set(_MPI_EXEC_NAMES mpiexec mpirun lamexec srun) # Grab the path to MPI from the registry if we're on windows. set(_MPI_PREFIX_PATH) if(WIN32) list(APPEND _MPI_PREFIX_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MPICH\\SMPD;binary]/..") list(APPEND _MPI_PREFIX_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MPICH2;Path]") list(APPEND _MPI_PREFIX_PATH "$ENV{ProgramW6432}/MPICH2/") endif() # Build a list of prefixes to search for MPI. foreach(SystemPrefixDir ${CMAKE_SYSTEM_PREFIX_PATH}) foreach(MpiPackageDir ${_MPI_PREFIX_PATH}) if(EXISTS ${SystemPrefixDir}/${MpiPackageDir}) list(APPEND _MPI_PREFIX_PATH "${SystemPrefixDir}/${MpiPackageDir}") endif() endforeach() endforeach() # # interrogate_mpi_compiler(lang try_libs) # # Attempts to extract compiler and linker args from an MPI compiler. The arguments set # by this function are: # # MPI__INCLUDE_PATH MPI__LINK_FLAGS MPI__FOUND # MPI__COMPILE_FLAGS MPI__LIBRARIES # # MPI__COMPILER must be set beforehand to the absolute path to an MPI compiler for # . Additionally, MPI__INCLUDE_PATH and MPI__LIBRARIES may be set # to skip autodetection. # # If try_libs is TRUE, this will also attempt to find plain MPI libraries in the usual # way. In general, this is not as effective as interrogating the compilers, as it # ignores language-specific flags and libraries. However, some MPI implementations # (Windows implementations) do not have compiler wrappers, so this approach must be used. # function (interrogate_mpi_compiler lang try_libs) # MPI_${lang}_NO_INTERROGATE will be set to a compiler name when the *regular* compiler was # discovered to be the MPI compiler. This happens on machines like the Cray XE6 that use # modules to set cc, CC, and ftn to the MPI compilers. If the user force-sets another MPI # compiler, MPI_${lang}_COMPILER won't be equal to MPI_${lang}_NO_INTERROGATE, and we'll # inspect that compiler anew. This allows users to set new compilers w/o rm'ing cache. string(COMPARE NOTEQUAL "${MPI_${lang}_NO_INTERROGATE}" "${MPI_${lang}_COMPILER}" interrogate) # If MPI is set already in the cache, don't bother with interrogating the compiler. if (interrogate AND ((NOT MPI_${lang}_INCLUDE_PATH) OR (NOT MPI_${lang}_LIBRARIES))) if (MPI_${lang}_COMPILER) # Check whether the -showme:compile option works. This indicates that we have either OpenMPI # or a newer version of LAM-MPI, and implies that -showme:link will also work. execute_process( COMMAND ${MPI_${lang}_COMPILER} -showme:compile OUTPUT_VARIABLE MPI_COMPILE_CMDLINE OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_VARIABLE MPI_COMPILE_CMDLINE ERROR_STRIP_TRAILING_WHITESPACE RESULT_VARIABLE MPI_COMPILER_RETURN) if (MPI_COMPILER_RETURN EQUAL 0) # If we appear to have -showme:compile, then we should # also have -showme:link. Try it. execute_process( COMMAND ${MPI_${lang}_COMPILER} -showme:link OUTPUT_VARIABLE MPI_LINK_CMDLINE OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_VARIABLE MPI_LINK_CMDLINE ERROR_STRIP_TRAILING_WHITESPACE RESULT_VARIABLE MPI_COMPILER_RETURN) if (MPI_COMPILER_RETURN EQUAL 0) # We probably have -showme:incdirs and -showme:libdirs as well, # so grab that while we're at it. execute_process( COMMAND ${MPI_${lang}_COMPILER} -showme:incdirs OUTPUT_VARIABLE MPI_INCDIRS OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_VARIABLE MPI_INCDIRS ERROR_STRIP_TRAILING_WHITESPACE) execute_process( COMMAND ${MPI_${lang}_COMPILER} -showme:libdirs OUTPUT_VARIABLE MPI_LIBDIRS OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_VARIABLE MPI_LIBDIRS ERROR_STRIP_TRAILING_WHITESPACE) else() # reset things here if something went wrong. set(MPI_COMPILE_CMDLINE) set(MPI_LINK_CMDLINE) endif() endif () # Older versions of LAM-MPI have "-showme". Try to find that. if (NOT MPI_COMPILER_RETURN EQUAL 0) execute_process( COMMAND ${MPI_${lang}_COMPILER} -showme OUTPUT_VARIABLE MPI_COMPILE_CMDLINE OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_VARIABLE MPI_COMPILE_CMDLINE ERROR_STRIP_TRAILING_WHITESPACE RESULT_VARIABLE MPI_COMPILER_RETURN) endif() # MVAPICH uses -compile-info and -link-info. Try them. if (NOT MPI_COMPILER_RETURN EQUAL 0) execute_process( COMMAND ${MPI_${lang}_COMPILER} -compile-info OUTPUT_VARIABLE MPI_COMPILE_CMDLINE OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_VARIABLE MPI_COMPILE_CMDLINE ERROR_STRIP_TRAILING_WHITESPACE RESULT_VARIABLE MPI_COMPILER_RETURN) # If we have compile-info, also have link-info. if (MPI_COMPILER_RETURN EQUAL 0) execute_process( COMMAND ${MPI_${lang}_COMPILER} -link-info OUTPUT_VARIABLE MPI_LINK_CMDLINE OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_VARIABLE MPI_LINK_CMDLINE ERROR_STRIP_TRAILING_WHITESPACE RESULT_VARIABLE MPI_COMPILER_RETURN) endif() # make sure we got compile and link. Reset vars if something's wrong. if (NOT MPI_COMPILER_RETURN EQUAL 0) set(MPI_COMPILE_CMDLINE) set(MPI_LINK_CMDLINE) endif() endif() # MPICH just uses "-show". Try it. if (NOT MPI_COMPILER_RETURN EQUAL 0) execute_process( COMMAND ${MPI_${lang}_COMPILER} -show OUTPUT_VARIABLE MPI_COMPILE_CMDLINE OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_VARIABLE MPI_COMPILE_CMDLINE ERROR_STRIP_TRAILING_WHITESPACE RESULT_VARIABLE MPI_COMPILER_RETURN) endif() if (MPI_COMPILER_RETURN EQUAL 0) # We have our command lines, but we might need to copy MPI_COMPILE_CMDLINE # into MPI_LINK_CMDLINE, if we didn't find the link line. if (NOT MPI_LINK_CMDLINE) set(MPI_LINK_CMDLINE ${MPI_COMPILE_CMDLINE}) endif() else() message(STATUS "Unable to determine MPI from MPI driver ${MPI_${lang}_COMPILER}") set(MPI_COMPILE_CMDLINE) set(MPI_LINK_CMDLINE) endif() # Here, we're done with the interrogation part, and we'll try to extract args we care # about from what we learned from the compiler wrapper scripts. # If interrogation came back with something, extract our variable from the MPI command line if (MPI_COMPILE_CMDLINE OR MPI_LINK_CMDLINE) # Extract compile flags from the compile command line. string(REGEX MATCHALL "(^| )-[Df]([^\" ]+|\"[^\"]+\")" MPI_ALL_COMPILE_FLAGS "${MPI_COMPILE_CMDLINE}") set(MPI_COMPILE_FLAGS_WORK) foreach(FLAG ${MPI_ALL_COMPILE_FLAGS}) if (MPI_COMPILE_FLAGS_WORK) set(MPI_COMPILE_FLAGS_WORK "${MPI_COMPILE_FLAGS_WORK} ${FLAG}") else() set(MPI_COMPILE_FLAGS_WORK ${FLAG}) endif() endforeach() # Extract include paths from compile command line string(REGEX MATCHALL "(^| )-I([^\" ]+|\"[^\"]+\")" MPI_ALL_INCLUDE_PATHS "${MPI_COMPILE_CMDLINE}") foreach(IPATH ${MPI_ALL_INCLUDE_PATHS}) string(REGEX REPLACE "^ ?-I" "" IPATH ${IPATH}) string(REGEX REPLACE "//" "/" IPATH ${IPATH}) list(APPEND MPI_INCLUDE_PATH_WORK ${IPATH}) endforeach() # try using showme:incdirs if extracting didn't work. if (NOT MPI_INCLUDE_PATH_WORK) set(MPI_INCLUDE_PATH_WORK ${MPI_INCDIRS}) separate_arguments(MPI_INCLUDE_PATH_WORK) endif() # If all else fails, just search for mpi.h in the normal include paths. if (NOT MPI_INCLUDE_PATH_WORK) set(MPI_HEADER_PATH "MPI_HEADER_PATH-NOTFOUND" CACHE FILEPATH "Cleared" FORCE) find_path(MPI_HEADER_PATH mpi.h HINTS ${_MPI_BASE_DIR} ${_MPI_PREFIX_PATH} PATH_SUFFIXES include) set(MPI_INCLUDE_PATH_WORK ${MPI_HEADER_PATH}) endif() # Extract linker paths from the link command line string(REGEX MATCHALL "(^| |-Wl,)-L([^\" ]+|\"[^\"]+\")" MPI_ALL_LINK_PATHS "${MPI_LINK_CMDLINE}") set(MPI_LINK_PATH) foreach(LPATH ${MPI_ALL_LINK_PATHS}) string(REGEX REPLACE "^(| |-Wl,)-L" "" LPATH ${LPATH}) string(REGEX REPLACE "//" "/" LPATH ${LPATH}) list(APPEND MPI_LINK_PATH ${LPATH}) endforeach() # try using showme:libdirs if extracting didn't work. if (NOT MPI_LINK_PATH) set(MPI_LINK_PATH ${MPI_LIBDIRS}) separate_arguments(MPI_LINK_PATH) endif() # Extract linker flags from the link command line string(REGEX MATCHALL "(^| )-Wl,([^\" ]+|\"[^\"]+\")" MPI_ALL_LINK_FLAGS "${MPI_LINK_CMDLINE}") set(MPI_LINK_FLAGS_WORK) foreach(FLAG ${MPI_ALL_LINK_FLAGS}) if (MPI_LINK_FLAGS_WORK) set(MPI_LINK_FLAGS_WORK "${MPI_LINK_FLAGS_WORK} ${FLAG}") else() set(MPI_LINK_FLAGS_WORK ${FLAG}) endif() endforeach() # Extract the set of libraries to link against from the link command # line string(REGEX MATCHALL "(^| )-l([^\" ]+|\"[^\"]+\")" MPI_LIBNAMES "${MPI_LINK_CMDLINE}") # add the compiler implicit directories because some compilers # such as the intel compiler have libraries that show up # in the showme list that can only be found in the implicit # link directories of the compiler. Do this for C++ and C # compilers if the implicit link directories are defined. if (DEFINED CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES) set(MPI_LINK_PATH "${MPI_LINK_PATH};${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES}") endif () if (DEFINED CMAKE_C_IMPLICIT_LINK_DIRECTORIES) set(MPI_LINK_PATH "${MPI_LINK_PATH};${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") endif () # Determine full path names for all of the libraries that one needs # to link against in an MPI program foreach(LIB ${MPI_LIBNAMES}) string(REGEX REPLACE "^ ?-l" "" LIB ${LIB}) # MPI_LIB is cached by find_library, but we don't want that. # Clear it first. set(MPI_LIB "MPI_LIB-NOTFOUND" CACHE FILEPATH "Cleared" FORCE) find_library(MPI_LIB NAMES ${LIB} HINTS ${MPI_LINK_PATH} NO_DEFAULT_PATH ) find_library(MPI_LIB NAMES ${LIB}) if (MPI_LIB) list(APPEND MPI_LIBRARIES_WORK ${MPI_LIB}) elseif (NOT MPI_FIND_QUIETLY) message(WARNING "Unable to find MPI library ${LIB}") endif() endforeach() # Sanity check MPI_LIBRARIES to make sure there are enough libraries list(LENGTH MPI_LIBRARIES_WORK MPI_NUMLIBS) list(LENGTH MPI_LIBNAMES MPI_NUMLIBS_EXPECTED) if (NOT MPI_NUMLIBS EQUAL MPI_NUMLIBS_EXPECTED) set(MPI_LIBRARIES_WORK "MPI_${lang}_LIBRARIES-NOTFOUND") endif() endif() elseif(try_libs) # If we didn't have an MPI compiler script to interrogate, attempt to find everything # with plain old find functions. This is nasty because MPI implementations have LOTS of # different library names, so this section isn't going to be very generic. We need to # make sure it works for MS MPI, though, since there are no compiler wrappers for that. find_path(MPI_HEADER_PATH mpi.h HINTS ${_MPI_BASE_DIR} ${_MPI_PREFIX_PATH} PATH_SUFFIXES include Inc) set(MPI_INCLUDE_PATH_WORK ${MPI_HEADER_PATH}) # Decide between 32-bit and 64-bit libraries for Microsoft's MPI if("${CMAKE_SIZEOF_VOID_P}" EQUAL 8) set(MS_MPI_ARCH_DIR amd64) else() set(MS_MPI_ARCH_DIR i386) endif() set(MPI_LIB "MPI_LIB-NOTFOUND" CACHE FILEPATH "Cleared" FORCE) find_library(MPI_LIB NAMES mpi mpich mpich2 msmpi HINTS ${_MPI_BASE_DIR} ${_MPI_PREFIX_PATH} PATH_SUFFIXES lib lib/${MS_MPI_ARCH_DIR} Lib Lib/${MS_MPI_ARCH_DIR} NO_DEFAULT_PATH ) find_library(MPI_LIB NAMES mpi mpich mpich2 msmpi ) set(MPI_LIBRARIES_WORK ${MPI_LIB}) # Right now, we only know about the extra libs for C++. # We could add Fortran here (as there is usually libfmpich, etc.), but # this really only has to work with MS MPI on Windows. # Assume that other MPI's are covered by the compiler wrappers. if (${lang} STREQUAL CXX) set(MPI_LIB "MPI_LIB-NOTFOUND" CACHE FILEPATH "Cleared" FORCE) find_library(MPI_LIB NAMES mpi++ mpicxx cxx mpi_cxx HINTS ${_MPI_BASE_DIR} ${_MPI_PREFIX_PATH} PATH_SUFFIXES lib NO_DEFAULT_PATH ) find_library(MPI_LIB NAMES mpi++ mpicxx cxx mpi_cxx ) if (MPI_LIBRARIES_WORK AND MPI_LIB) list(APPEND MPI_LIBRARIES_WORK ${MPI_LIB}) endif() endif() if (NOT MPI_LIBRARIES_WORK) set(MPI_LIBRARIES_WORK "MPI_${lang}_LIBRARIES-NOTFOUND") endif() endif() # If we found MPI, set up all of the appropriate cache entries set(MPI_${lang}_COMPILE_FLAGS ${MPI_COMPILE_FLAGS_WORK} CACHE STRING "MPI ${lang} compilation flags" FORCE) set(MPI_${lang}_INCLUDE_PATH ${MPI_INCLUDE_PATH_WORK} CACHE STRING "MPI ${lang} include path" FORCE) set(MPI_${lang}_LINK_FLAGS ${MPI_LINK_FLAGS_WORK} CACHE STRING "MPI ${lang} linking flags" FORCE) set(MPI_${lang}_LIBRARIES ${MPI_LIBRARIES_WORK} CACHE STRING "MPI ${lang} libraries to link against" FORCE) mark_as_advanced(MPI_${lang}_COMPILE_FLAGS MPI_${lang}_INCLUDE_PATH MPI_${lang}_LINK_FLAGS MPI_${lang}_LIBRARIES) # clear out our temporary lib/header detectionv variable here. set(MPI_LIB "MPI_LIB-NOTFOUND" CACHE INTERNAL "Scratch variable for MPI lib detection" FORCE) set(MPI_HEADER_PATH "MPI_HEADER_PATH-NOTFOUND" CACHE INTERNAL "Scratch variable for MPI header detection" FORCE) endif() # finally set a found variable for each MPI language if (MPI_${lang}_INCLUDE_PATH AND MPI_${lang}_LIBRARIES) set(MPI_${lang}_FOUND TRUE PARENT_SCOPE) else() set(MPI_${lang}_FOUND FALSE PARENT_SCOPE) endif() endfunction() # This function attempts to compile with the regular compiler, to see if MPI programs # work with it. This is a last ditch attempt after we've tried interrogating mpicc and # friends, and after we've tried to find generic libraries. Works on machines like # Cray XE6, where the modules environment changes what MPI version cc, CC, and ftn use. function(try_regular_compiler lang success) set(scratch_directory ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}) if (${lang} STREQUAL Fortran) set(test_file ${scratch_directory}/cmake_mpi_test.f90) file(WRITE ${test_file} "program hello\n" "include 'mpif.h'\n" "integer ierror\n" "call MPI_INIT(ierror)\n" "call MPI_FINALIZE(ierror)\n" "end\n") else() if (${lang} STREQUAL CXX) set(test_file ${scratch_directory}/cmake_mpi_test.cpp) else() set(test_file ${scratch_directory}/cmake_mpi_test.c) endif() file(WRITE ${test_file} "#include \n" "int main(int argc, char **argv) {\n" " MPI_Init(&argc, &argv);\n" " MPI_Finalize();\n" "}\n") endif() try_compile(compiler_has_mpi ${scratch_directory} ${test_file}) if (compiler_has_mpi) set(MPI_${lang}_NO_INTERROGATE ${CMAKE_${lang}_COMPILER} CACHE STRING "Whether to interrogate MPI ${lang} compiler" FORCE) set(MPI_${lang}_COMPILER ${CMAKE_${lang}_COMPILER} CACHE STRING "MPI ${lang} compiler" FORCE) set(MPI_${lang}_COMPILE_FLAGS "" CACHE STRING "MPI ${lang} compilation flags" FORCE) set(MPI_${lang}_INCLUDE_PATH "" CACHE STRING "MPI ${lang} include path" FORCE) set(MPI_${lang}_LINK_FLAGS "" CACHE STRING "MPI ${lang} linking flags" FORCE) set(MPI_${lang}_LIBRARIES "" CACHE STRING "MPI ${lang} libraries to link against" FORCE) endif() set(${success} ${compiler_has_mpi} PARENT_SCOPE) unset(compiler_has_mpi CACHE) endfunction() # End definitions, commence real work here. # Most mpi distros have some form of mpiexec which gives us something we can reliably look for. find_program(MPIEXEC NAMES ${_MPI_EXEC_NAMES} PATHS ${_MPI_PREFIX_PATH} PATH_SUFFIXES bin DOC "Executable for running MPI programs.") # call get_filename_component twice to remove mpiexec and the directory it exists in (typically bin). # This gives us a fairly reliable base directory to search for /bin /lib and /include from. get_filename_component(_MPI_BASE_DIR "${MPIEXEC}" PATH) get_filename_component(_MPI_BASE_DIR "${_MPI_BASE_DIR}" PATH) set(MPIEXEC_NUMPROC_FLAG "-np" CACHE STRING "Flag used by MPI to specify the number of processes for MPIEXEC; the next option will be the number of processes.") set(MPIEXEC_PREFLAGS "" CACHE STRING "These flags will be directly before the executable that is being run by MPIEXEC.") set(MPIEXEC_POSTFLAGS "" CACHE STRING "These flags will come after all flags given to MPIEXEC.") set(MPIEXEC_MAX_NUMPROCS "2" CACHE STRING "Maximum number of processors available to run MPI applications.") mark_as_advanced(MPIEXEC MPIEXEC_NUMPROC_FLAG MPIEXEC_PREFLAGS MPIEXEC_POSTFLAGS MPIEXEC_MAX_NUMPROCS) #============================================================================= # Backward compatibility input hacks. Propagate the FindMPI hints to C and # CXX if the respective new versions are not defined. Translate the old # MPI_LIBRARY and MPI_EXTRA_LIBRARY to respective MPI_${lang}_LIBRARIES. # # Once we find the new variables, we translate them back into their old # equivalents below. foreach (lang C CXX) # Old input variables. set(_MPI_OLD_INPUT_VARS COMPILER COMPILE_FLAGS INCLUDE_PATH LINK_FLAGS) # Set new vars based on their old equivalents, if the new versions are not already set. foreach (var ${_MPI_OLD_INPUT_VARS}) if (NOT MPI_${lang}_${var} AND MPI_${var}) set(MPI_${lang}_${var} "${MPI_${var}}") endif() endforeach() # Special handling for MPI_LIBRARY and MPI_EXTRA_LIBRARY, which we nixed in the # new FindMPI. These need to be merged into MPI__LIBRARIES if (NOT MPI_${lang}_LIBRARIES AND (MPI_LIBRARY OR MPI_EXTRA_LIBRARY)) set(MPI_${lang}_LIBRARIES ${MPI_LIBRARY} ${MPI_EXTRA_LIBRARY}) endif() endforeach() #============================================================================= # This loop finds the compilers and sends them off for interrogation. foreach (lang C CXX Fortran) if (CMAKE_${lang}_COMPILER_WORKS) # If the user supplies a compiler *name* instead of an absolute path, assume that we need to find THAT compiler. if (MPI_${lang}_COMPILER) is_file_executable(MPI_${lang}_COMPILER MPI_COMPILER_IS_EXECUTABLE) if (NOT MPI_COMPILER_IS_EXECUTABLE) # Get rid of our default list of names and just search for the name the user wants. set(_MPI_${lang}_COMPILER_NAMES ${MPI_${lang}_COMPILER}) set(MPI_${lang}_COMPILER "MPI_${lang}_COMPILER-NOTFOUND" CACHE FILEPATH "Cleared" FORCE) # If the user specifies a compiler, we don't want to try to search libraries either. set(try_libs FALSE) endif() else() set(try_libs TRUE) endif() find_program(MPI_${lang}_COMPILER NAMES ${_MPI_${lang}_COMPILER_NAMES} PATHS "${MPI_HOME}/bin" "$ENV{MPI_HOME}/bin" ${_MPI_PREFIX_PATH}) interrogate_mpi_compiler(${lang} ${try_libs}) mark_as_advanced(MPI_${lang}_COMPILER) # last ditch try -- if nothing works so far, just try running the regular compiler and # see if we can create an MPI executable. set(regular_compiler_worked 0) if (NOT MPI_${lang}_LIBRARIES OR NOT MPI_${lang}_INCLUDE_PATH) try_regular_compiler(${lang} regular_compiler_worked) endif() if (regular_compiler_worked) find_package_handle_standard_args(MPI_${lang} DEFAULT_MSG MPI_${lang}_COMPILER) else() find_package_handle_standard_args(MPI_${lang} DEFAULT_MSG MPI_${lang}_LIBRARIES MPI_${lang}_INCLUDE_PATH) endif() endif() endforeach() #============================================================================= # More backward compatibility stuff # # Bare MPI sans ${lang} vars are set to CXX then C, depending on what was found. # This mimics the behavior of the old language-oblivious FindMPI. set(_MPI_OLD_VARS FOUND COMPILER INCLUDE_PATH COMPILE_FLAGS LINK_FLAGS LIBRARIES) if (MPI_CXX_FOUND) foreach (var ${_MPI_OLD_VARS}) set(MPI_${var} ${MPI_CXX_${var}}) endforeach() elseif (MPI_C_FOUND) foreach (var ${_MPI_OLD_VARS}) set(MPI_${var} ${MPI_C_${var}}) endforeach() else() # Note that we might still have found Fortran, but you'll need to use MPI_Fortran_FOUND set(MPI_FOUND FALSE) endif() # Chop MPI_LIBRARIES into the old-style MPI_LIBRARY and MPI_EXTRA_LIBRARY, and set them in cache. if (MPI_LIBRARIES) list(GET MPI_LIBRARIES 0 MPI_LIBRARY_WORK) set(MPI_LIBRARY ${MPI_LIBRARY_WORK} CACHE FILEPATH "MPI library to link against" FORCE) else() set(MPI_LIBRARY "MPI_LIBRARY-NOTFOUND" CACHE FILEPATH "MPI library to link against" FORCE) endif() list(LENGTH MPI_LIBRARIES MPI_NUMLIBS) if (MPI_NUMLIBS GREATER 1) set(MPI_EXTRA_LIBRARY_WORK ${MPI_LIBRARIES}) list(REMOVE_AT MPI_EXTRA_LIBRARY_WORK 0) set(MPI_EXTRA_LIBRARY ${MPI_EXTRA_LIBRARY_WORK} CACHE STRING "Extra MPI libraries to link against" FORCE) else() set(MPI_EXTRA_LIBRARY "MPI_EXTRA_LIBRARY-NOTFOUND" CACHE STRING "Extra MPI libraries to link against" FORCE) endif() #============================================================================= # unset these vars to cleanup namespace unset(_MPI_OLD_VARS) unset(_MPI_PREFIX_PATH) unset(_MPI_BASE_DIR) foreach (lang C CXX Fortran) unset(_MPI_${lang}_COMPILER_NAMES) endforeach() dolfin-1.3.0/cmake/modules/FindTAO.cmake0000644000175000017500000001752312263014601017627 0ustar johannrjohannr# - Try to find TAO # Once done this will define # # TAO_FOUND - system has TAO # TAO_INCLUDE_DIR - include directories for TAO # TAO_LIBARIES - libraries for TAO # TAO_DIR - directory where TAO is built # TAO_VERSION - version of TAO # # Assumes that PETSC_DIR and PETSC_ARCH has been set by # alredy calling find_package(PETSc) #============================================================================= # Copyright (C) 2010-2012 Garth N. Wells, Anders Logg and Johannes Ring # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. #============================================================================= message(STATUS "Checking for package 'TAO'") # Set debian_arches (PETSC_ARCH for Debian-style installations) foreach (debian_arches linux kfreebsd) if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") set(DEBIAN_FLAVORS ${debian_arches}-gnu-c-debug ${debian_arches}-gnu-c-opt ${DEBIAN_FLAVORS}) else() set(DEBIAN_FLAVORS ${debian_arches}-gnu-c-opt ${debian_arches}-gnu-c-debug ${DEBIAN_FLAVORS}) endif() endforeach() # List of possible locations for TAO_DIR set(tao_dir_locations "") list(APPEND tao_dir_locations "/usr/local/lib/tao") list(APPEND tao_dir_locations "$ENV{HOME}/tao") # Add other possible locations for TAO_DIR set(_SYSTEM_LIB_PATHS "${CMAKE_SYSTEM_LIBRARY_PATH};${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES}") string(REGEX REPLACE ":" ";" libdirs ${_SYSTEM_LIB_PATHS}) foreach (libdir ${libdirs}) get_filename_component(tao_dir_location "${libdir}/" PATH) list(APPEND tao_dir_locations ${tao_dir_location}) endforeach() # Try to figure out TAO_DIR by finding tao.h find_path(TAO_DIR include/tao.h HINTS ${TAO_DIR} $ENV{TAO_DIR} PATHS ${tao_dir_locations} DOC "TAO directory") # Report result of search for TAO_DIR if (DEFINED TAO_DIR) message(STATUS "TAO_DIR is ${TAO_DIR}") else() message(STATUS "TAO_DIR is empty") endif() # Get variables from TAO configuration if (TAO_DIR) find_library(TAO_LIBRARY NAMES tao HINTS ${TAO_DIR}/lib $ENV{TAO_DIR}/lib ${TAO_DIR}/${PETSC_ARCH}/lib $ENV{TAO_DIR}/$ENV{PETSC_ARCH}/lib NO_DEFAULT_PATH DOC "The TAO library" ) find_library(TAO_LIBRARY NAMES tao DOC "The TAO library" ) mark_as_advanced(TAO_LIBRARY) # Create a temporary Makefile to probe the TAO configuration set(tao_config_makefile ${PROJECT_BINARY_DIR}/Makefile.tao) file(WRITE ${tao_config_makefile} "# This file was autogenerated by FindTAO.cmake TAO_DIR = ${TAO_DIR} PETSC_ARCH = ${PETSC_ARCH} PETSC_DIR = ${PETSC_DIR} include ${TAO_DIR}/conf/tao_base showvar : -@echo -n \${\${VARIABLE}} ") # Define macro for getting TAO variables from Makefile macro(TAO_GET_VARIABLE var name) set(${var} "NOTFOUND" CACHE INTERNAL "Cleared" FORCE) execute_process(COMMAND ${CMAKE_MAKE_PROGRAM} --no-print-directory -f ${tao_config_makefile} showvar VARIABLE=${name} OUTPUT_VARIABLE ${var} RESULT_VARIABLE tao_return) endmacro() # Call macro to get the TAO variables tao_get_variable(TAO_INCLUDE TAO_INCLUDE) tao_get_variable(TAO_EXTERNAL_LIB TAO_EXTERNAL_LIB) # Remove temporary Makefile file(REMOVE ${tao_config_makefile}) # Extract include paths and libraries from compile command line include(ResolveCompilerPaths) resolve_includes(TAO_INCLUDE_DIRS "${TAO_INCLUDE}") resolve_libraries(TAO_EXTERNAL_LIBRARIES "${TAO_EXTERNAL_LIB}") # Add variables to CMake cache and mark as advanced set(TAO_INCLUDE_DIRS ${TAO_INCLUDE_DIRS} CACHE STRING "TAO include paths." FORCE) set(TAO_LIBRARIES ${TAO_LIBRARY} CACHE STRING "TAO libraries." FORCE) mark_as_advanced(TAO_INCLUDE_DIRS TAO_LIBRARIES) endif() if (DOLFIN_SKIP_BUILD_TESTS) set(TAO_TEST_RUNS TRUE) set(TAO_VERSION "UNKNOWN") set(TAO_VERSION_OK TRUE) elseif (TAO_LIBRARIES AND TAO_INCLUDE_DIRS) # Set flags for building test program set(CMAKE_REQUIRED_INCLUDES ${TAO_INCLUDE_DIRS} ${PETSC_INCLUDE_DIRS}) set(CMAKE_REQUIRED_LIBRARIES ${TAO_LIBRARIES} ${PETSC_LIBRARIES}) # Add MPI variables if MPI has been found if (MPI_C_FOUND) set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${MPI_C_INCLUDE_PATH} ${BLAS_INCLUDE_PATH}) set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${MPI_C_LIBRARIES} ${BLAS_LIBRARIES}) set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}${MPI_C_LIBRARIES} ${BLAS_LIBRARIES}") endif() # Run TAO test program set(TAO_TEST_LIB_CPP "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/tao_test_lib.cpp") file(WRITE ${TAO_TEST_LIB_CPP} " #include \"petsc.h\" #include \"tao.h\" int main() { PetscErrorCode ierr; int argc = 0; char** argv = NULL; ierr = TaoInitialize(&argc, &argv, PETSC_NULL, PETSC_NULL); TaoSolver tao; ierr = TaoCreate(PETSC_COMM_SELF, &tao); CHKERRQ(ierr); //ierr = TaoSetFromOptions(tao); CHKERRQ(ierr); ierr = TaoDestroy(&tao); CHKERRQ(ierr); ierr = TaoFinalize(); CHKERRQ(ierr); return 0; } ") try_run( TAO_TEST_LIB_EXITCODE TAO_TEST_LIB_COMPILED ${CMAKE_CURRENT_BINARY_DIR} ${TAO_TEST_LIB_CPP} CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}" "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}" COMPILE_OUTPUT_VARIABLE TAO_TEST_LIB_COMPILE_OUTPUT RUN_OUTPUT_VARIABLE TAO_TEST_LIB_OUTPUT ) if (TAO_TEST_LIB_COMPILED AND TAO_TEST_LIB_EXITCODE EQUAL 0) message(STATUS "Performing test TAO_TEST_RUNS - Success") set(TAO_TEST_RUNS TRUE) else() message(STATUS "Performing test TAO_TEST_RUNS - Failed") # Test program does not run - try adding TAO 3rd party libs and test again list(APPEND CMAKE_REQUIRED_LIBRARIES ${TAO_EXTERNAL_LIBRARIES}) try_run( TAO_TEST_3RD_PARTY_LIBS_EXITCODE TAO_TEST_3RD_PARTY_LIBS_COMPILED ${CMAKE_CURRENT_BINARY_DIR} ${TAO_TEST_LIB_CPP} CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}" "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}" COMPILE_OUTPUT_VARIABLE TAO_TEST_3RD_PARTY_LIBS_COMPILE_OUTPUT RUN_OUTPUT_VARIABLE TAO_TEST_3RD_PARTY_LIBS_OUTPUT ) if (TAO_TEST_3RD_PARTY_LIBS_COMPILED AND TAO_TEST_3RD_PARTY_LIBS_EXITCODE EQUAL 0) message(STATUS "Performing test TAO_TEST_3RD_PARTY_LIBS_RUNS - Success") set(TAO_LIBRARIES ${TAO_LIBRARIES} ${TAO_EXTERNAL_LIBRARIES} CACHE STRING "TAO libraries." FORCE) set(TAO_TEST_RUNS TRUE) else() message(STATUS "Performing test TAO_TEST_3RD_PARTY_LIBS_RUNS - Failed") endif() endif() endif() # Standard package handling include(FindPackageHandleStandardArgs) find_package_handle_standard_args(TAO "TAO could not be found. Be sure to set TAO_DIR, PETSC_DIR, and PETSC_ARCH." TAO_LIBRARIES TAO_DIR TAO_INCLUDE_DIRS TAO_TEST_RUNS) dolfin-1.3.0/cmake/modules/FindSphinx.cmake0000644000175000017500000000547412263014601020457 0ustar johannrjohannr# - Try to find Sphinx (sphinx-build) # Once done this will define # # SPHINX_FOUND - system has Sphinx # SPHINX_EXECUTABLE - full path to the Sphinx documentation generator tool # SPHINX_VERSION - the version of Sphinx which was found, e.g. "1.0.7" #============================================================================= # Copyright (C) 2011 Marie Rognes and Johannes Ring # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. #============================================================================= message(STATUS "Checking for package 'Sphinx'") # Make sure Python is available if (NOT PYTHON_EXECUTABLE) find_package(PythonInterp) endif() # Try to find sphinx-build find_program(SPHINX_EXECUTABLE sphinx-build HINTS ${SPHINX_DIR} $ENV{SPHINX_DIR} PATH_SUFFIXES bin DOC "Sphinx documentation generator tool" ) if (SPHINX_EXECUTABLE) # Try to check Sphinx version by importing Sphinx execute_process( COMMAND ${PYTHON_EXECUTABLE} -c "import sphinx; print sphinx.__version__" OUTPUT_VARIABLE SPHINX_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE) if (Sphinx_FIND_VERSION) # Check if version found is >= required version if (NOT "${SPHINX_VERSION}" VERSION_LESS "${Sphinx_FIND_VERSION}") set(SPHINX_VERSION_OK TRUE) endif() else() # No specific version of Sphinx is requested set(SPHINX_VERSION_OK TRUE) endif() endif() mark_as_advanced( SPHINX_EXECUTABLE SPHINX_VERSION SPHINX_VERSION_OK ) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Sphinx DEFAULT_MSG SPHINX_EXECUTABLE SPHINX_VERSION_OK) dolfin-1.3.0/cmake/modules/FindParMETIS.cmake0000644000175000017500000001253112263014601020522 0ustar johannrjohannr# - Try to find ParMETIS # Once done this will define # # PARMETIS_FOUND - system has ParMETIS # PARMETIS_INCLUDE_DIRS - include directories for ParMETIS # PARMETIS_LIBRARIES - libraries for ParMETIS # PARMETIS_VERSION - version for ParMETIS #============================================================================= # Copyright (C) 2010 Garth N. Wells, Anders Logg and Johannes Ring # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. #============================================================================= if (MPI_CXX_FOUND) find_path(PARMETIS_INCLUDE_DIRS parmetis.h HINTS ${PARMETIS_DIR}/include $ENV{PARMETIS_DIR}/include ${PETSC_DIR}/include DOC "Directory where the ParMETIS header files are located" ) find_library(PARMETIS_LIBRARY parmetis HINTS ${PARMETIS_DIR}/lib $ENV{PARMETIS_DIR}/lib ${PETSC_DIR}/lib NO_DEFAULT_PATH DOC "Directory where the ParMETIS library is located" ) find_library(PARMETIS_LIBRARY parmetis DOC "Directory where the ParMETIS library is located" ) find_library(METIS_LIBRARY metis HINTS ${PARMETIS_DIR}/lib $ENV{PARMETIS_DIR}/lib ${PETSC_DIR}/lib NO_DEFAULT_PATH DOC "Directory where the METIS library is located" ) find_library(METIS_LIBRARY metis DOC "Directory where the METIS library is located" ) set(PARMETIS_LIBRARIES ${PARMETIS_LIBRARY}) if (METIS_LIBRARY) set(PARMETIS_LIBRARIES ${PARMETIS_LIBRARIES} ${METIS_LIBRARY}) endif() # Try compiling and running test program if (DOLFIN_SKIP_BUILD_TESTS) set(PARMETIS_TEST_RUNS TRUE) set(PARMETIS_VERSION "UNKNOWN") set(PARMETIS_VERSION_OK TRUE) elseif (PARMETIS_INCLUDE_DIRS AND PARMETIS_LIBRARY) # Set flags for building test program set(CMAKE_REQUIRED_INCLUDES ${PARMETIS_INCLUDE_DIRS} ${MPI_CXX_INCLUDE_PATH}) set(CMAKE_REQUIRED_LIBRARIES ${PARMETIS_LIBRARIES} ${MPI_CXX_LIBRARIES}) set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} ${MPI_CXX_COMPILE_FLAGS}) # Check ParMETIS version set(PARMETIS_CONFIG_TEST_VERSION_CPP "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/parmetis_config_test_version.cpp") file(WRITE ${PARMETIS_CONFIG_TEST_VERSION_CPP} " #define MPICH_IGNORE_CXX_SEEK 1 #include #include \"parmetis.h\" int main() { #ifdef PARMETIS_SUBMINOR_VERSION std::cout << PARMETIS_MAJOR_VERSION << \".\" << PARMETIS_MINOR_VERSION << \".\" << PARMETIS_SUBMINOR_VERSION; #else std::cout << PARMETIS_MAJOR_VERSION << \".\" << PARMETIS_MINOR_VERSION; #endif return 0; } ") try_run( PARMETIS_CONFIG_TEST_VERSION_EXITCODE PARMETIS_CONFIG_TEST_VERSION_COMPILED ${CMAKE_CURRENT_BINARY_DIR} ${PARMETIS_CONFIG_TEST_VERSION_CPP} CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}" "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}" COMPILE_OUTPUT_VARIABLE PARMETIS_CONFIG_TEST_VERSION_COMPILE_OUTPUT RUN_OUTPUT_VARIABLE PARMETIS_CONFIG_TEST_VERSION_OUTPUT ) if (PARMETIS_CONFIG_TEST_VERSION_EXITCODE EQUAL 0) set(PARMETIS_VERSION ${PARMETIS_CONFIG_TEST_VERSION_OUTPUT} CACHE TYPE STRING) mark_as_advanced(PARMETIS_VERSION) endif() if (ParMETIS_FIND_VERSION) # Check if version found is >= required version if (NOT "${PARMETIS_VERSION}" VERSION_LESS "${ParMETIS_FIND_VERSION}") set(PARMETIS_VERSION_OK TRUE) endif() else() # No specific version requested set(PARMETIS_VERSION_OK TRUE) endif() mark_as_advanced(PARMETIS_VERSION_OK) # Build and run test program include(CheckCXXSourceRuns) check_cxx_source_runs(" #define MPICH_IGNORE_CXX_SEEK 1 #include #include int main() { // FIXME: Find a simple but sensible test for ParMETIS return 0; } " PARMETIS_TEST_RUNS) endif() endif() # Standard package handling find_package_handle_standard_args(ParMETIS "ParMETIS could not be found/configured." PARMETIS_LIBRARIES PARMETIS_TEST_RUNS PARMETIS_INCLUDE_DIRS PARMETIS_VERSION PARMETIS_VERSION_OK) dolfin-1.3.0/cmake/modules/FindBLASHeader.cmake0000644000175000017500000000415312263014601021031 0ustar johannrjohannr# - Try to find BLAS header cblas.h # Once done this will define # # BLASHEADER_FOUND - system has BLAS # BLAS_INCLUDE_DIRS - include directories for BLAS # #============================================================================= # Copyright (C) 2010 Garth N. Wells # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. #============================================================================= message(STATUS "Checking for package 'BLAS'") # Check for header file find_path(BLASHEADER_INCLUDE_DIRS cblas.h HINTS ${BLASHEADER_DIR}/include $ENV{BLASHEADER_DIR}/include DOC "Directory where the BLAS header is located" ) mark_as_advanced(BLASBLASHEADER_INCLUDE_DIRS) # Standard package handling include(FindPackageHandleStandardArgs) find_package_handle_standard_args(BLASHEADER "BLAS C header could not be found. Be sure to set BLASHEADER_DIR." BLASHEADER_INCLUDE_DIRS) dolfin-1.3.0/cmake/modules/FindPaStiX.cmake0000644000175000017500000001161312263014601020346 0ustar johannrjohannr# - Try to find PaStiX # Once done this will define # # PASTIX_FOUND - system has PaStiX # PASTIX_INCLUDE_DIRS - include directories for PaStiX # PASTIX_LIBRARIES - libraries for PaStiX # PASTIX_VERSION - the PaStiX version string (MAJOR.MEDIUM.MINOR) # Check for PaStiX header file find_path(PASTIX_INCLUDE_DIR pastix.h HINTS ${PASTIX_DIR}/include $ENV{PASTIX_DIR}/include ${PASTIX_DIR} $ENV{PASTIX_DIR} PATH_SUFFIXES install DOC "Directory where the PaStiX header is located" ) set(PASTIX_INCLUDE_DIRS ${PASTIX_INCLUDE_DIR}) # Check for PaStiX library find_library(PASTIX_LIBRARY pastix HINTS ${PASTIX_DIR}/lib $ENV{PASTIX_DIR}/lib ${PASTIX_DIR} $ENV{PASTIX_DIR} PATH_SUFFIXES install DOC "The PaStiX library" ) set(PASTIX_LIBRARIES ${PASTIX_LIBRARY}) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND NOT APPLE) # Check for rt library find_library(RT_LIBRARY rt DOC "The RT library" ) # Check for math library find_library(M_LIBRARY m DOC "The math library" ) set(PASTIX_LIBRARIES ${PASTIX_LIBRARIES} ${RT_LIBRARY} ${M_LIBRARY}) message(STATUS "PASTIX_LIBRARIES ${PASTIX_LIBRARIES}") endif() # Check for hwloc header find_path(HWLOC_INCLUDE_DIRS hwloc.h HINTS ${HWLOC_DIR} $ENV{HWLOC_DIR} ${HWLOC_DIR}/include $ENV{HWLOC_DIR}/include DOC "Directory where the hwloc header is located" ) # Check for hwloc library find_library(HWLOC_LIBRARY hwloc HINTS ${HWLOC_DIR} $ENV{HWLOC_DIR} ${HWLOC_DIR}/lib $ENV{HWLOC_DIR}/lib DOC "The hwloc library" ) if (HWLOC_LIBRARY) set(PASTIX_LIBRARIES ${PASTIX_LIBRARIES} ${HWLOC_LIBRARY}) endif() # Add BLAS libs if BLAS has been found set(CMAKE_LIBRARY_PATH ${BLAS_DIR}/lib $ENV{BLAS_DIR}/lib ${CMAKE_LIBRARY_PATH}) find_package(BLAS) set(PASTIX_LIBRARIES ${PASTIX_LIBRARIES} ${BLAS_LIBRARIES}) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") find_program(GFORTRAN_EXECUTABLE gfortran) if (GFORTRAN_EXECUTABLE) execute_process(COMMAND ${GFORTRAN_EXECUTABLE} -print-file-name=libgfortran.so OUTPUT_VARIABLE GFORTRAN_LIBRARY OUTPUT_STRIP_TRAILING_WHITESPACE) if (EXISTS "${GFORTRAN_LIBRARY}") set(PASTIX_LIBRARIES ${PASTIX_LIBRARIES} ${GFORTRAN_LIBRARY}) endif() endif() endif() #Find PaStiX version by looking at pastix.h if (EXISTS ${PASTIX_INCLUDE_DIR}/pastix.h) file(STRINGS ${PASTIX_INCLUDE_DIR}/pastix.h PASTIX_VERSIONS_TMP REGEX "^#define PASTIX_[A-Z]+_VERSION[ \t]+[0-9]+$") if (PASTIX_VERSIONS_TMP) string(REGEX REPLACE ".*#define PASTIX_MAJOR_VERSION[ \t]+([0-9]+).*" "\\1" PASTIX_MAJOR_VERSION ${PASTIX_VERSIONS_TMP}) string(REGEX REPLACE ".*#define PASTIX_MEDIUM_VERSION[ \t]+([0-9]+).*" "\\1" PASTIX_MEDIUM_VERSION ${PASTIX_VERSIONS_TMP}) string(REGEX REPLACE ".*#define PASTIX_MINOR_VERSION[ \t]+([0-9]+).*" "\\1" PASTIX_MINOR_VERSION ${PASTIX_VERSIONS_TMP}) set(PASTIX_VERSION ${PASTIX_MAJOR_VERSION}.${PASTIX_MEDIUM_VERSION}.${PASTIX_MINOR_VERSION} CACHE TYPE STRING) else() set(PASTIX_VERSION "UNKNOWN") endif() endif() if (PaStiX_FIND_VERSION) # Check if version found is >= required version if (NOT "${PASTIX_VERSION}" VERSION_LESS "${PaStiX_FIND_VERSION}") set(PASTIX_VERSION_OK TRUE) endif() else() # No specific version requested set(PASTIX_VERSION_OK TRUE) endif() mark_as_advanced( PASTIX_INCLUDE_DIR PASTIX_INCLUDE_DIRS PASTIX_LIBRARY PASTIX_LIBRARIES PASTIX_VERSION ) # Try to run a test program that uses PaStiX if (DOLFIN_SKIP_BUILD_TESTS) set(PASTIX_TEST_RUNS TRUE) elseif (PASTIX_INCLUDE_DIRS AND PASTIX_LIBRARIES) set(CMAKE_REQUIRED_INCLUDES ${PASTIX_INCLUDE_DIRS}) set(CMAKE_REQUIRED_LIBRARIES ${PASTIX_LIBRARIES}) # Add SCOTCH variables if SCOTCH has been found if (SCOTCH_FOUND) set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${SCOTCH_INCLUDE_DIRS}) set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${SCOTCH_LIBRARIES}) endif() # Add MPI variables if MPI has been found if (MPI_C_FOUND) set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${MPI_C_INCLUDE_PATH}) set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${MPI_C_LIBRARIES}) set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${MPI_C_COMPILE_FLAGS}") endif() # Build and run test program include(CheckCSourceRuns) check_c_source_runs(" /* Test program pastix */ #define MPICH_IGNORE_CXX_SEEK 1 #include #include #include int main() { pastix_int_t iparm[IPARM_SIZE]; double dparm[DPARM_SIZE]; int i = 0; for (i = 0; i < IPARM_SIZE; ++i) iparm[i] = 0; for (i = 0; i < DPARM_SIZE; ++i) dparm[i] = 0.0; // Set default parameters pastix_initParam(iparm, dparm); return 0; } " PASTIX_TEST_RUNS) endif() # Standard package handling include(FindPackageHandleStandardArgs) find_package_handle_standard_args(PASTIX "PaStiX could not be found. Be sure to set PASTIX_DIR." PASTIX_LIBRARIES PASTIX_INCLUDE_DIRS PASTIX_TEST_RUNS PASTIX_VERSION PASTIX_VERSION_OK) dolfin-1.3.0/cmake/modules/language_support_v2.cmake0000644000175000017500000000431012263014601022357 0ustar johannrjohannr# cmake/modules/language_support.cmake # # Temporary additional general language support is contained within this # file. # This additional function definition is needed to provide a workaround for # CMake bug 9220. # On debian testing (cmake 2.6.2), I get return code zero when calling # cmake the first time, but cmake crashes when running a second time # as follows: # # -- The Fortran compiler identification is unknown # CMake Error at /usr/share/cmake-2.6/Modules/CMakeFortranInformation.cmake:7 (GET_FILENAME_COMPONENT): # get_filename_component called with incorrect number of arguments # Call Stack (most recent call first): # CMakeLists.txt:3 (enable_language) # # My workaround is to invoke cmake twice. If both return codes are zero, # it is safe to invoke ENABLE_LANGUAGE(Fortran OPTIONAL) function(workaround_9220 language language_works) #message("DEBUG: language = ${language}") set(text "project(test NONE) cmake_minimum_required(VERSION 2.6.0) enable_language(${language} OPTIONAL) " ) file(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/language_tests/${language}) file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/language_tests/${language}) file(WRITE ${CMAKE_BINARY_DIR}/language_tests/${language}/CMakeLists.txt ${text}) execute_process( COMMAND ${CMAKE_COMMAND} . WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/language_tests/${language} RESULT_VARIABLE return_code OUTPUT_QUIET ERROR_QUIET ) if(return_code EQUAL 0) # Second run execute_process ( COMMAND ${CMAKE_COMMAND} . WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/language_tests/${language} RESULT_VARIABLE return_code OUTPUT_QUIET ERROR_QUIET ) if(return_code EQUAL 0) set(${language_works} ON PARENT_SCOPE) else(return_code EQUAL 0) set(${language_works} OFF PARENT_SCOPE) endif(return_code EQUAL 0) else(return_code EQUAL 0) set(${language_works} OFF PARENT_SCOPE) endif(return_code EQUAL 0) endfunction(workaround_9220) # Temporary tests of the above function. #workaround_9220(CXX CXX_language_works) #message("CXX_language_works = ${CXX_language_works}") #workaround_9220(CXXp CXXp_language_works) #message("CXXp_language_works = ${CXXp_language_works}") dolfin-1.3.0/cmake/modules/FindMTL4.cmake0000644000175000017500000000610712263014601017720 0ustar johannrjohannr# - Try to find MTL4 # Once done this will define # # MTL4_FOUND - system has MTL4 # MTL4_INCLUDE_DIRS - include directories for MTL4 # MTL4_LIBRARIES - libaries defintions for MTL4 # MTL4_DEFINITIONS - compiler defintions for MTL4 #============================================================================= # Copyright (C) 2010-2011 Garth N. Wells, Anders Logg and Johannes Ring # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. #============================================================================= message(STATUS "Checking for package 'MTL4'") # Check for header file find_path(MTL4_INCLUDE_DIRS boost/numeric/mtl/mtl.hpp HINTS ${MTL4_DIR} $ENV{MTL4_DIR} PATH_SUFFIXES include DOC "Directory where the MTL4 header is located" ) # Check for BLAS and enable if found find_package(BLAS QUIET) if (BLAS_FOUND) set(MTL4_LIBRARIES ${BLAS_LIBRARIES}) set(MTL4_DEFINITIONS "-DMTL_HAS_BLAS") endif() # Try compiling and running test program if (DOLFIN_SKIP_BUILD_TESTS) set(MTL4_TEST_RUNS TRUE) elseif (MTL4_INCLUDE_DIRS) # Find Boost, needed by MTL4 set(BOOST_ROOT $ENV{BOOST_DIR}) set(Boost_ADDITIONAL_VERSIONS 1.43 1.43.0) find_package(Boost REQUIRED) # Set flags for building test program set(CMAKE_REQUIRED_INCLUDES ${MTL4_INCLUDE_DIRS} ${Boost_INCLUDE_DIR}) set(CMAKE_REQUIRED_LIBRARIES ${MTL4_LIBRARIES}) set(CMAKE_REQUIRED_FLAGS ${MTL4_DEFINITIONS}) # Build and run test program include(CheckCXXSourceRuns) check_cxx_source_runs(" #include #include int main() { mtl::dense_vector x(10); int size = mtl::num_rows(x); return 0; } " MTL4_TEST_RUNS) endif() # Standard package handling include(FindPackageHandleStandardArgs) find_package_handle_standard_args(MTL4 "MTL4 could not be found. Be sure to set MTL4_DIR" MTL4_INCLUDE_DIRS MTL4_TEST_RUNS) dolfin-1.3.0/cmake/modules/FindLAPACK.cmake0000644000175000017500000002735212263014601020140 0ustar johannrjohannr# - Find LAPACK library # This module finds an installed fortran library that implements the LAPACK # linear-algebra interface (see http://www.netlib.org/lapack/). # # The approach follows that taken for the autoconf macro file, acx_lapack.m4 # (distributed at http://ac-archive.sourceforge.net/ac-archive/acx_lapack.html). # # This module sets the following variables: # LAPACK_FOUND - set to true if a library implementing the LAPACK interface # is found # LAPACK_LINKER_FLAGS - uncached list of required linker flags (excluding -l # and -L). # LAPACK_LIBRARIES - uncached list of libraries (using full path name) to # link against to use LAPACK # LAPACK95_LIBRARIES - uncached list of libraries (using full path name) to # link against to use LAPACK95 # LAPACK95_FOUND - set to true if a library implementing the LAPACK f95 # interface is found # BLA_STATIC if set on this determines what kind of linkage we do (static) # BLA_VENDOR if set checks only the specified vendor, if not set checks # all the possibilities # BLA_F95 if set on tries to find the f95 interfaces for BLAS/LAPACK ### List of vendors (BLA_VENDOR) valid in this module ## Intel(mkl), ACML,Apple, NAS, Generic #============================================================================= # Copyright 2007-2009 Kitware, Inc. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= set(_lapack_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) get_property(_LANGUAGES_ GLOBAL PROPERTY ENABLED_LANGUAGES) if (NOT _LANGUAGES_ MATCHES Fortran OR NOT CMAKE_Fortran_COMPILER_WORKS) include(CheckFunctionExists) else (NOT _LANGUAGES_ MATCHES Fortran OR NOT CMAKE_Fortran_COMPILER_WORKS) include(CheckFortranFunctionExists) endif (NOT _LANGUAGES_ MATCHES Fortran OR NOT CMAKE_Fortran_COMPILER_WORKS) set(LAPACK_FOUND FALSE) set(LAPACK95_FOUND FALSE) # TODO: move this stuff to separate module macro(Check_Lapack_Libraries LIBRARIES _prefix _name _flags _list _blas _threads) # This macro checks for the existence of the combination of fortran libraries # given by _list. If the combination is found, this macro checks (using the # Check_Fortran_Function_Exists macro) whether can link against that library # combination using the name of a routine given by _name using the linker # flags given by _flags. If the combination of libraries is found and passes # the link test, LIBRARIES is set to the list of complete library paths that # have been found. Otherwise, LIBRARIES is set to FALSE. # N.B. _prefix is the prefix applied to the names of all cached variables that # are generated internally and marked advanced by this macro. set(_libraries_work TRUE) set(${LIBRARIES}) set(_combined_name) if (NOT _libdir) if (WIN32) set(_libdir ENV LIB) elseif (APPLE) set(_libdir /usr/local/lib /usr/lib /usr/local/lib64 /usr/lib64 ENV DYLD_LIBRARY_PATH) else () set(_libdir /usr/local/lib /usr/lib /usr/local/lib64 /usr/lib64 ENV LD_LIBRARY_PATH) endif () endif () foreach(_library ${_list}) set(_combined_name ${_combined_name}_${_library}) if(_libraries_work) if (BLA_STATIC) if (WIN32) set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES}) endif ( WIN32 ) if (APPLE) set(CMAKE_FIND_LIBRARY_SUFFIXES .lib ${CMAKE_FIND_LIBRARY_SUFFIXES}) else (APPLE) set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) endif (APPLE) else (BLA_STATIC) if (CMAKE_SYSTEM_NAME STREQUAL "Linux") # for ubuntu's libblas3gf and liblapack3gf packages #set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} .so.3gf) endif () endif (BLA_STATIC) find_library(${_prefix}_${_library}_LIBRARY NAMES ${_library} PATHS ${_libdir} ) mark_as_advanced(${_prefix}_${_library}_LIBRARY) set(${LIBRARIES} ${${LIBRARIES}} ${${_prefix}_${_library}_LIBRARY}) set(_libraries_work ${${_prefix}_${_library}_LIBRARY}) endif(_libraries_work) endforeach(_library ${_list}) if(_libraries_work) # Test this combination of libraries. if(UNIX AND BLA_STATIC) set(CMAKE_REQUIRED_LIBRARIES ${_flags} "-Wl,--start-group" ${${LIBRARIES}} ${_blas} "-Wl,--end-group" ${_threads}) else(UNIX AND BLA_STATIC) set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${${LIBRARIES}} ${_blas} ${_threads}) endif(UNIX AND BLA_STATIC) # message("DEBUG: CMAKE_REQUIRED_LIBRARIES = ${CMAKE_REQUIRED_LIBRARIES}") if (NOT _LANGUAGES_ MATCHES Fortran OR NOT CMAKE_Fortran_COMPILER_WORKS) check_function_exists("${_name}_" ${_prefix}${_combined_name}_WORKS) else (NOT _LANGUAGES_ MATCHES Fortran OR NOT CMAKE_Fortran_COMPILER_WORKS) check_fortran_function_exists(${_name} ${_prefix}${_combined_name}_WORKS) endif (NOT _LANGUAGES_ MATCHES Fortran OR NOT CMAKE_Fortran_COMPILER_WORKS) set(CMAKE_REQUIRED_LIBRARIES) mark_as_advanced(${_prefix}${_combined_name}_WORKS) set(_libraries_work ${${_prefix}${_combined_name}_WORKS}) #message("DEBUG: ${LIBRARIES} = ${${LIBRARIES}}") endif(_libraries_work) if(_libraries_work) set(${LIBRARIES} ${${LIBRARIES}} ${_blas} ${_threads}) else(_libraries_work) set(${LIBRARIES} FALSE) endif(_libraries_work) endmacro(Check_Lapack_Libraries) set(LAPACK_LINKER_FLAGS) set(LAPACK_LIBRARIES) set(LAPACK95_LIBRARIES) if(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED) find_package(BLAS) else(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED) find_package(BLAS REQUIRED) endif(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED) if(BLAS_FOUND) set(LAPACK_LINKER_FLAGS ${BLAS_LINKER_FLAGS}) if ($ENV{BLA_VENDOR} MATCHES ".+") set(BLA_VENDOR $ENV{BLA_VENDOR}) else ($ENV{BLA_VENDOR} MATCHES ".+") if(NOT BLA_VENDOR) set(BLA_VENDOR "All") endif(NOT BLA_VENDOR) endif ($ENV{BLA_VENDOR} MATCHES ".+") if (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All") if(NOT LAPACK_LIBRARIES) check_lapack_libraries( LAPACK_LIBRARIES LAPACK cheev "" "goto2" "${BLAS_LIBRARIES}" "" ) endif(NOT LAPACK_LIBRARIES) endif (BLA_VENDOR STREQUAL "Goto" OR BLA_VENDOR STREQUAL "All") #acml lapack if (BLA_VENDOR MATCHES "ACML.*" OR BLA_VENDOR STREQUAL "All") if (BLAS_LIBRARIES MATCHES ".+acml.+") set (LAPACK_LIBRARIES ${BLAS_LIBRARIES}) endif () endif () # Apple LAPACK library? if (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All") if(NOT LAPACK_LIBRARIES) check_lapack_libraries( LAPACK_LIBRARIES LAPACK cheev "" "Accelerate" "${BLAS_LIBRARIES}" "" ) endif(NOT LAPACK_LIBRARIES) endif (BLA_VENDOR STREQUAL "Apple" OR BLA_VENDOR STREQUAL "All") if (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All") if ( NOT LAPACK_LIBRARIES ) check_lapack_libraries( LAPACK_LIBRARIES LAPACK cheev "" "vecLib" "${BLAS_LIBRARIES}" "" ) endif ( NOT LAPACK_LIBRARIES ) endif (BLA_VENDOR STREQUAL "NAS" OR BLA_VENDOR STREQUAL "All") # Generic LAPACK library? if (BLA_VENDOR STREQUAL "Generic" OR BLA_VENDOR STREQUAL "ATLAS" OR BLA_VENDOR STREQUAL "All") if ( NOT LAPACK_LIBRARIES ) check_lapack_libraries( LAPACK_LIBRARIES LAPACK cheev "" "lapack" "${BLAS_LIBRARIES}" "" ) endif ( NOT LAPACK_LIBRARIES ) endif () #intel lapack if (BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All") if (NOT WIN32) set(LM "-lm") endif () if (_LANGUAGES_ MATCHES C OR _LANGUAGES_ MATCHES CXX) if(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED) find_PACKAGE(Threads) else(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED) find_package(Threads REQUIRED) endif(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED) if (BLA_F95) if(NOT LAPACK95_LIBRARIES) # old check_lapack_libraries( LAPACK95_LIBRARIES LAPACK cheev "" "mkl_lapack95" "${BLAS95_LIBRARIES}" "${CMAKE_THREAD_LIBS_INIT};${LM}" ) endif(NOT LAPACK95_LIBRARIES) if(NOT LAPACK95_LIBRARIES) # new >= 10.3 check_lapack_libraries( LAPACK95_LIBRARIES LAPACK CHEEV "" "mkl_intel_lp64" "${BLAS95_LIBRARIES}" "${CMAKE_THREAD_LIBS_INIT};${LM}" ) endif(NOT LAPACK95_LIBRARIES) else(BLA_F95) if(NOT LAPACK_LIBRARIES) # old check_lapack_libraries( LAPACK_LIBRARIES LAPACK cheev "" "mkl_lapack" "${BLAS_LIBRARIES}" "${CMAKE_THREAD_LIBS_INIT};${LM}" ) endif(NOT LAPACK_LIBRARIES) if(NOT LAPACK_LIBRARIES) # new >= 10.3 check_lapack_libraries( LAPACK_LIBRARIES LAPACK cheev "" "mkl_gf_lp64" "${BLAS_LIBRARIES}" "${CMAKE_THREAD_LIBS_INIT};${LM}" ) endif(NOT LAPACK_LIBRARIES) endif(BLA_F95) endif (_LANGUAGES_ MATCHES C OR _LANGUAGES_ MATCHES CXX) endif(BLA_VENDOR MATCHES "Intel*" OR BLA_VENDOR STREQUAL "All") else(BLAS_FOUND) message(STATUS "LAPACK requires BLAS") endif(BLAS_FOUND) if(BLA_F95) if(LAPACK95_LIBRARIES) set(LAPACK95_FOUND TRUE) else(LAPACK95_LIBRARIES) set(LAPACK95_FOUND FALSE) endif(LAPACK95_LIBRARIES) if(NOT LAPACK_FIND_QUIETLY) if(LAPACK95_FOUND) message(STATUS "A library with LAPACK95 API found.") else(LAPACK95_FOUND) if(LAPACK_FIND_REQUIRED) message(FATAL_ERROR "A required library with LAPACK95 API not found. Please specify library location." ) else(LAPACK_FIND_REQUIRED) message(STATUS "A library with LAPACK95 API not found. Please specify library location." ) endif(LAPACK_FIND_REQUIRED) endif(LAPACK95_FOUND) endif(NOT LAPACK_FIND_QUIETLY) set(LAPACK_FOUND "${LAPACK95_FOUND}") set(LAPACK_LIBRARIES "${LAPACK95_LIBRARIES}") else(BLA_F95) if(LAPACK_LIBRARIES) set(LAPACK_FOUND TRUE) else(LAPACK_LIBRARIES) set(LAPACK_FOUND FALSE) endif(LAPACK_LIBRARIES) if(NOT LAPACK_FIND_QUIETLY) if(LAPACK_FOUND) message(STATUS "A library with LAPACK API found.") else(LAPACK_FOUND) if(LAPACK_FIND_REQUIRED) message(FATAL_ERROR "A required library with LAPACK API not found. Please specify library location." ) else(LAPACK_FIND_REQUIRED) message(STATUS "A library with LAPACK API not found. Please specify library location." ) endif(LAPACK_FIND_REQUIRED) endif(LAPACK_FOUND) endif(NOT LAPACK_FIND_QUIETLY) endif(BLA_F95) set(CMAKE_FIND_LIBRARY_SUFFIXES ${_lapack_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) dolfin-1.3.0/site-packages/0000755000175000017500000000000012263014601015361 5ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin_utils/0000755000175000017500000000000012263015065020061 5ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin_utils/__init__.py0000644000175000017500000000000012263014601022153 0ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin_utils/documentation/0000755000175000017500000000000012263015065022732 5ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin_utils/documentation/indextemplates.pyc0000644000175000017500000000376612263015065026511 0ustar johannrjohannró ÌRc@s=dZdZdZdZdZd„Zd„Zd„ZdS( sÛ.. _programmers_reference_index: ############################################# C++ Programmer's reference for DOLFIN-%s ############################################# .. toctree:: :glob: :maxdepth: 2 */index sª.. _programmers_reference_%s_index: ********************************** DOLFIN %s module ********************************** .. toctree:: :glob: :maxdepth: 1 * s± .. Documentation for the header file dolfin/%(module)s/%(header)s .. _programmers_reference_cpp_%(module)s_%(prefix)s: %(title)s %(formatting)s .. note:: %(note)s %(text)s s| The documentation on this page was automatically extracted from the DOLFIN C++ code and may need to be edited or expanded. sm %(title)s %(formatting)s .. automodule:: %(module)s :members: :undoc-members: :show-inheritance: cCst|S(N(tlibrary_index_cpp_template(tversion((ss/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/indextemplates.pytgenerate_library_indexPscCst||fS(N(tmodule_index_cpp_template(tmodule((ss/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/indextemplates.pytgenerate_module_indexSscCs-i|d6|d6t|ƒ|d6}t|S(NRttitlet formatting(tlentautomodule_template(RRt module_nametoptions((ss/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/indextemplates.pytgenerate_automoduleVsN(RRtheader_cpp_templatet note_templateR RRR (((ss/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/indextemplates.pyt!s   dolfin-1.3.0/site-packages/dolfin_utils/documentation/__init__.py0000644000175000017500000000034312263014601025036 0ustar johannrjohannrfrom extractdocumentation import extract_doc_representation from docstringutils import indent, add_links from generatepythonrst import generate_python_api_documentation from generatecpprst import generate_cpp_api_documentation dolfin-1.3.0/site-packages/dolfin_utils/documentation/extractdocumentation.py0000644000175000017500000001674012263014601027553 0ustar johannrjohannr"""Script to extract documentation from docstrings in *.h files in the DOLFIN source tree.""" # Copyright (C) 2010 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Kristian B. Oelgaard, 2011. # Modified by Marie E. Rognes, 2011. # Modified by Anders E. Johansen, 2011. # # First added: 2010-08-26 # Last changed: 2011-07-10 import os def extract_documentation(dolfin_dir, header, module): "Extract documentation for given header in given module" # print "Extracting documentation for %s..." % header # List of classes with documentation classnames = [] documentation = [] # Class name and parent class name classname = None parents = None # Comment and signature comment = None signature = None # Indentation of signatures indent = 0 # Iterate over each line f = open(os.path.join(dolfin_dir, "dolfin", module, header)) for line in f: # Check for comment if "///" in line: # We may have either "///" and "/// " if "/// " in line: c = line.split("/// ")[1].rstrip() else: c = line.split("///")[1].rstrip() # Found start of new comment if comment is None: comment = c # Continuing comment on next line else: comment += "\n" + c # Check for class # If anything goes wrong, remove the last '<' after template. elif " class " in line and not ";" in line and not "//" in line and not "template<" in line: # Get class name and parent classname = line.split(" class ")[1].split(":")[0].strip() if "public" in line: # Strip of each parent of additional commas, blanks # and newlines parents = [p.strip(", \n") for p in line.split("public")[1:]] # Remove virtual modifier parents = [p.replace("virtual ", "") for p in parents] # Store documentation # TODO: KBO: we don't check if a given classname is in the dolfin # namepace. classnames.append(classname) documentation.append((classname, parents, comment, [])) classname = None parents = None comment = None # If we encounter a '//' commented line we reset comment and proceed # This means that '///' and '//' should not be mixed when documenting # functions. elif line.lstrip()[0:2] == "//" and not line.lstrip()[0:3] == "///": comment = None continue # Check for function signature elif comment is not None: s = line.strip() # Found start of new signature if signature is None: signature = s #indent = (len(s.split("(")[0]) + 1)*" " # Continuing signature on next line else: #signature += "\n" + indent + s signature += " " + s # Signature ends when we find ";" or "{" if ";" in s or "{" in s: # Strip out last part signature = signature.split(";")[0] signature = signature.split("{")[0] signature = signature.strip() # Remove stuff Sphinx can't handle signature = signature.replace("virtual ", "") signature = signature.replace("inline ", "") # Remove ": stuff" for constructors new_s = [] for l in signature.split("::"): if not ":" in l: new_s.append(l) else: new_s.append(l.split(":")[0]) break signature = "::".join(new_s).strip() # Remove template stuff (not handled correctly by Sphinx) # e.g., 'template CGAL::Bbox_3 bbox()' in mesh/Point.h if "template" in signature: signature = ">".join(signature.split(">")[1:]).lstrip() # Ignore enums, not handled by Sphinx if "enum" in signature: # Reset comment and signature comment = None signature = None continue # Only handle functions, i.e. signatures that contain '(' # (or ')'). This is to avoid picking up data members. # NOTE, KBO: Should we also skip private functions? if not "(" in signature: # Reset comment and signature comment = None signature = None continue # Skip destructors (not handled by Sphinx) destructor = "~" in signature # Get function name #function = signature.split("(")[0].split(" ")[-1] # Store documentation if len(documentation) > 0 and not destructor: documentation[-1][-1].append((signature, comment)) elif not destructor: documentation = [(None, None, None, [(signature, comment)])] # Reset comment and signature comment = None signature = None # Close file f.close() # Sort documentation alphabetically within each class # for (classname, parent, comment, function_documentation) in documentation: # function_documentation.sort() return documentation, classnames def extract_doc_representation(dolfin_dir): # Extract modules from dolfin.h modules = [] f = open(os.path.join(dolfin_dir, "dolfin", "dolfin.h")) for line in f: if line.startswith("#include ")[0] # if not header == "GenericTensor.h": # continue doc, cls = extract_documentation(dolfin_dir, header, module) documentation[module].append((header, doc)) classnames += cls return documentation, classnames if __name__ == "__main__": docs, classes = extract_doc_representation() # for c in classes: # print c # for key, doc in docs.items(): # for header, cont in doc: # print cont dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatecpprst.pyc0000644000175000017500000001025712263015065026502 0ustar johannrjohannró ÌRc@s{ddlZddlmZddlmZmZddlZdgZd„Zd„Z d„Z d„Z dd „Z dS( iÿÿÿÿN(textract_doc_representation(tindentt add_linkstgenerate_cpp_api_documentationc Cs¡g}d}|dk rÀd}|d|g7}|dk r|tddƒg7}x+|D] }|td|dƒg7}qXWn|dk rÍt||dƒ}|t|dƒgdg7}qÍn |dg7}x¾|D]¶\}}d|krA|jdƒ} dj| dgg| d D]} td ƒd d | ^qƒ}nt||dƒ}|td ||ƒg7}|t||dƒdg7}qÔWdj|ƒ} | S( Niis.. cpp:class:: %s s*Parent class(es)* s* :cpp:class:`%s` is :cpp:class:s is.. cpp.function::t s.. cpp:function:: %s (tNoneRRtsplittjointlen( t classnametparentstcommenttfunction_documentationt classnamestoutputt base_indenttparentt signaturetlinestlttext((ss/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatecpprst.pytwrite_class_doc!s0   ! #  3!c CsÈg}x9|D]1\}}}}|t|||||ƒg7}q Wdj|ƒ} ttjdƒ} i|d6|d6|jdƒdjƒd6|d6t|ƒd d 6| d 6| d 6} tj| } | S( Ns itmoduletheadert.itprefixttitlet=t formattingtnoteR( RRRt templatest note_templateRtlowerRtheader_cpp_template( RRt documentationR RR R R R RRt dictionaryttemplate((ss/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatecpprst.pytgenerate_header_rst_fileGs cCs*t|dƒ}|j|ƒ|jƒdS(Ntw(topentwritetclose(tfilenametcontentstf((ss/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatecpprst.pytopen_write_closeYs c Cs¦td|dƒGHtj|ƒ}tjj|dƒ}t||ƒx\|D]T\}}tjj||jdƒddƒ}t||||ƒ} t|| ƒqJWdS(Ns$Generating documentation for %s ... is index.rstRs.rst( RRtgenerate_module_indextostpathRR-RR%( RR"R t output_dirt module_indextindex_filenameRtdoct rst_filenamet header_rst((ss/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatecpprst.pytgenerate_cpp_module^s &  c Csãd|GHdGHd|GHytj|ƒd|GHWnd|GHnXt|ƒ\}}tj|ƒ}tjj|dƒ}t||ƒxU|D]M}tjj||ƒ}ytj|ƒWnnXt|||||ƒqŽWdS(s§ Generate .rst files for C++ DOLFIN Programmer's Reference Arguments: * version version should be the version number, example 0.9.11 or dev s6Generating .rst for C++ API documentation of DOLFIN-%ssThis can take some time ...sReading from %ssCreating output directory: %ss&Output directory (%s) already existings index.rstN( R/tmakedirsRRtgenerate_library_indexR0RR-R7( t input_dirR1tversionR"R t library_indextlibrary_index_filenameRt module_dir((ss/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatecpprst.pyRrs(       (R/tdolfin_utils.documentationRRRtindextemplatesRt__all__RR%R-R7RR(((ss/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatecpprst.pyts    &   dolfin-1.3.0/site-packages/dolfin_utils/documentation/docstringutils.py0000644000175000017500000000306012263014601026353 0ustar johannrjohannr"Utility functions for docstring manipulations." # Copyright (C) 2010 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Kristian B. Oelgaard, 2010. # Modified by Marie E. Rognes, 2011. # # First added: 2010-08-26 # Last changed: 2011-05-10 import re _compiled_cache = {} def indent(string, num_spaces): "Indent given text block given number of spaces" return "\n".join(num_spaces*" " + l for l in string.split("\n")) def add_links(text, classnames, link_type): "Add crosslinks for classes" for classname in classnames: if classname not in text: continue p = _compiled_cache.get(classname) if not p: p = re.compile(r"\b_%s_\b" % classname) _compiled_cache[classname] = p text = p.sub("%s`%s`" % (link_type, classname), text) # Escape pointer arguments: replace * by \* after class names text = text.replace("`*", "`\*") return text dolfin-1.3.0/site-packages/dolfin_utils/documentation/docstringutils.pyc0000644000175000017500000000266712263015065026537 0ustar johannrjohannró ÌRc@s.dZddlZiZd„Zd„ZdS(s.Utility functions for docstring manipulations.iÿÿÿÿNcs&dj‡fd†|jdƒDƒƒS(s.Indent given text block given number of spacess c3s|]}ˆd|VqdS(t N((t.0tl(t num_spaces(ss/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/docstringutils.pys s(tjointsplit(tstringR((Rss/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/docstringutils.pytindentscCsŠxq|D]i}||krqntj|ƒ}|sTtjd|ƒ}|t|s  dolfin-1.3.0/site-packages/dolfin_utils/documentation/indextemplates.py0000644000175000017500000000414212263014601026326 0ustar johannrjohannr# Copyright (C) 2011 Anders Logg, Kristian Oelgaard, and Marie E. Rognes # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2011-05-23 # Last changed: 2011-05-27 library_index_cpp_template = """\ .. _programmers_reference_index: ############################################# C++ Programmer's reference for DOLFIN-%s ############################################# .. toctree:: :glob: :maxdepth: 2 */index """ module_index_cpp_template = """\ .. _programmers_reference_%s_index: ********************************** DOLFIN %s module ********************************** .. toctree:: :glob: :maxdepth: 1 * """ header_cpp_template = """\ .. Documentation for the header file dolfin/%(module)s/%(header)s .. _programmers_reference_cpp_%(module)s_%(prefix)s: %(title)s %(formatting)s .. note:: %(note)s %(text)s """ note_template = """ The documentation on this page was automatically extracted from the DOLFIN C++ code and may need to be edited or expanded. """ automodule_template = """ %(title)s %(formatting)s .. automodule:: %(module)s :members: :undoc-members: :show-inheritance: """ def generate_library_index(version): return library_index_cpp_template % version def generate_module_index(module): return module_index_cpp_template % (module, module) def generate_automodule(title, formatting, module_name): options = {"module": module_name, "title": title, "formatting": len(title)*formatting} return automodule_template % options dolfin-1.3.0/site-packages/dolfin_utils/documentation/extractdocumentation.pyc0000644000175000017500000000621112263015065027713 0ustar johannrjohannró ÌRc@sFdZddlZd„Zd„ZedkrBeƒ\ZZndS(sWScript to extract documentation from docstrings in *.h files in the DOLFIN source tree.iÿÿÿÿNc Csg}g}d}d}d}d}d} ttjj|d||ƒƒ} x²| D]ª} d| krËd| krŒ| jdƒdjƒ} n| jdƒdjƒ} |dkrº| }qü|d| 7}qRd| kr¿d| kr¿d | kr¿d | kr¿| jdƒdjd ƒdjƒ}d | kr„g| jd ƒdD]} | jd ƒ^qA}g|D]} | jddƒ^qc}n|j |ƒ|j |||gfƒd}d}d}qR| j ƒdd!d krþ| j ƒdd!dk rþd}qRqR|dk rR| jƒ}|dkr+|}n|d|7}d|ksQd|krü|jdƒd}|jdƒd}|jƒ}|jddƒ}|jddƒ}g}xN|jdƒD]=}d |krß|j |ƒq½|j |jd ƒdƒPq½Wdj|ƒjƒ}d|krDdj|jdƒdƒj ƒ}nd|krbd}d}qRnd|kr€d}d}qRnd|k}t |ƒdkrÃ| rÃ|ddj ||fƒn'|sêddd||fgfg}nd}d}qüqRqRW| j ƒ||fS(s6Extract documentation for given header in given moduleitdolfins///s/// is s class t;s//s templatetenumt(t~iÿÿÿÿN( tNonetopentostpathtjointsplittrstriptstriptreplacetappendtlstriptlentclose(t dolfin_dirtheadertmodulet classnamest documentationt classnametparentstcommentt signaturetindenttftlinetctptstnew_stlt destructor((sy/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/extractdocumentation.pytextract_documentations„!     0& /(  3       %   ! c CsCg}ttjj|ddƒƒ}x@|D]8}|jdƒr+|jdƒd}||g7}q+q+W|jƒi}g}x¹|D]±}ttjj|d|d|ƒƒ}g||s   š dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.pyc0000644000175000017500000001676712263015065027255 0ustar johannrjohannró ÌRc@s«ddlZddlZddlZddlmZdgZdefd„ƒYZd„Zd„Z d„Z e d „Z d „Z d „Zd „Zd „Zd„ZdS(iÿÿÿÿN(tindentt!generate_python_api_documentationtModulecBseZd„Zd„ZRS(cCs||_||_g|_dS(N(tnametfilet submodules(tselfRtmod_file((sv/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.pyt__init__s  cCs|jS(N(R(R((sv/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.pyt__hash__"s(t__name__t __module__RR (((sv/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.pyRs cCsrxktj|ƒD]Z}tjj||ƒ}d}tjj|ƒrªtjj|ƒ\}}|dkrª|dkrªtdj|j|gƒ|ƒ}|j j |ƒqªntjj |ƒr*dtj|ƒkr×qntdj|j|gƒtjj|dƒƒ}|j j |ƒt |||ƒn|dk r||krZ|G|GHt dƒ‚n|j |ƒqqWdS(Ns.pyRt.s __init__.pysmodule already present???(tostlistdirtpathtjointNonetisfiletsplitextRRRtappendtisdirt get_modulest RuntimeError(tparenttloctmodulestmodtftnew_modtmte((sv/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.pyR%s&!0   cBs'g}g}i}ejj|jƒddkr;||fSde|jdƒjƒkrbe}ne}d|j|fdUx|j ƒD]\}}e |e j e j fƒrÜ|sÉ|j|jkr|j|ƒqqŠe |e jƒrŠ|s|j|jkr|j|ƒqqŠqŠW||fS(ssExtract classes and functions defined in a module. The function will not return imported classes and functions.is __init__.pyt__all__trsfrom %s import *N(R RtsplitRtopentreadtTruetFalseRtitemst isinstancettypest ClassTypetTypeTypeR Rt FunctionType(tmoduletclassest functionstobjectst define_alltkeytval((sv/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.pyt get_objects@s$  cCs&d|tdjt|ƒƒdƒfS(Ns( %s: .. toctree:: :maxdepth: 1 %s s i(RRtsorted(t item_typeR'((sv/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.pyt index_itemsgscCs5|t|ƒ}|r'd|||fSd||fS(Ns %s %s %s s%s %s (tlen(tstringtlevelttoptmarkers((sv/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.pytcaptionqscCsd}|d|S(Ns.. _programmers_reference_s%s: ((t package_nameRtoutput((sv/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.pytlabelwscCs`|d}|dt|ƒd7}|d|7}|d|7}|d7}|d7}|d7}|S(Ns t=s .. currentmodule:: %s s.. autoclass:: %s s :members: s :undoc-members: s :show-inheritance: (R8(Rt module_nameR?((sv/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.pyt write_class{s    cCsûd||d|f}|t|dj|jdƒd|jƒgƒƒ7}|dkrp|t||ƒ7}nH||d7}|dt|ƒd7}|d|7}|d ||f7}tjj||d ƒ}t|d ƒ}|j |ƒ|j ƒdS( Ns .. Documentation for the %s %s R t_itclasss RAs .. currentmodule:: %s s.. auto%s:: %s s.rsttw( R@RR"tlowerRCR8R RR#twritetclose(R>t directoryRBRtobj_typeR?toutfileR((sv/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.pyt write_object†s6  cCs€|d|}|g}||jjdƒd7}tjjj|ƒ}ytj|ƒWnnXg}xJ|jD]?}|dkrŸ|dkrŸ|jdƒqq|j|dƒqqWt |ƒ\} } d|j} | t |d j|jjdƒdd gƒƒ7} |j|kr7|dkr7| t d d ƒ7} nE|j|kr\| t d d ƒ7} n d|j} | t | dƒ7} tjj|dƒ} t | dƒ}|j | ƒ|rÌ|j td|ƒƒn| rë|j td| ƒƒn| r |j td| ƒƒn|j d|jƒ|jƒx'| D]}t|||j|dƒq/Wx'| D]}t|||j|dƒqYWdS(Nt-R itcpptdolfins2dolfin.cpp (Swig autogenerated module) s/indexs".. Index file for the %s module. RDtindexs*Programmer's reference for DOLFIN (Python)t#sProgrammer's references %s modulet*s index.rstRFtModulestClassest Functionsse Module docstring: .. automodule:: %s :no-members: :no-undoc-members: :no-show-inheritance:REtfunction(RR"R RtsepRtmakedirsRRR4R@R=R#RHR7RIRM(R>R-t output_dirtversiontpackage_versiontdirsRJRtsubR.R/R?theaderRLRto((sv/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.pytwrite_documentation•sL  3     cCs¡d|jGHt|jtjjtjj|jƒdƒƒg}t|dtjj|jƒ|ƒdGHx3t|dd„ƒD]}t |j|||ƒq}WdS(Ns" Writing files for module: %s ... s __init__.pyis!Writing files for submodules ... R2cSs|jS(N(R(R`((sv/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.pytÙs( R RR RRtdirnamet__file__RR5Ra(R-RZR[tsubmodstsubmod((sv/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.pyRÏs  #(R tsysR)tdolfin_utils.documentationRR tobjectRRR4R7R&R=R@RCRMRaR(((sv/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.pyts$   '    :dolfin-1.3.0/site-packages/dolfin_utils/documentation/generatecpprst.py0000644000175000017500000001225012263014601026325 0ustar johannrjohannr# Copyright (C) 2010 Anders Logg and Kristian Oelgaard # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Marie E. Rognes # # First added: 2010 # Last changed: 2011-05-23 import os # Import the documentation extractor tools from dolfin_utils from dolfin_utils.documentation import extract_doc_representation from dolfin_utils.documentation import indent, add_links import indextemplates as templates __all__ = ["generate_cpp_api_documentation"] def write_class_doc(classname, parents, comment, function_documentation, classnames): output = [] base_indent = 0 if classname is not None: base_indent = 4 output += [".. cpp:class:: %s\n" % classname] if parents is not None: output += [indent("*Parent class(es)*\n", 4)] for parent in parents: output += [indent("* :cpp:class:`%s`\n" % parent, 8)] if comment is not None: comment = add_links(comment, classnames, ":cpp:class:") #NB output += [indent(comment, 4)] + ["\n"] else: output += ["\n"] for (signature, comment) in function_documentation: # Handle indentation of signature # Hm? if "\n" in signature: lines = signature.split("\n") signature = ("\n".join([lines[0]] + [(len(".. cpp.function::") + 1)*" " + l for l in lines[1:]])) # Add crosslinks in comment comment = add_links(comment, classnames, ":cpp:class:") output += [indent(".. cpp:function:: %s\n" % signature, base_indent)] output += [indent(comment, base_indent + 4), "\n"] text = "\n".join(output) return text def generate_header_rst_file(module, header, documentation, classnames): output = [] for (classname, parents, comment, function_documentation) in documentation: output += [write_class_doc(classname, parents, comment, function_documentation, classnames)] text = "\n".join(output) note = indent(templates.note_template, 4) dictionary = {"module": module, "header": header, "prefix": header.split(".")[0].lower(), "title": header, "formatting": len(header)*"=", "note": note, "text": text} template = templates.header_cpp_template % dictionary return template def open_write_close(filename, contents): f = open(filename, "w") f.write(contents) f.close() def generate_cpp_module(module, documentation, classnames, output_dir): print indent("Generating documentation for %s ... " % module, 0) # Generate index file for this module module_index = templates.generate_module_index(module) index_filename = os.path.join(output_dir, "index.rst") open_write_close(index_filename, module_index) # Generate .rst for each header file in this module for (header, doc) in documentation: #print indent("Generating documentation for %s" % header, 2) rst_filename = os.path.join(output_dir, header.split(".")[0] + ".rst") header_rst = generate_header_rst_file(module, header, doc, classnames) open_write_close(rst_filename, header_rst) return def generate_cpp_api_documentation(input_dir, output_dir, version=None): """ Generate .rst files for C++ DOLFIN Programmer's Reference Arguments: * version version should be the version number, example 0.9.11 or dev """ print "Generating .rst for C++ API documentation of DOLFIN-%s" % version print "This can take some time ..." print "Reading from %s" % input_dir try: os.makedirs(output_dir) print "Creating output directory: %s" % output_dir except: print "Output directory (%s) already existing" % output_dir # Get representation documentation, classnames = extract_doc_representation(input_dir) # Generate index file for library library_index = templates.generate_library_index(version) library_index_filename = os.path.join(output_dir, "index.rst") open_write_close(library_index_filename, library_index) # Generate documentation for each module for module in documentation: # Create directory for this module module_dir = os.path.join(output_dir, module) try: os.makedirs(module_dir) except: pass # Create documentation for this module generate_cpp_module(module, documentation[module], classnames, module_dir) dolfin-1.3.0/site-packages/dolfin_utils/documentation/__init__.pyc0000644000175000017500000000103012263015065025200 0ustar johannrjohannró ÌRc@sJddlmZddlmZmZddlmZddlmZdS(iÿÿÿÿ(textract_doc_representation(tindentt add_links(t!generate_python_api_documentation(tgenerate_cpp_api_documentationN( textractdocumentationRtdocstringutilsRRtgeneratepythonrstRtgeneratecpprstR(((sm/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/documentation/__init__.pytsdolfin-1.3.0/site-packages/dolfin_utils/documentation/generatepythonrst.py0000644000175000017500000001634612263014601027076 0ustar johannrjohannr# Copyright (C) 2011 Kristian B. Oelgaard # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Marie E. Rognes, 2011 # # First added: 2011-05-23 # Last changed: 2011-06-18 import os, sys, types from dolfin_utils.documentation import indent __all__ = ["generate_python_api_documentation"] class Module(object): def __init__(self, name, mod_file): self.name = name self.file = mod_file self.submodules = [] def __hash__(self): return self.name def get_modules(parent, loc, modules): for mod in os.listdir(loc): f = os.path.join(loc, mod) new_mod = None # Add modules (files) to global dict and to parent as submodules. if os.path.isfile(f): m, e = os.path.splitext(mod) if e == ".py" and m != "__init__": new_mod = Module(".".join([parent.name, m]), f) parent.submodules.append(m) # Add submodules (directories with '__init__.py' files) to global dict # and to parent as submodules. if os.path.isdir(f): if not "__init__.py" in os.listdir(f): continue new_mod = Module(".".join([parent.name, mod]), os.path.join(f, "__init__.py")) parent.submodules.append(mod) # Recursively extract submodules. get_modules(new_mod, f, modules) if new_mod is not None: if new_mod in modules: print new_mod, modules raise RuntimeError("module already present???") modules.append(new_mod) def get_objects(module): """Extract classes and functions defined in a module. The function will not return imported classes and functions.""" classes = [] functions = [] objects = {} # Ignore classes and functions defined in __init__.py. # This is to get rid of double occurrences of classes like FunctionSpace # (included in __all__ variable of dolfin/functions/__init__.py # and dolfin/functions/functionspace.py. if os.path.split(module.file)[1] == "__init__.py": return classes, functions # NOTE: Dirty hack for Python 2.6, in 2.7 it should be possible to use # importlib for submodules to test if __all__ is defined. if "__all__" in open(module.file, "r").read(): define_all = True else: define_all = False # Get objects listed in __all__ by developer. exec("from %s import *" % module.name, objects) for key, val in objects.items(): # print "key: ", key if isinstance(val, (types.ClassType, types.TypeType)): if define_all or module.name == val.__module__: classes.append(key) elif isinstance(val, types.FunctionType): # print "fun, mod: ", val.__module__ if define_all or module.name == val.__module__: functions.append(key) # Anything else we need to catch? else: pass return classes, functions def index_items(item_type, items): return """ %s: .. toctree:: :maxdepth: 1 %s """ % (item_type, indent("\n".join(sorted(items)), 4)) def caption(string, level, top=False): markers = level*len(string) if top: return "%s\n%s\n%s\n" % (markers, string, markers) return "%s\n%s\n" % (string, markers) def label(package_name, name): output = ".. _programmers_reference_" return output + "%s:\n\n" % name def write_class(name, module_name): output = name + "\n" output += "="*len(name) + "\n" output += "\n.. currentmodule:: %s\n\n" % module_name output += ".. autoclass:: %s\n" % name output += " :members:\n" output += " :undoc-members:\n" output += " :show-inheritance:\n" return output def write_object(package_name, directory, module_name, name, obj_type): output = ".. Documentation for the %s %s\n\n" % (obj_type, module_name + "." + name) output += label(package_name, "_".join(module_name.split(".")[1:] + [name.lower()])) if obj_type == "class": output += write_class(name, module_name) else: output += name + "\n" output += "="*len(name) + "\n" output += "\n.. currentmodule:: %s\n\n" % module_name output += ".. auto%s:: %s\n" % (obj_type, name) outfile = os.path.join(directory, name + ".rst") f = open(outfile, "w") f.write(output) f.close() def write_documentation(package_name, module, output_dir, version): package_version = package_name + "-" + version dirs = [output_dir] dirs += module.name.split(".")[1:] directory = os.path.sep.join(dirs) try: os.makedirs(directory) except: pass modules = [] # Special handling of cpp module in dolfin. for sub in module.submodules: if sub == "cpp" and package_name == "dolfin": modules.append("dolfin.cpp (Swig autogenerated module) ") else: modules.append(sub + "/index") classes, functions = get_objects(module) output = ".. Index file for the %s module.\n\n" % module.name output += label(package_name, "_".join(module.name.split(".")[1:] + ["index"])) if module.name == package_name and package_name == "dolfin": output += caption("Programmer's reference for DOLFIN (Python)", "#") elif module.name == package_name: output += caption("Programmer's reference", "#") else: header = "%s module" % module.name output += caption(header, "*") outfile = os.path.join(directory, "index.rst") f = open(outfile, "w") f.write(output) if modules: f.write(index_items("Modules", modules)) if classes: f.write(index_items("Classes", classes)) if functions: f.write(index_items("Functions", functions)) f.write("""\nModule docstring: .. automodule:: %s :no-members: :no-undoc-members: :no-show-inheritance:""" % module.name) f.close() for o in classes: write_object(package_name, directory, module.name, o, "class") for o in functions: write_object(package_name, directory, module.name, o, "function") def generate_python_api_documentation(module, output_dir, version): print "\nWriting files for module: %s ... " % module.__name__ submods = [Module(module.__name__, os.path.join(os.path.dirname(module.__file__), "__init__.py"))] get_modules(submods[0], os.path.dirname(module.__file__), submods) print "Writing files for submodules ... " for submod in sorted(submods, key=lambda o: o.name): # print " Writing files for sub module: ", submod.name write_documentation(module.__name__, submod, output_dir, version) dolfin-1.3.0/site-packages/dolfin_utils/meshconvert/0000755000175000017500000000000012263014601022411 5ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin_utils/meshconvert/__init__.py0000644000175000017500000000000012263014601024510 0ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin_utils/meshconvert/xml_writer.py0000644000175000017500000001132212263014601025156 0ustar johannrjohannr"""Module for formatting DOLFIN XML files.""" # Copyright (C) 2012 Garth N. Wells # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Jan Blechta, 2012. # # Last changed: 2012-11-22 # Write mesh header def write_header_mesh(ofile, cell_type, dim): ofile.write("""\ """ % (cell_type, dim)) # Write graph header def write_header_graph(ofile, graph_type): ofile.write("""\ """ % (graph_type)) # Write mesh footer def write_footer_mesh(ofile): ofile.write("""\ """) # Write graph footer def write_footer_graph(ofile): ofile.write("""\ """) def write_header_vertices(ofile, num_vertices): "Write vertices header" print "Expecting %d vertices" % num_vertices ofile.write(" \n" % num_vertices) def write_footer_vertices(ofile): "Write vertices footer" ofile.write(" \n") print "Found all vertices" def write_header_edges(ofile, num_edges): "Write edges header" print "Expecting %d edges" % num_edges ofile.write(" \n" % num_edges) def write_footer_edges(ofile): "Write edges footer" ofile.write(" \n") print "Found all edges" def write_vertex(ofile, vertex, x, y, z): "Write vertex" ofile.write(" \n" % \ (vertex, x, y, z)) def write_graph_vertex(ofile, vertex, num_edges, weight = 1): "Write graph vertex" ofile.write(" \n" % \ (vertex, num_edges, weight)) def write_graph_edge(ofile, v1, v2, weight = 1): "Write graph edge" ofile.write(" \n" % \ (v1, v2, weight)) def write_header_cells(ofile, num_cells): "Write cells header" ofile.write(" \n" % num_cells) print "Expecting %d cells" % num_cells def write_footer_cells(ofile): "Write cells footer" ofile.write(" \n") print "Found all cells" def write_cell_interval(ofile, cell, n0, n1): "Write cell (interval)" ofile.write(" \n" % \ (cell, n0, n1)) def write_cell_triangle(ofile, cell, n0, n1, n2): "Write cell (triangle)" ofile.write(" \n" % \ (cell, n0, n1, n2)) def write_cell_tetrahedron(ofile, cell, n0, n1, n2, n3): "Write cell (tetrahedron)" ofile.write(" \n" % \ (cell, n0, n1, n2, n3)) def write_header_domains(ofile): ofile.write(" \n") def write_footer_domains(ofile): ofile.write(" \n") def write_header_meshvaluecollection(ofile, name, dim, size, etype): ofile.write(" \n" % (name, etype, dim, size)) def write_entity_meshvaluecollection(ofile, dim, index, value, local_entity=0): ofile.write(" \n" % (index, local_entity, value)) def write_footer_meshvaluecollection(ofile): ofile.write(" \n") def write_header_meshfunction(ofile, dimensions, size): header = """ """ % (dimensions, size) ofile.write(header) def write_header_meshfunction2(ofile): header = """ """ ofile.write(header) def write_entity_meshfunction(ofile, index, value): ofile.write(""" """ % (index, value)) def write_footer_meshfunction(ofile): ofile.write(""" """) dolfin-1.3.0/site-packages/dolfin_utils/meshconvert/meshconvert.py0000644000175000017500000014075512263014601025334 0ustar johannrjohannr""" Module for converting various mesh formats.""" # Copyright (C) 2006 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Garth N. Wells (gmsh function) # Modified by Alexander H. Jarosch (gmsh fix) # Modified by Angelo Simone (Gmsh and Medit fix) # Modified by Andy R. Terrel (gmsh fix and triangle function) # Modified by Magnus Vikstrom (metis and scotch function) # Modified by Bartosz Sawicki (diffpack function) # Modified by Gideon Simpson (Exodus II function) # Modified by Kent-Andre Mardal (Star-CD function) # Modified by Nuno Lopes (fix for emc2 mesh format (medit version 0)) # Modified by Neilen Marais (add gmsh support for reading physical region) # Modified by Evan Lezar (add support for reading gmsh physical regions on facets) # Modified by Jan Blechta (add triangle support for marker on edges and attributes on triangles) # # Last changed: 2012-11-22 # NOTE: This module does not depend on (py)dolfin beeing installed. # NOTE: If future additions need that please import dolfin in a try: except: # NOTE: clause and tell the user to install dolfin if it is not installed. import getopt import sys from instant import get_status_output import re import warnings import os.path import abaqus import xml_writer import numpy def format_from_suffix(suffix): "Return format for given suffix" if suffix == "xml": return "xml" elif suffix == "mesh": return "mesh" elif suffix == "gmsh": return "gmsh" elif suffix == "msh": return "gmsh" elif suffix == "gra": return "metis" elif suffix == "grf": return "scotch" elif suffix == "grid": return "diffpack" elif suffix == "inp": return "abaqus" elif suffix == "ncdf": return "NetCDF" elif suffix =="exo": return "ExodusII" elif suffix =="e": return "ExodusII" elif suffix == "vrt" or suffix == "cel": return "StarCD" elif suffix == "ele" or suffix == "node": return "Triangle" else: _error("Sorry, unknown suffix %s." % suffix) def mesh2xml(ifilename, ofilename): """Convert between .mesh and .xml, parser implemented as a state machine: 0 = read 'Dimension' 1 = read dimension 2 = read 'Vertices' 3 = read number of vertices 4 = read next vertex 5 = read 'Triangles' or 'Tetrahedra' 6 = read number of cells 7 = read next cell 8 = done """ print "Converting from Medit format (.mesh) to DOLFIN XML format" # Open files ifile = open(ifilename, "r") ofile = open(ofilename, "w") # Scan file for cell type cell_type = None dim = 0 while 1: # Read next line line = ifile.readline() if not line: break # Remove newline if line[-1] == "\n": line = line[:-1] # Read dimension if line == "Dimension" or line == " Dimension": line = ifile.readline() num_dims = int(line) if num_dims == 2: cell_type = "triangle" dim = 2 elif num_dims == 3: cell_type = "tetrahedron" dim = 3 break # Check that we got the cell type if cell_type == None: _error("Unable to find cell type.") # Step to beginning of file ifile.seek(0) # Write header xml_writer.write_header_mesh(ofile, cell_type, dim) # Current state state = 0 # Write data num_vertices_read = 0 num_cells_read = 0 while 1: # Read next line line = ifile.readline() if not line: break # Skip comments if line[0] == '#': continue # Remove newline if line[-1] == "\n": line = line[:-1] if state == 0: if line == "Dimension" or line == " Dimension": state += 1 elif state == 1: num_dims = int(line) state +=1 elif state == 2: if line == "Vertices" or line == " Vertices": state += 1 elif state == 3: num_vertices = int(line) xml_writer.write_header_vertices(ofile, num_vertices) state +=1 elif state == 4: if num_dims == 2: (x, y, tmp) = line.split() x = float(x) y = float(y) z = 0.0 elif num_dims == 3: (x, y, z, tmp) = line.split() x = float(x) y = float(y) z = float(z) xml_writer.write_vertex(ofile, num_vertices_read, x, y, z) num_vertices_read +=1 if num_vertices == num_vertices_read: xml_writer.write_footer_vertices(ofile) state += 1 elif state == 5: if (line == "Triangles" or line == " Triangles") and num_dims == 2: state += 1 if line == "Tetrahedra" and num_dims == 3: state += 1 elif state == 6: num_cells = int(line) xml_writer.write_header_cells(ofile, num_cells) state +=1 elif state == 7: if num_dims == 2: (n0, n1, n2, tmp) = line.split() n0 = int(n0) - 1 n1 = int(n1) - 1 n2 = int(n2) - 1 xml_writer.write_cell_triangle(ofile, num_cells_read, n0, n1, n2) elif num_dims == 3: (n0, n1, n2, n3, tmp) = line.split() n0 = int(n0) - 1 n1 = int(n1) - 1 n2 = int(n2) - 1 n3 = int(n3) - 1 xml_writer.write_cell_tetrahedron(ofile, num_cells_read, n0, n1, n2, n3) num_cells_read +=1 if num_cells == num_cells_read: xml_writer.write_footer_cells(ofile) state += 1 elif state == 8: break # Check that we got all data if state == 8: print "Conversion done" else: _error("Missing data, unable to convert") # Write footer xml_writer.write_footer_mesh(ofile) # Close files ifile.close() ofile.close() def gmsh2xml(ifilename, handler): """Convert between .gmsh v2.0 format (http://www.geuz.org/gmsh/) and .xml, parser implemented as a state machine: 0 = read 'MeshFormat' 1 = read mesh format data 2 = read 'EndMeshFormat' 3 = read 'Nodes' 4 = read number of vertices 5 = read vertices 6 = read 'EndNodes' 7 = read 'Elements' 8 = read number of cells 9 = read cells 10 = done Afterwards, extract physical region numbers if they are defined in the mesh file as a mesh function. """ print "Converting from Gmsh format (.msh, .gmsh) to DOLFIN XML format" # The dimension of the gmsh element types supported here as well as the dolfin cell types for each dimension gmsh_dim = {15: 0, 1: 1, 2: 2, 4: 3} cell_type_for_dim = {1: "interval", 2: "triangle", 3: "tetrahedron" } # the gmsh element types supported for conversion supported_gmsh_element_types = [1, 2, 4, 15] # Open files ifile = open(ifilename, "r") # Scan file for cell type cell_type = None highest_dim = 0 line = ifile.readline() while line: # Remove newline if line[-1] == "\n": line = line[:-1] # Read dimension if line.find("$Elements") == 0: line = ifile.readline() num_elements = int(line) if num_elements == 0: _error("No elements found in gmsh file.") line = ifile.readline() # Now iterate through elements to find largest dimension. Gmsh # format might include elements of lower dimensions in the element list. # We also need to count number of elements of correct dimensions. # Also determine which vertices are not used. dim_count = {0: 0, 1: 0, 2: 0, 3: 0} vertices_used_for_dim = {0: [], 1: [], 2: [], 3: []} # Array used to store gmsh tags for 1D (type 1/line), 2D (type 2/triangular) elements and 3D (type 4/tet) elements tags_for_dim = {0: [], 1: [], 2: [], 3: []} while line.find("$EndElements") == -1: element = line.split() elem_type = int(element[1]) num_tags = int(element[2]) if elem_type in supported_gmsh_element_types: dim = gmsh_dim[elem_type] if highest_dim < dim: highest_dim = dim node_num_list = [int(node) for node in element[3 + num_tags:]] vertices_used_for_dim[dim].extend(node_num_list) if num_tags > 0: tags_for_dim[dim].append(tuple(int(tag) for tag in element[3:3+num_tags])) dim_count[dim] += 1 else: #TODO: output a warning here. "gmsh element type %d not supported" % elem_type pass line = ifile.readline() else: # Read next line line = ifile.readline() # Check that we got the cell type and set num_cells_counted if highest_dim == 0: _error("Unable to find cells of supported type.") num_cells_counted = dim_count[highest_dim] vertex_set = set(vertices_used_for_dim[highest_dim]) vertices_used_for_dim[highest_dim] = None vertex_dict = {} for n,v in enumerate(vertex_set): vertex_dict[v] = n # Step to beginning of file ifile.seek(0) # Set mesh type handler.set_mesh_type(cell_type_for_dim[highest_dim], highest_dim) # Initialise node list (gmsh does not export all vertexes in order) nodelist = {} # Current state state = 0 # Write data num_vertices_read = 0 num_cells_read = 0 # Only import the dolfin objects if facet markings exist process_facets = False if len(tags_for_dim[highest_dim-1]) > 0: # first construct the mesh try: from dolfin import MeshEditor, Mesh except ImportError: _error("DOLFIN must be installed to handle Gmsh boundary regions") mesh = Mesh() mesh_editor = MeshEditor () mesh_editor.open( mesh, highest_dim, highest_dim ) process_facets = True else: # TODO: Output a warning or an error here me = None while state != 10: # Read next line line = ifile.readline() if not line: break # Skip comments if line[0] == '#': continue # Remove newline if line[-1] == "\n": line = line[:-1] if state == 0: if line == "$MeshFormat": state = 1 elif state == 1: (version, file_type, data_size) = line.split() state = 2 elif state == 2: if line == "$EndMeshFormat": state = 3 elif state == 3: if line == "$Nodes": state = 4 elif state == 4: num_vertices = len(vertex_dict) handler.start_vertices(num_vertices) if process_facets: mesh_editor.init_vertices ( num_vertices ) state = 5 elif state == 5: (node_no, x, y, z) = line.split() node_no = int(node_no) x,y,z = [float(xx) for xx in (x,y,z)] if vertex_dict.has_key(node_no): node_no = vertex_dict[node_no] else: continue nodelist[int(node_no)] = num_vertices_read handler.add_vertex(num_vertices_read, [x, y, z]) if process_facets: if highest_dim == 1: coords = numpy.array([x]) elif highest_dim == 2: coords = numpy.array([x, y]) elif highest_dim == 3: coords = numpy.array([x, y, z]) mesh_editor.add_vertex(num_vertices_read, coords) num_vertices_read +=1 if num_vertices == num_vertices_read: handler.end_vertices() state = 6 elif state == 6: if line == "$EndNodes": state = 7 elif state == 7: if line == "$Elements": state = 8 elif state == 8: handler.start_cells(num_cells_counted) if process_facets: mesh_editor.init_cells( num_cells_counted ) state = 9 elif state == 9: element = line.split() elem_type = int(element[1]) num_tags = int(element[2]) if elem_type in supported_gmsh_element_types: dim = gmsh_dim[elem_type] else: dim = 0 if dim == highest_dim: node_num_list = [vertex_dict[int(node)] for node in element[3 + num_tags:]] for node in node_num_list: if not node in nodelist: _error("Vertex %d of %s %d not previously defined." % (node, cell_type_for_dim[dim], num_cells_read)) cell_nodes = [nodelist[n] for n in node_num_list] handler.add_cell(num_cells_read, cell_nodes) if process_facets: cell_nodes = numpy.array([nodelist[n] for n in node_num_list], dtype=numpy.uintp) mesh_editor.add_cell(num_cells_read, cell_nodes) num_cells_read +=1 if num_cells_counted == num_cells_read: handler.end_cells() if process_facets: mesh_editor.close() state = 10 elif state == 10: break # Write mesh function based on the Physical Regions defined by # gmsh, but only if they are not all zero. All zero physical # regions indicate that no physical regions were defined. if highest_dim not in [1,2,3]: _error("Gmsh tags not supported for dimension %i. Probably a bug" % dim) tags = tags_for_dim[highest_dim] physical_regions = tuple(tag[0] for tag in tags) if not all(tag == 0 for tag in physical_regions): handler.start_meshfunction("physical_region", dim, num_cells_counted) for i, physical_region in enumerate(physical_regions): handler.add_entity_meshfunction(i, physical_region) handler.end_meshfunction() # Now process the facet markers tags = tags_for_dim[highest_dim-1] if (len(tags) > 0) and (mesh is not None): physical_regions = tuple(tag[0] for tag in tags) if not all(tag == 0 for tag in physical_regions): mesh.init(highest_dim-1,0) # Get the facet-node connectivity information (reshape as a row of node indices per facet) if highest_dim==1: # for 1d meshes the mesh topology returns the vertex to vertex map, which isn't what we want # as facets are vertices facets_as_nodes = numpy.array([[i] for i in range(mesh.num_facets())]) else: facets_as_nodes = mesh.topology()(highest_dim-1,0)().reshape ( mesh.num_facets(), highest_dim ) # Build the reverse map nodes_as_facets = {} for facet in range(mesh.num_facets()): nodes_as_facets[tuple(facets_as_nodes[facet,:])] = facet data = [int(0*k) for k in range(mesh.num_facets()) ] for i, physical_region in enumerate(physical_regions): nodes = [n-1 for n in vertices_used_for_dim[highest_dim-1][highest_dim*i:(highest_dim*i+highest_dim)]] nodes.sort() if physical_region != 0: try: index = nodes_as_facets[tuple(nodes)] data[index] = physical_region except IndexError: raise Exception ( "The facet (%d) was not found to mark: %s" % (i, nodes) ) # Create and initialise the mesh function handler.start_meshfunction("facet_region", highest_dim-1, mesh.num_facets() ) for index, physical_region in enumerate ( data ): handler.add_entity_meshfunction(index, physical_region) handler.end_meshfunction() # Check that we got all data if state == 10: print "Conversion done" else: _error("Missing data, unable to convert \n\ Did you use version 2.0 of the gmsh file format?") # Close files ifile.close() def triangle2xml(ifilename, ofilename): """Convert between triangle format (http://www.cs.cmu.edu/~quake/triangle.html) and .xml. The given ifilename should be the prefix for the corresponding .node, and .ele files. """ def get_next_line (fp): """Helper function for skipping comments and blank lines""" line = fp.readline() if line == '': _error("Hit end of file prematurely.") line = line.strip() if not (line.startswith('#') or line == ''): return line return get_next_line(fp) print "Converting from Triangle format {.node, .ele} to DOLFIN XML format" # Open files for suffix in [".node", ".ele"]: if suffix in ifilename and ifilename[-len(suffix):] == suffix: ifilename = ifilename.replace(suffix, "") node_file = open(ifilename+".node", "r") ele_file = open(ifilename+".ele", "r") ofile = open(ofilename, "w") try: edge_file = open(ifilename+".edge", "r") print "Found .edge file" except IOError: edge_file = None # Read all the nodes nodes = {} num_nodes, dim, attr, bound = map(int, get_next_line(node_file).split()) while len(nodes) < num_nodes: node, x, y = get_next_line(node_file).split()[:3] nodes[int(node)] = (float(x), float(y)) # Read all the triangles tris = {} tri_attrs = {} num_tris, n_per_tri, attrs = map(int, get_next_line(ele_file).split()) while len(tris) < num_tris: line = get_next_line(ele_file).split() tri, n1, n2, n3 = map(int, line[:4]) # vertices are ordered according to current UFC ordering scheme - # - may change in future! tris[tri] = tuple(sorted((n1, n2, n3))) tri_attrs[tri] = tuple(map(float, line[4:4+attrs])) # Read all the boundary markers from edges edge_markers_global = {} edge_markers_local = [] got_negative_edge_markers = False if edge_file is not None: num_edges, num_edge_markers = map(int, get_next_line(edge_file).split()) if num_edge_markers == 1: while len(edge_markers_global) < num_edges: edge, v1, v2, marker = map(int, get_next_line(edge_file).split()) if marker < 0: got_negative_edge_markers = True edge_markers_global[tuple(sorted((v1, v2)))] = marker if got_negative_edge_markers: print "Some edge markers are negative! dolfin will increase "\ "them by probably 2**32 when loading xml. "\ "Consider using non-negative edge markers only." for tri, vertices in tris.iteritems(): v0, v1, v2 = sorted((vertices[0:3])) try: edge_markers_local.append((tri, 0, \ edge_markers_global[(v1, v2)])) edge_markers_local.append((tri, 1, \ edge_markers_global[(v0, v2)])) edge_markers_local.append((tri, 2, \ edge_markers_global[(v0, v1)])) except IndexError: raise Exception("meshconvert.py: The facet was not found.") elif num_edge_markers == 0: print "...but no markers in it. Ignoring it" else: print "...but %d markers specified in it. It won't be processed."\ %num_edge_markers # Write everything out xml_writer.write_header_mesh(ofile, "triangle", 2) xml_writer.write_header_vertices(ofile, num_nodes) node_off = 0 if nodes.has_key(0) else -1 for node, node_t in nodes.iteritems(): xml_writer.write_vertex(ofile, node+node_off, node_t[0], node_t[1], 0.0) xml_writer.write_footer_vertices(ofile) xml_writer.write_header_cells(ofile, num_tris) tri_off = 0 if tris.has_key(0) else -1 for tri, tri_t in tris.iteritems(): xml_writer.write_cell_triangle(ofile, tri+tri_off, tri_t[0] + node_off, tri_t[1] + node_off, tri_t[2] + node_off) xml_writer.write_footer_cells(ofile) if len(edge_markers_local) > 0: xml_writer.write_header_domains(ofile) xml_writer.write_header_meshvaluecollection(ofile, \ "edge markers", 1, len(edge_markers_local), "uint") for tri, local_edge, marker in edge_markers_local: xml_writer.write_entity_meshvaluecollection(ofile, \ 1, tri+tri_off, marker, local_edge) xml_writer.write_footer_meshvaluecollection(ofile) xml_writer.write_footer_domains(ofile) xml_writer.write_footer_mesh(ofile) for i in range(attrs): afilename = ofilename.replace(".xml", ".attr"+str(i)+".xml") afile = open(afilename, "w") xml_writer.write_header_meshfunction2(afile) xml_writer.write_header_meshvaluecollection(afile, \ "triangle attribs "+str(i), 2, num_tris, "double") for tri, tri_a in tri_attrs.iteritems(): xml_writer.write_entity_meshvaluecollection(afile, \ 2, tri+tri_off, tri_a[i], 0) xml_writer.write_footer_meshvaluecollection(afile) xml_writer.write_footer_meshfunction(afile) print "triangle attributes from .ele file written to "+afilename afile.close() # Close files node_file.close() ele_file.close() if edge_file is not None: edge_file.close() ofile.close() def xml_old2xml(ifilename, ofilename): "Convert from old DOLFIN XML format to new." print "Converting from old (pre DOLFIN 0.6.2) to new DOLFIN XML format..." # Open files ifile = open(ifilename, "r") ofile = open(ofilename, "w") # Scan file for cell type (assuming there is just one) cell_type = None dim = 0 while 1: # Read next line line = ifile.readline() if not line: break # Read dimension if "\n" if "" in line: line = " \n" % (cell_type, dim) if dim == 2 and " z=\"0.0\"" in line: line = line.replace(" z=\"0.0\"", "") if " name=" in line: line = line.replace(" name=", " index=") if " name =" in line: line = line.replace(" name =", " index=") if "n0" in line: line = line.replace("n0", "v0") if "n1" in line: line = line.replace("n1", "v1") if "n2" in line: line = line.replace("n2", "v2") if "n3" in line: line = line.replace("n3", "v3") # Write line ofile.write(line) # Close files ifile.close(); ofile.close(); print "Conversion done" def metis_graph2graph_xml(ifilename, ofilename): "Convert from Metis graph format to DOLFIN Graph XML." print "Converting from Metis graph format to DOLFIN Graph XML." # Open files ifile = open(ifilename, "r") ofile = open(ofilename, "w") # Read number of vertices and edges line = ifile.readline() if not line: _error("Empty file") (num_vertices, num_edges) = line.split() xml_writer.write_header_graph(ofile, "directed") xml_writer.write_header_vertices(ofile, int(num_vertices)) for i in range(int(num_vertices)): line = ifile.readline() edges = line.split() xml_writer.write_graph_vertex(ofile, i, len(edges)) xml_writer.write_footer_vertices(ofile) xml_writer.write_header_edges(ofile, 2*int(num_edges)) # Step to beginning of file and skip header info ifile.seek(0) ifile.readline() for i in range(int(num_vertices)): print "vertex %g", i line = ifile.readline() edges = line.split() for e in edges: xml_writer.write_graph_edge(ofile, i, int(e)) xml_writer.write_footer_edges(ofile) xml_writer.write_footer_graph(ofile) # Close files ifile.close(); ofile.close(); def scotch_graph2graph_xml(ifilename, ofilename): "Convert from Scotch graph format to DOLFIN Graph XML." print "Converting from Scotch graph format to DOLFIN Graph XML." # Open files ifile = open(ifilename, "r") ofile = open(ofilename, "w") # Skip graph file version number ifile.readline() # Read number of vertices and edges line = ifile.readline() if not line: _error("Empty file") (num_vertices, num_edges) = line.split() # Read start index and numeric flag # Start index is 0 or 1 (C/Fortran) # Numeric flag is 3 bits where bit 1 enables vertex labels # bit 2 enables edge weights and bit 3 enables vertex weights line = ifile.readline() (start_index, numeric_flag) = line.split() # Handling not implented if not numeric_flag == "000": _error("Handling of scotch vertex labels, edge- and vertex weights not implemented") xml_writer.write_header_graph(ofile, "undirected") xml_writer.write_header_vertices(ofile, int(num_vertices)) # Read vertices and edges, first number gives number of edges from this vertex (not used) for i in range(int(num_vertices)): line = ifile.readline() edges = line.split() xml_writer.write_graph_vertex(ofile, i, len(edges)-1) xml_writer.write_footer_vertices(ofile) xml_writer.write_header_edges(ofile, int(num_edges)) # Step to beginning of file and skip header info ifile.seek(0) ifile.readline() ifile.readline() ifile.readline() for i in range(int(num_vertices)): line = ifile.readline() edges = line.split() for j in range(1, len(edges)): xml_writer.write_graph_edge(ofile, i, int(edges[j])) xml_writer.write_footer_edges(ofile) xml_writer.write_footer_graph(ofile) # Close files ifile.close(); ofile.close(); def diffpack2xml(ifilename, ofilename): "Convert from Diffpack tetrahedral grid format to DOLFIN XML." print diffpack2xml.__doc__ # Format strings for MeshFunction XML files meshfunction_header = """\ \n \n""" meshfunction_entity = " \n" meshfunction_footer = " \n" # Open files ifile = open(ifilename, "r") ofile = open(ofilename, "w") # Read and analyze header while 1: line = ifile.readline() if not line: _error("Empty file") if line[0] == "#": break if re.search(r"Number of elements", line): num_cells = int(re.match(r".*\s(\d+).*", line).group(1)) if re.search(r"Number of nodes", line): num_vertices = int(re.match(r".*\s(\d+).*", line).group(1)) xml_writer.write_header_mesh(ofile, "tetrahedron", 3) xml_writer.write_header_vertices(ofile, num_vertices) # Read & write vertices and collect markers for vertices vertex_markers = [] unique_vertex_markers = set() for i in range(num_vertices): line = ifile.readline() m = re.match(r"^.*\(\s*(.*)\s*\).*\](.*)$", line) x = map(float, re.split("[\s,]+", m.group(1))) xml_writer.write_vertex(ofile, i, *x) markers = map(int, m.group(2).split()) vertex_markers.append(markers) unique_vertex_markers.update(markers) xml_writer.write_footer_vertices(ofile) xml_writer.write_header_cells(ofile, num_cells) # Output unique vertex markers as individual VertexFunctions unique_vertex_markers.difference_update([0]) for unique_marker in unique_vertex_markers: ofile_marker = open(ofilename.replace(".xml", "") + \ "_marker_" + str(unique_marker)+".xml", "w") xml_writer.write_header_meshfunction(ofile_marker, 0, num_vertices) for ind, markers in enumerate(vertex_markers): if unique_marker in markers: xml_writer.write_entity_meshfunction(ofile_marker, ind, unique_marker) else: xml_writer.write_entity_meshfunction(ofile_marker, ind, 0) xml_writer.write_footer_meshfunction(ofile_marker) # Ignore comment lines while 1: line = ifile.readline() if not line: _error("Empty file") if line[0] == "#": break # Read & write cells and collect cell and face markers cell_markers = [] facet_markers = [] facet_to_vert = [[1,2,3], [0,2,3], [0,1,3], [0,1,2]] vert_to_facet = facet_to_vert # The same! cell_ind = 0 while cell_ind < num_cells: line = ifile.readline() v = line.split() if not v: continue if v[1] != "ElmT4n3D": _error("Only tetrahedral elements (ElmT4n3D) are implemented.") # Store Cell markers cell_markers.append(int(v[2])) # Sort vertex indices cell_indices = sorted(map(lambda x: int(x)-1, v[3:])) xml_writer.write_cell_tetrahedron(ofile, cell_ind, *cell_indices) # Check Facet info process_facet = set(range(4)) for local_vert_ind, global_vert_ind in enumerate(cell_indices): # If no marker is included for vertex skip corresponding facet if not vertex_markers[global_vert_ind]: process_facet.difference_update(facet_to_vert[local_vert_ind]) # Process facets for local_facet in process_facet: # Start with markers from first vertex global_first_vertex = cell_indices[facet_to_vert[local_facet][0]] marker_intersection = set(vertex_markers[global_first_vertex]) # Process the other vertices for local_vert in facet_to_vert[local_facet][1:]: marker_intersection.intersection_update(\ vertex_markers[cell_indices[local_vert]]) if not marker_intersection: break # If not break we have a marker on local_facet else: assert(len(marker_intersection)==1) facet_markers.append((cell_ind, local_facet, \ marker_intersection.pop())) # Bump cell_ind cell_ind += 1 xml_writer.write_footer_cells(ofile) xml_writer.write_header_domains(ofile) # Write facet markers if any if facet_markers: xml_writer.write_header_meshvaluecollection(ofile, "m", 2, \ len(facet_markers), "uint") for cell, local_facet, marker in facet_markers: xml_writer.write_entity_meshvaluecollection(ofile, 2, cell, \ marker, local_facet) xml_writer.write_footer_meshvaluecollection(ofile) xml_writer.write_header_meshvaluecollection(ofile, "m", 3, \ len(cell_markers), "uint") for cell, marker in enumerate(cell_markers): xml_writer.write_entity_meshvaluecollection(ofile, 2, cell, \ marker) xml_writer.write_footer_meshvaluecollection(ofile) xml_writer.write_footer_domains(ofile) xml_writer.write_footer_mesh(ofile) # Close files ifile.close() ofile.close() class ParseError(Exception): """ Error encountered in source file. """ class DataHandler(object): """ Baseclass for handlers of mesh data. The actual handling of mesh data encountered in the source file is delegated to a polymorfic object. Typically, the delegate will write the data to XML. @ivar _state: the state which the handler is in, one of State_*. @ivar _cell_type: cell type in mesh. One of CellType_*. @ivar _dim: mesh dimensions. """ State_Invalid, State_Init, State_Vertices, State_Cells, \ State_MeshFunction, State_MeshValueCollection = range(6) CellType_Tetrahedron, CellType_Triangle, CellType_Interval = range(3) def __init__(self): self._state = self.State_Invalid def set_mesh_type(self, cell_type, dim): assert self._state == self.State_Invalid self._state = self.State_Init if cell_type == "tetrahedron": self._cell_type = self.CellType_Tetrahedron elif cell_type == "triangle": self._cell_type = self.CellType_Triangle elif cell_type == "interval": self._cell_type = self.CellType_Interval self._dim = dim def start_vertices(self, num_vertices): assert self._state == self.State_Init self._state = self.State_Vertices def add_vertex(self, vertex, coords): assert self._state == self.State_Vertices def end_vertices(self): assert self._state == self.State_Vertices self._state = self.State_Init def start_cells(self, num_cells): assert self._state == self.State_Init self._state = self.State_Cells def add_cell(self, cell, nodes): assert self._state == self.State_Cells def end_cells(self): assert self._state == self.State_Cells self._state = self.State_Init def start_domains(self): assert self._state == self.State_Init def end_domains(self): self._state = self.State_Init def start_meshfunction(self, name, dim, size): assert self._state == self.State_Init self._state = self.State_MeshFunction def add_entity_meshfunction(self, index, value): assert self._state == self.State_MeshFunction def end_meshfunction(self): assert self._state == self.State_MeshFunction self._state = self.State_Init def start_mesh_value_collection(self, name, dim, size, etype): assert self._state == self.State_Init self._state = self.State_MeshValueCollection def add_entity_mesh_value_collection(self, dim, index, value, local_entity=0): assert self._state == self.State_MeshValueCollection def end_mesh_value_collection(self): assert self._state == self.State_MeshValueCollection self._state = self.State_Init def warn(self, msg): """ Issue warning during parse. """ warnings.warn(msg) def error(self, msg): """ Raise error during parse. This method is expected to raise ParseError. """ raise ParseError(msg) def close(self): self._state = self.State_Invalid class XmlHandler(DataHandler): """ Data handler class which writes to Dolfin XML. """ def __init__(self, ofilename): DataHandler.__init__(self) self._ofilename = ofilename self.__ofile = file(ofilename, "wb") self.__ofile_meshfunc = None def ofile(self): return self.__ofile def set_mesh_type(self, cell_type, dim): DataHandler.set_mesh_type(self, cell_type, dim) xml_writer.write_header_mesh(self.__ofile, cell_type, dim) def start_vertices(self, num_vertices): DataHandler.start_vertices(self, num_vertices) xml_writer.write_header_vertices(self.__ofile, num_vertices) def add_vertex(self, vertex, coords): DataHandler.add_vertex(self, vertex, coords) xml_writer.write_vertex(self.__ofile, vertex, *coords) def end_vertices(self): DataHandler.end_vertices(self) xml_writer.write_footer_vertices(self.__ofile) def start_cells(self, num_cells): DataHandler.start_cells(self, num_cells) xml_writer.write_header_cells(self.__ofile, num_cells) def add_cell(self, cell, nodes): DataHandler.add_cell(self, cell, nodes) if self._cell_type == self.CellType_Tetrahedron: func = xml_writer.write_cell_tetrahedron elif self._cell_type == self.CellType_Triangle: func = xml_writer.write_cell_triangle elif self._cell_type == self.CellType_Interval: func = xml_writer.write_cell_interval func(self.__ofile, cell, *nodes) def end_cells(self): DataHandler.end_cells(self) xml_writer.write_footer_cells(self.__ofile) def start_meshfunction(self, name, dim, size): DataHandler.start_meshfunction(self, name, dim, size) fname = os.path.splitext(self.__ofile.name)[0] self.__ofile_meshfunc = file("%s_%s.xml" % (fname, name), "wb") xml_writer.write_header_meshfunction(self.__ofile_meshfunc, dim, size) def add_entity_meshfunction(self, index, value): DataHandler.add_entity_meshfunction(self, index, value) xml_writer.write_entity_meshfunction(self.__ofile_meshfunc, index, value) def end_meshfunction(self): DataHandler.end_meshfunction(self) xml_writer.write_footer_meshfunction(self.__ofile_meshfunc) self.__ofile_meshfunc.close() self.__ofile_meshfunc = None def start_domains(self): #DataHandler.start_domains(self) xml_writer.write_header_domains(self.__ofile) def end_domains(self): #DataHandler.end_domains(self) xml_writer.write_footer_domains(self.__ofile) def start_mesh_value_collection(self, name, dim, size, etype): DataHandler.start_mesh_value_collection(self, name, dim, size, etype) xml_writer.write_header_meshvaluecollection(self.__ofile, name, dim, size, etype) def add_entity_mesh_value_collection(self, dim, index, value, local_entity=0): DataHandler.add_entity_mesh_value_collection(self, dim, index, value) xml_writer.write_entity_meshvaluecollection(self.__ofile, dim, index, value, local_entity=local_entity) def end_mesh_value_collection(self): DataHandler.end_mesh_value_collection(self) xml_writer.write_footer_meshvaluecollection(self.__ofile) def close(self): DataHandler.close(self) if self.__ofile.closed: return xml_writer.write_footer_mesh(self.__ofile) self.__ofile.close() if self.__ofile_meshfunc is not None: self.__ofile_meshfunc.close() def netcdf2xml(ifilename,ofilename): "Convert from NetCDF format to DOLFIN XML." print "Converting from NetCDF format (.ncdf) to DOLFIN XML format" # Open files ifile = open(ifilename, "r") ofile = open(ofilename, "w") cell_type = None dim = 0 # Scan file for dimension, number of nodes, number of elements while 1: line = ifile.readline() if not line: _error("Empty file") if re.search(r"num_dim.*=", line): dim = int(re.match(".*\s=\s(\d+)\s;",line).group(1)) if re.search(r"num_nodes.*=", line): num_vertices = int(re.match(".*\s=\s(\d+)\s;",line).group(1)) if re.search(r"num_elem.*=", line): num_cells = int(re.match(".*\s=\s(\d+)\s;",line).group(1)) if re.search(r"connect1 =",line): break num_dims=dim # Set cell type if dim == 2: cell_type ="triangle" if dim == 3: cell_type ="tetrahedron" # Check that we got the cell type if cell_type == None: _error("Unable to find cell type.") # Write header xml_writer.write_header_mesh(ofile, cell_type, dim) xml_writer.write_header_cells(ofile, num_cells) num_cells_read = 0 # Read and write cells while 1: # Read next line line = ifile.readline() if not line: break connect=re.split("[,;]",line) if num_dims == 2: n0 = int(connect[0])-1 n1 = int(connect[1])-1 n2 = int(connect[2])-1 xml_writer.write_cell_triangle(ofile, num_cells_read, n0, n1, n2) elif num_dims == 3: n0 = int(connect[0])-1 n1 = int(connect[1])-1 n2 = int(connect[2])-1 n3 = int(connect[3])-1 xml_writer.write_cell_tetrahedron(ofile, num_cells_read, n0, n1, n2, n3) num_cells_read +=1 if num_cells == num_cells_read: xml_writer.write_footer_cells(ofile) xml_writer.write_header_vertices(ofile, num_vertices) break num_vertices_read = 0 coords = [[],[],[]] coord = -1 while 1: line = ifile.readline() if not line: _error("Missing data") if re.search(r"coord =",line): break # Read vertices while 1: line = ifile.readline() if not line: break if re.search(r"\A\s\s\S+,",line): coord+=1 print "Found x_"+str(coord)+" coordinates" coords[coord] += line.split() if re.search(r";",line): break # Write vertices for i in range(num_vertices): if num_dims == 2: x = float(re.split(",",coords[0].pop(0))[0]) y = float(re.split(",",coords[1].pop(0))[0]) z = 0 if num_dims == 3: x = float(re.split(",",coords[0].pop(0))[0]) y = float(re.split(",",coords[1].pop(0))[0]) z = float(re.split(",",coords[2].pop(0))[0]) xml_writer.write_vertex(ofile, i, x, y, z) # Write footer xml_writer.write_footer_vertices(ofile) xml_writer.write_footer_mesh(ofile) # Close files ifile.close() ofile.close() def exodus2xml(ifilename,ofilename): "Convert from Exodus II format to DOLFIN XML." print "Converting from Exodus II format to NetCDF format" name = ifilename.split(".")[0] netcdffilename = name +".ncdf" status, output = get_status_output('ncdump '+ifilename + ' > '+netcdffilename) if status != 0: raise IOError, "Something wrong while executing ncdump. Is ncdump "\ "installed on the system?" netcdf2xml(netcdffilename, ofilename) def _error(message): "Write an error message" for line in message.split("\n"): print "*** %s" % line sys.exit(2) def convert2xml(ifilename, ofilename, iformat=None): """ Convert a file to the DOLFIN XML format. """ convert(ifilename, XmlHandler(ofilename), iformat=iformat) def convert(ifilename, handler, iformat=None): """ Convert a file using a provided data handler. Note that handler.close is called when this function finishes. @param ifilename: Name of input file. @param handler: The data handler (instance of L{DataHandler}). @param iformat: Format of input file. """ if iformat is None: iformat = format_from_suffix(os.path.splitext(ifilename)[1][1:]) # XXX: Backwards-compat if hasattr(handler, "_ofilename"): ofilename = handler._ofilename # Choose conversion if iformat == "mesh": # Convert from mesh to xml format mesh2xml(ifilename, ofilename) elif iformat == "gmsh": # Convert from gmsh to xml format gmsh2xml(ifilename, handler) elif iformat == "Triangle": # Convert from Triangle to xml format triangle2xml(ifilename, ofilename) elif iformat == "xml-old": # Convert from old to new xml format xml_old2xml(ifilename, ofilename) elif iformat == "metis": # Convert from metis graph to dolfin graph xml format metis_graph2graph_xml(ifilename, ofilename) elif iformat == "scotch": # Convert from scotch graph to dolfin graph xml format scotch_graph2graph_xml(ifilename, ofilename) elif iformat == "diffpack": # Convert from Diffpack tetrahedral grid format to xml format diffpack2xml(ifilename, ofilename) elif iformat == "abaqus": # Convert from abaqus to xml format abaqus.convert(ifilename, handler) elif iformat == "NetCDF": # Convert from NetCDF generated from ExodusII format to xml format netcdf2xml(ifilename, ofilename) elif iformat =="ExodusII": # Convert from ExodusII format to xml format via NetCDF exodus2xml(ifilename, ofilename) elif iformat == "StarCD": # Convert from Star-CD tetrahedral grid format to xml format starcd2xml(ifilename, ofilename) else: _error("Sorry, cannot convert between %s and DOLFIN xml file formats." % iformat) # XXX: handler.close messes things for other input formats than abaqus or gmsh if iformat in ("abaqus", "gmsh"): handler.close() def starcd2xml(ifilename, ofilename): "Convert from Star-CD tetrahedral grid format to DOLFIN XML." print starcd2xml.__doc__ if not os.path.isfile(ifilename[:-3] + "vrt") or not os.path.isfile(ifilename[:-3] + "cel"): print "StarCD format requires one .vrt file and one .cel file" sys.exit(2) # open output file ofile = open(ofilename, "w") # Open file, the vertices are in a .vrt file ifile = open(ifilename[:-3] + "vrt", "r") write_header_mesh(ofile, "tetrahedron", 3) # Read & write vertices # first, read all lines (need to sweep to times through the file) lines = ifile.readlines() # second, find the number of vertices num_vertices = -1 counter = 0 # nodenr_map is needed because starcd support node numbering like 1,2,4 (ie 3 is missing) nodenr_map = {} for line in lines: nodenr = int(line[0:15]) nodenr_map[nodenr] = counter counter += 1 num_vertices = counter # third, run over all vertices xml_writer.write_header_vertices(ofile, num_vertices) for line in lines: nodenr = int(line[0:15]) vertex0 = float(line[15:31]) vertex1 = float(line[31:47]) vertex2 = float(line[47:63]) xml_writer.write_vertex(ofile, nodenr_map[nodenr], float(vertex0), float(vertex1), float(vertex2)) xml_writer.write_footer_vertices(ofile) # Open file, the cells are in a .cel file ifile = open(ifilename[:-3] + "cel", "r") # Read & write cells # first, read all lines (need to sweep to times through the file) lines = ifile.readlines() # second, find the number of cells num_cells = -1 counter = 0 for line in lines: l = [int(a) for a in line.split()] cellnr, node0, node1, node2, node3, node4, node5, node6, node7, tmp1, tmp2 = l if node4 > 0: if node2 == node3 and node4 == node5 and node5 == node6 and node6 == node7: # these nodes should be equal counter += 1 else: print "The file does contain cells that are not tetraheders. The cell number is ", cellnr, " the line read was ", line else: # triangles on the surface # print "The file does contain cells that are not tetraheders node4==0. The cell number is ", cellnr, " the line read was ", line #sys.exit(2) pass num_cells = counter # third, run over all cells xml_writer.write_header_cells(ofile, num_cells) counter = 0 for line in lines: l = [int(a) for a in line.split()] cellnr, node0, node1, node2, node3, node4, node5, node6, node7, tmp1, tmp2 = l if (node4 > 0): if node2 == node3 and node4 == node5 and node5 == node6 and node6 == node7: # these nodes should be equal xml_writer.write_cell_tetrahedron(ofile, counter, nodenr_map[node0], nodenr_map[node1], nodenr_map[node2], nodenr_map[node4]) counter += 1 xml_writer.write_footer_cells(ofile) xml_writer.write_footer_mesh(ofile) # Close files ifile.close() ofile.close() dolfin-1.3.0/site-packages/dolfin_utils/meshconvert/abaqus.py0000644000175000017500000003676412263014601024257 0ustar johannrjohannr"""Module for converting the Abaqus mesh format.""" # Copyright (C) 2012 Arve Knudsen and Garth N/ Wells # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Simon Funke (surface export) import re import csv import xml_writer import numpy as np class State: Init, Unknown, Invalid, ReadHeading, ReadNodes, ReadCells, \ ReadNodeSet, ReadCellSet, ReadSurfaceSet = range(9) def convert(ifilename, handler): """ Convert from Abaqus. The Abaqus format first defines a node block, then there should be a number of elements containing these nodes. """ # Dictionary of nodes (maps node id to coordinates) nodes = {} # Dictionary of elements (maps cell id to list of cell nodes) elems = {} # Lists of nodes for given name (key) node_sets = {} # Lists of cells for given name (key) cell_sets = {} # Lists of surfaces for given name (key) in the format: # {'SS1': [set(['SS1_S1', 'S1']), set(['SS1_S4', 'S4'])]}, # where SS1 is the name of the surface, SS1_S1 is the name of the # cell list whose first face is to be selected, ... surface_sets = {} # Open file Abaqus file csv_file = csv.reader(open(ifilename, 'rb'), delimiter=',', skipinitialspace=True) node_set_name = None generate = None # Set intial state state state = State.Init # Read data from input file for l in csv_file: # Sanity check if (len(l) == 0): print "Ooops, zero length." if l[0].startswith('**'): # Pass over comments continue elif l[0].startswith('*'): # Have a keyword state = State.Unknown if l[0].lower() == "*heading": state = State.ReadHeading elif l[0].lower() == "*part": part_name = _read_part_name(l) elif l[0].lower() == "*end part": state = State.Invalid elif l[0].lower() == "*node": node_set_name = _create_node_list_entry(node_sets, l) state = State.ReadNodes elif l[0].lower() == "*element": cell_type, cell_set_name = _read_element_keywords(cell_sets, l) state = State.ReadCells elif l[0].lower() == "*nset": node_set_name, generate = _read_nset_keywords(node_sets, l) state = State.ReadNodeSet elif l[0].lower() == "*elset": cell_set_name, generate = _read_elset_keywords(cell_sets, l) if generate: print "WARNING: generation of *elsets not tested." state = State.ReadCellSet elif l[0].lower() == "*surface": surface_set_name, generate = _read_surface_keywords(surface_sets, l) state = State.ReadSurfaceSet else: print "WARNING: unrecognised Abaqus input keyword:", l[0] state = State.Unknown else: if state == State.ReadHeading: model_name = _read_heading(l) elif state == State.ReadNodes: node_id = int(l[0]) - 1 coords = [float(c) for c in l[1:]] nodes[node_id] = coords if node_set_name is not None: node_sets[node_set_name].add(node_id) elif state == State.ReadCells: cell_id = int(l[0]) - 1 cell_connectivity = [int(v) - 1 for v in l[1:]] elems[cell_id] = cell_connectivity if cell_set_name is not None: cell_sets[cell_set_name].add(cell_id) elif state == State.ReadNodeSet: try: if generate: n0, n1, increment = l node_range = range(int(n0) - 1, int(n1) - 1, int(increment)) node_range.append(int(n1) - 1) node_sets[node_set_name].update(node_range) else: # Strip empty term at end of list, if present if l[-1] == '': l.pop(-1) node_range = [int(n) - 1 for n in l] node_sets[node_set_name].update(node_range) except: print "WARNING: Non-integer node sets not yet supported." elif state == State.ReadCellSet: try: if generate: n0, n1, increment = l cell_range = range(int(n0) - 1, int(n1) - 1, int(increment)) cell_range.append(int(n1) - 1) cell_sets[cell_set_name].update(cell_range) else: # Strip empty term at end of list, if present if l[-1] == '': l.pop(-1) cell_range = [int(n) - 1 for n in l] cell_sets[cell_set_name].update(cell_range) except: print "WARNING: Non-integer element sets not yet supported." elif state == State.ReadSurfaceSet: # Strip empty term at end of list, if present if l[-1] == '': l.pop(-1) surface_sets[surface_set_name].update([tuple(l)]) elif state == State.Invalid: # part raise StandardError("Inavlid Abaqus parser state..") # Close CSV object del csv_file # Write data to XML file # Note that vertices/cells must be consecutively numbered, which # isn't necessarily the case in Abaqus. Therefore we enumerate and # translate original IDs to sequence indexes if gaps are present. # FIXME handler.set_mesh_type("tetrahedron", 3) process_facets = len(surface_sets) > 0 if process_facets: try: from dolfin import MeshEditor, Mesh except ImportError: _error("DOLFIN must be installed to handle Abaqus boundary regions") mesh = Mesh() mesh_editor = MeshEditor() mesh_editor.open(mesh, 3, 3) node_ids_order = {} # Check for gaps in vertex numbering node_ids = nodes.keys() if len(node_ids) > 0: vertex_gap = (min(node_ids) != 0 or max(node_ids) != len(node_ids) - 1) for x, y in enumerate(node_ids): node_ids_order[y]= x # Maps Abaqus IDs to Dolfin IDs else: vertex_gap = True # Check for gaps in cell numbering elemids = elems.keys() if len(elemids) > 0: cell_gap = (min(elemids) != 0 or max(elemids) != len(elemids) - 1) else: cell_gap = True # Write vertices to XML file handler.start_vertices(len(nodes)) if process_facets: mesh_editor.init_vertices (len(nodes)) if not vertex_gap: for v_id, v_coords in nodes.items(): handler.add_vertex(v_id, v_coords) if process_facets: mesh_editor.add_vertex(v_id, np.array(v_coords, dtype=np.float_)) else: for idx, (v_id, v_coords) in enumerate(nodes.items()): handler.add_vertex(idx, v_coords) if process_facets: mesh_editor.add_vertex(idx, np.array(v_coords, dtype=np.float_)) handler.end_vertices() # Write cells to XML file handler.start_cells(len(elems)) if process_facets: mesh_editor.init_cells(len(elems)) if not vertex_gap and not cell_gap: for c_index, c_data in elems.items(): for v_id in c_data: if not (0 <= v_id < len(nodes)): handler.error("Element %s references non-existent node %s" % (c_index, v_id)) handler.add_cell(c_index, c_data) if process_facets: c_data_tmp = np.array(c_data) c_data_tmp.sort() mesh_editor.add_cell(c_index, np.array(c_data_tmp, dtype=np.uintp)) elif not vertex_gap and cell_gap: for idx, (c_index, c_data) in enumerate(elems.items()): for v_id in c_data: if not (0 <= v_id < len(nodes)): handler.error("Element %s references non-existent node %s" % (c_index, v_id)) handler.add_cell(idx, c_data) if process_facets: c_data_tmp = np.array(c_data) c_data_tmp.sort() mesh_editor.add_cell(idx, np.array(c_data_tmp, dtype=np.uintp)) else: for idx, (c_id, c_data) in enumerate(elems.items()): c_nodes = [] for v_id in c_data: try: c_nodes.append(node_ids_order[v_id]) except ValueError: handler.error("Element %s references non-existent node %s" % (c_id, v_id)) handler.add_cell(idx, c_nodes) if process_facets: c_nodes.sort() mesh_editor.add_cell(idx, np.array(c_nodes, dtype=np.uintp)) handler.end_cells() # Write MeshValueCollections to XML file handler.start_domains() # Build a abaqus node ID -> dolfin cell ID map (which is not unique but that is irrelevant here) # and its local entity. if len(node_sets.items()) > 0: node_cell_map = {} for c_dolfin_index, (c_index, c_data) in enumerate(elems.items()): c_data_tmp = np.array(c_data) c_data_tmp.sort() for local_entity, n_index in enumerate(c_data_tmp): node_cell_map[n_index] = (c_dolfin_index, local_entity) # Write vertex/node sets dim = 0 for value, (name, node_set) in enumerate(node_sets.items()): handler.start_mesh_value_collection(name, dim, len(node_set), "uint") for node in node_set: try: cell, local_entity = node_cell_map[node] handler.add_entity_mesh_value_collection(dim, cell, value, local_entity=local_entity) except KeyError: print "Warning: Boundary references non-existent node %s" % node handler.end_mesh_value_collection() # Write cell/element sets dim = 3 for name, s in cell_sets.items(): handler.start_mesh_value_collection(name, dim, len(s), "uint") for cell in s: handler.add_entity_mesh_value_collection(dim, cell, 0) handler.end_mesh_value_collection() # Write surface sets if process_facets: dim = 2 nodes_facet_map = _nodes_facet_map(mesh) data = [int(0)] * mesh.num_facets() S1 = [0, 1, 2] S2 = [0, 3, 1] S3 = [1, 3, 2] S4 = [2, 3, 0] node_selector = {'S1': S1, 'S2': S2, 'S3': S3, 'S4': S4, } for index, (name, s) in enumerate(surface_sets.items()): cell_face_list = [] for cell_set_name, face_index in s: cell_face_list += [(cell, face_index) for cell in cell_sets[cell_set_name]] for cell, face in cell_face_list: cell_nodes = elems[cell] # Extract the face nodes face_nodes = [cell_nodes[i] for i in node_selector[face]] dolfin_face_nodes = [node_ids_order[n] for n in face_nodes] dolfin_face_nodes.sort() # Convert the face_nodes to dolfin IDs face_id = nodes_facet_map[tuple(dolfin_face_nodes)] data[face_id] = index + 1 # Create and initialise the mesh function handler.start_meshfunction("facet_region", dim, mesh.num_facets() ) for index, physical_region in enumerate (data): handler.add_entity_meshfunction(index, physical_region) handler.end_meshfunction() handler.end_domains() def _nodes_facet_map(mesh): # Now process the facet markers dim = 2 mesh.init(dim, 0) facets_as_nodes = mesh.topology()(dim, 0)().reshape(mesh.num_facets(), 3) # Build the reverse map nodes_as_facets = {} for facet in range(mesh.num_facets()): nodes_as_facets[tuple(facets_as_nodes[facet,:])] = facet return nodes_as_facets def _read_heading(l): return l[0].strip() def _read_part_name(l): if (len(l) < 2): print "Ooops, length problem." part_names = l[1].split('=') if (len(part_names) < 2): print "Ooops, part names length problem." return part_names[1].strip() def _create_node_list_entry(node_sets, l): # Check for node set name node_set_name = None if len(l) == 2: set_data = l[1].split('=') assert len(set_data) == 2, "wrong list length" if set_data[0].lower() == "nset": node_set_name = set_data[1] if node_set_name not in node_sets: node_sets[node_set_name] = set() return node_set_name def _read_element_keywords(cell_sets, l): # Get element type and element set name element_type = None element_set_name = None for key in l[1:]: key_parts = key.split('=') key_name = key_parts[0].lower().strip() if key_name == "type": element_type = key_parts[1].lower().strip() elif key_name == "elset": element_set_name = key_parts[1].strip() # Test that element is supported check_element_support(element_type) # Add empty set to cell_sets dictionary if element_set_name: if element_set_name not in cell_sets: cell_sets[element_set_name] = set() return element_type, element_set_name def _read_nset_keywords(node_sets, l): node_set_name = None generate = None # Get set name and add to dict set_data = l[1].split('=') assert len(set_data) == 2, "wrong list length, set name missing" assert set_data[0].lower() == "nset" node_set_name = set_data[1] if node_set_name not in node_sets: node_sets[node_set_name] = set() # Check for generate flag if len(l) == 3: if l[2].lower() == "generate": generate = True return node_set_name, generate def _read_elset_keywords(sets, l): set_name = None generate = None # Get set name and add to dict set_data = l[1].split('=') assert len(set_data) == 2, "wrong list length, set name missing" assert set_data[0].lower() == "elset" set_name = set_data[1] if set_name not in sets: sets[set_name] = set() # Check for generate flag if len(l) == 3: if l[2].lower() == "generate": generate = True return set_name, generate def _read_surface_keywords(sets, l): surface_name = None generate = None # Get surface name and add to dict surface_data = l[1].split('=') assert len(surface_data) == 2, "wrong list length, surface name missing" assert surface_data[0].lower() == "name" surface_name = surface_data[1] if surface_name not in sets: sets[surface_name] = set() generate = False return surface_name, generate def check_element_support(element_type): supported_elements = ('c3d4',) if element_type.lower() not in supported_elements: raise StandardError("Element type not supported.") dolfin-1.3.0/site-packages/dolfin_utils/cppparser/0000755000175000017500000000000012263015065022060 5ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin_utils/cppparser/utils.pyc0000644000175000017500000001025112263015065023734 0ustar johannrjohannró ÌRc@sšddlZddlZyddlmZWn!ek rOddlmZnXddlmZejdƒZ d„Z dd„Z d„Z d „Z dS( iÿÿÿÿN(t OrderedDict(t CppHeaders \w+<([\w ]+)>cCsˆtƒ}tjt|ƒ}xP|rm|j|ƒx$|D]}|jd|dƒ}q8Wtjt|ƒ}qW|r„|j|ƒn|S(s Strip template types s<%s>t(tsettretfindallt_template_patterntupdatetreplacetadd(ttypest ret_typest temp_typest temp_type((sf/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/utils.pytstrip_templates&s    Rc Csg}ddg}g}d}xí|jƒD]ß\}}||d} |jdƒ|jd|| fƒ|jdƒ|jd|| fƒ||drÀ|jd|ƒ|jd|ƒn|j|ƒx:|D]2} |jd || | fƒ|jd | ƒqÔWq+W|||fS( sM Build import and include info from a list of submodules and headers Rs'// Include types from dependent modulestmodules0// #include types from %s submodule of module %ss5// %%import types from submodule %s of SWIG module %sthas_presdolfin/swig/%s/pre.is %%include "dolfin/swig/%s/pre.i"s%%import(module="%s") "%s"s #include "%s"(titemstappendtextend( t dependenciestsubmodule_infotmodule_prependt import_linestheaders_includestfile_dependenciestprevious_submodulet submoduletheadersRtheader((sf/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/utils.pytbuild_swig_import_info7s,        c s2tƒ}tƒ}t|ddƒ}tƒ}x<|jD]1}d|kr^|jddƒ}ng||\‰}|d dk rqæntƒ}x)|d D]} |jt| d ƒƒqW|j ˆgƒt |ƒ|ˆŸsN( RRRttypedefsRt functionsRRtclassesRtNonetdifference_updatetlist( tcodet used_typestdeclared_typest cppheaderttypedeftfunctiontargumentt class_reprtbasestbasetproptmethod((R.sf/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/utils.pytparse_and_extract_type_info[s@     cCsbtƒ}xR|D]J}||krg||dD]}|||kr1|^q1||s     $ Idolfin-1.3.0/site-packages/dolfin_utils/cppparser/__init__.py0000644000175000017500000000007212263014601024163 0ustar johannrjohannrfrom CppHeaderParser import CppHeader from utils import * dolfin-1.3.0/site-packages/dolfin_utils/cppparser/utils.py0000644000175000017500000001355012263014601023571 0ustar johannrjohannr# Utilities for parsing DOLFIN files and generaton of SWIG files # # Copyright (C) 2012 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2012-07-01 # Last changed: 2012-07-03 # System imports import os import re try: from collections import OrderedDict except ImportError: from dolfin_utils.ordereddict import OrderedDict # Local imports from CppHeaderParser import CppHeader # reg exp pattern _template_pattern = re.compile("\w+<([\w ]+)>") def strip_templates(types): """ Strip template types """ ret_types = set() temp_types = re.findall(_template_pattern, types) while temp_types: ret_types.update(temp_types) for temp_type in temp_types: types = types.replace("<%s>" % temp_type, "") temp_types = re.findall(_template_pattern, types) if types: ret_types.add(types) return ret_types def build_swig_import_info(dependencies, submodule_info, module_prepend=""): """ Build import and include info from a list of submodules and headers """ import_lines = [] headers_includes = ["", "// Include types from dependent modules"] file_dependencies = [] # Iterate over the file dependencies and generate import statements previous_submodule = "" for submodule, headers in dependencies.items(): module = submodule_info[submodule]["module"] headers_includes.append("") headers_includes.append("// #include types from %s submodule of "\ "module %s" % (submodule, module)) import_lines.append("") import_lines.append("// %%import types from submodule"\ " %s of SWIG module %s" % \ (submodule, module)) # Check for pre includes if submodule_info[submodule]["has_pre"]: file_dependencies.append("dolfin/swig/%s/pre.i" % submodule) import_lines.append(\ "%%include \"dolfin/swig/%s/pre.i\"" % submodule) # Add headers file_dependencies.extend(headers) for header in headers: # Add file dependency import_lines.append("%%import(module=\"%s\") \"%s\"" % \ (module_prepend+module, header)) headers_includes.append("#include \"%s\"" % header) return import_lines, headers_includes, file_dependencies def parse_and_extract_type_info(code): """ Parse header code and return declared types, used types, and any bases """ used_types=set() declared_types=OrderedDict() # Use CppHeader to extract cppheader = CppHeader(code, argType="string") # Collect used types from the code used_types = set() # Iterate over typedefs and collect types for typedef in cppheader.typedefs: if "dolfin::" in typedef: typedef = typedef.replace("dolfin::", "") # Store type information declared_types[typedef] = [] # Iterate over free functions and collect dependant types for function in cppheader.functions: # Check return type if function["rtnType"] != "void": used_types.update(strip_templates(function["rtnType"])) # Check argument types for argument in function["parameters"]: used_types.update(strip_templates(argument["type"])) # Iterate over classed and collect info for class_name, class_repr in cppheader.classes.items(): # Check if class is private if class_repr["parent"] is not None: continue # Get bases bases = set() for base in class_repr["inherits"]: bases.update(strip_templates(base["class"])) # Remove itself from any bases bases.difference_update([class_name]) # Register the class declared_types[class_name] = list(bases) # Iterate over public properties for prop in class_repr["properties"]["public"]: used_types.update(strip_templates(prop["type"])) # Iterate over methods and collect dependant types for method in class_repr["methods"]["public"]+\ class_repr["methods"]["protected"]: # Check return type if method["rtnType"] != "void": used_types.update(strip_templates(method["rtnType"])) # Check argument types for argument in method["parameters"]: used_types.update(strip_templates(argument["type"])) # Remove any self dependencies used_types = set(used_type for used_type in used_types if class_name not in used_type) return used_types, declared_types def sort_submodule_dependencies(dependencies, submodule_info): """ Given a dict of submodules and headers, we use original submodule info to sort the content """ submodule_dependences = OrderedDict() for submodule in submodule_info: if submodule in dependencies: # Register sorted dependency submodule_dependences[submodule] = [header for header in \ submodule_info[submodule]["headers"] \ if header in dependencies[submodule]] return submodule_dependences dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.py0000644000175000017500000026473612263014601025457 0ustar johannrjohannr#!/usr/bin/python # # Author: Jashua R. Cloutier (contact via https://bitbucket.org/senex) # Project: http://senexcanis.com/open-source/cppheaderparser/ # # Copyright (C) 2011, Jashua R. Cloutier # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # * Neither the name of Jashua R. Cloutier nor the names of its # contributors may be used to endorse or promote products derived from # this software without specific prior written permission. Stories, # blog entries etc making reference to this project may mention the # name Jashua R. Cloutier in terms of project originator/creator etc. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # # The CppHeaderParser.py script is written in Python 2.4 and released to # the open source community for continuous improvements under the BSD # 2.0 new license, which can be found at: # # http://www.opensource.org/licenses/bsd-license.php # """Parse C++ header files and generate a data structure representing the class """ import ply.lex as lex import os import sys import re import inspect def lineno(): """Returns the current line number in our program.""" return inspect.currentframe().f_back.f_lineno version = __version__ = "2.1" tokens = [ 'NUMBER', 'NAME', 'OPEN_PAREN', 'CLOSE_PAREN', 'OPEN_BRACE', 'CLOSE_BRACE', 'OPEN_SQUARE_BRACKET', 'CLOSE_SQUARE_BRACKET', 'COLON', 'SEMI_COLON', 'COMMA', 'TAB', 'BACKSLASH', 'PIPE', 'PERCENT', 'EXCLAMATION', 'CARET', 'COMMENT_SINGLELINE', 'COMMENT_MULTILINE', 'PRECOMP_MACRO', 'PRECOMP_MACRO_CONT', 'ASTERISK', 'AMPERSTAND', 'EQUALS', 'MINUS', 'PLUS', 'DIVIDE', 'CHAR_LITERAL', 'STRING_LITERAL', 'NEW_LINE', ] t_ignore = " \r.?@'" t_NUMBER = r'[0-9][0-9XxA-Fa-f]*' t_NAME = r'[<>A-Za-z_~][A-Za-z0-9_]*' t_OPEN_PAREN = r'\(' t_CLOSE_PAREN = r'\)' t_OPEN_BRACE = r'{' t_CLOSE_BRACE = r'}' t_OPEN_SQUARE_BRACKET = r'\[' t_CLOSE_SQUARE_BRACKET = r'\]' t_SEMI_COLON = r';' t_COLON = r':' t_COMMA = r',' t_TAB = r'\t' t_BACKSLASH = r'\\' t_PIPE = r'\|' t_PERCENT = r'%' t_CARET = r'\^' t_EXCLAMATION = r'!' t_PRECOMP_MACRO = r'\#.*' t_PRECOMP_MACRO_CONT = r'.*\\\n' def t_COMMENT_SINGLELINE(t): r'\/\/.*\n' global doxygenCommentCache if t.value.startswith("///") or t.value.startswith("//!"): if doxygenCommentCache: doxygenCommentCache += "\n" if t.value.endswith("\n"): doxygenCommentCache += t.value[:-1] else: doxygenCommentCache += t.value t_ASTERISK = r'\*' t_MINUS = r'\-' t_PLUS = r'\+' t_DIVIDE = r'/[^/]' t_AMPERSTAND = r'&' t_EQUALS = r'=' t_CHAR_LITERAL = "'.'" #found at http://wordaligned.org/articles/string-literals-and-regular-expressions #TODO: This does not work with the string "bla \" bla" t_STRING_LITERAL = r'"([^"\\]|\\.)*"' #Found at http://ostermiller.org/findcomment.html def t_COMMENT_MULTILINE(t): r'/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/' global doxygenCommentCache if t.value.startswith("/**") or t.value.startswith("/*!"): #not sure why, but get double new lines v = t.value.replace("\n\n", "\n") #strip prefixing whitespace v = re.sub("\n[\s]+\*", "\n*", v) doxygenCommentCache += v def t_NEWLINE(t): r'\n+' t.lexer.lineno += len(t.value) def t_error(v): print( "Lex error: ", v ) lex.lex() # Controls error_print print_errors = 1 # Controls warning_print print_warnings = 0 # Controls debug_print debug = 0 # Controls trace_print debug_trace = 0 def error_print(arg): if print_errors: print("[%4d] %s"%(inspect.currentframe().f_back.f_lineno, arg)) def warning_print(arg): if print_warnings: print("[%4d] %s"%(inspect.currentframe().f_back.f_lineno, arg)) def debug_print(arg): global debug if debug: print("[%4d] %s"%(inspect.currentframe().f_back.f_lineno, arg)) def trace_print(*arg): global debug_trace if debug_trace: sys.stdout.write("[%s] "%(inspect.currentframe().f_back.f_lineno)) for a in arg: sys.stdout.write("%s "%a) sys.stdout.write("\n") supportedAccessSpecifier = [ 'public', 'protected', 'private' ] #Symbols to ignore, usually special macros ignoreSymbols = [ 'Q_OBJECT', ] doxygenCommentCache = "" #Track what was added in what order and at what depth parseHistory = [] def is_namespace(nameStack): """Determines if a namespace is being specified""" if len(nameStack) == 0: return False if nameStack[0] == "namespace": return True return False def is_enum_namestack(nameStack): """Determines if a namestack is an enum namestack""" if len(nameStack) == 0: return False if nameStack[0] == "enum": return True if len(nameStack) > 1 and nameStack[0] == "typedef" and nameStack[1] == "enum": return True return False def is_fundamental(s): for a in s.split(): if a not in ["size_t", "struct", "union", "unsigned", "signed", "bool", "char", "short", "int", "float", "double", "long", "void", "*"]: return False return True def is_function_pointer_stack(stack): """Count how many non-nested paranthesis are in the stack. Useful for determining if a stack is a function pointer""" paren_depth = 0 paren_count = 0 star_after_first_paren = False last_e = None for e in stack: if e == "(": paren_depth += 1 elif e == ")" and paren_depth > 0: paren_depth -= 1 if paren_depth == 0: paren_count += 1 elif e == "*" and last_e == "(" and paren_count == 0 and paren_depth == 1: star_after_first_paren = True last_e = e if star_after_first_paren and paren_count == 2: return True else: return False def is_method_namestack(stack): r = False if '(' not in stack: r = False elif stack[0] == 'typedef': r = False # TODO deal with typedef function prototypes #elif '=' in stack and stack.index('=') < stack.index('(') and stack[stack.index('=')-1] != 'operator': r = False #disabled July6th - allow all operators elif 'operator' in stack: r = True # allow all operators elif '{' in stack and stack.index('{') < stack.index('('): r = False # struct that looks like a method/class elif '(' in stack and ')' in stack: if '{' in stack and '}' in stack: r = True elif stack[-1] == ';': if is_function_pointer_stack(stack): r = False else: r = True elif '{' in stack: r = True # ideally we catch both braces... TODO else: r = False #Test for case of property set to something with parens such as "static const int CONST_A = (1 << 7) - 1;" if r and "(" in stack and "=" in stack and 'operator' not in stack: if stack.index("=") < stack.index("("): r = False return r def is_property_namestack(nameStack): r = False if '(' not in nameStack and ')' not in nameStack: r = True elif "(" in nameStack and "=" in nameStack and nameStack.index("=") < nameStack.index("("): r = True #See if we are a function pointer if not r and is_function_pointer_stack(nameStack): r = True return r class CppParseError(Exception): pass class CppClass(dict): """Takes a name stack and turns it into a class Contains the following Keys: self['name'] - Name of the class self['doxygen'] - Doxygen comments associated with the class if they exist self['inherits'] - List of Classes that this one inherits where the values are of the form {"access": Anything in supportedAccessSpecifier "class": Name of the class self['methods'] - Dictionary where keys are from supportedAccessSpecifier and values are a lists of CppMethod's self['properties'] - Dictionary where keys are from supportedAccessSpecifier and values are lists of CppVariable's self['enums'] - Dictionary where keys are from supportedAccessSpecifier and values are lists of CppEnum's self['structs'] - Dictionary where keys are from supportedAccessSpecifier and values are lists of nested Struct's An example of how this could look is as follows: #self = { 'name': "" 'inherits':[] 'methods': { 'public':[], 'protected':[], 'private':[] }, 'properties': { 'public':[], 'protected':[], 'private':[] }, 'enums': { 'public':[], 'protected':[], 'private':[] } } """ def get_all_methods(self): r = [] for typ in supportedAccessSpecifier: r += self['methods'][typ] return r def get_all_method_names( self ): r = [] for typ in supportedAccessSpecifier: r += self.get_method_names(typ) # returns list return r def get_all_pure_virtual_methods( self ): r = {} for typ in supportedAccessSpecifier: r.update(self.get_pure_virtual_methods(typ)) # returns dict return r def get_method_names( self, type='public' ): return [ meth['name'] for meth in self['methods'][ type ] ] def get_pure_virtual_methods( self, type='public' ): r = {} for meth in self['methods'][ type ]: if meth['pure_virtual']: r[ meth['name'] ] = meth return r def __init__(self, nameStack): self['nested_classes'] = [] self['parent'] = None self['abstract'] = False self._public_enums = {} self._public_structs = {} self._public_typedefs = {} self._public_forward_declares = [] self['namespace'] = "" debug_print( "Class: %s"%nameStack ) if (len(nameStack) < 2): nameStack.insert(1, "")#anonymous struct global doxygenCommentCache if len(doxygenCommentCache): self["doxygen"] = doxygenCommentCache doxygenCommentCache = "" self["name"] = nameStack[1] #Handle template classes if len(nameStack) > 3 and nameStack[2].startswith("<"): open_template_count = 0 param_separator = 0 found_first = False i = 0 for elm in nameStack: if '<' in elm : open_template_count += 1 found_first = True elif '>' in elm: open_template_count -= 1 if found_first and open_template_count == 0: self["name"] = "".join(nameStack[1:i + 1]) break; i += 1 inheritList = [] if ":" in nameStack: self['name'] = nameStack[ nameStack.index(':') - 1 ] if nameStack.count(':') == 1: nameStack = nameStack[nameStack.index(":") + 1:] while len(nameStack): tmpStack = [] tmpInheritClass = {"access":"private", "virtual": False} if "," in nameStack: tmpStack = nameStack[:nameStack.index(",")] nameStack = nameStack[nameStack.index(",") + 1:] else: tmpStack = nameStack nameStack = [] # Convert template classes to one name in the last index for i in range(0, len(tmpStack)): if '<' in tmpStack[i]: tmpStack2 = tmpStack[:i-1] tmpStack2.append("".join(tmpStack[i-1:])) tmpStack = tmpStack2 break if len(tmpStack) == 0: break; elif len(tmpStack) == 1: tmpInheritClass["class"] = tmpStack[0] elif len(tmpStack) == 2: tmpInheritClass["access"] = tmpStack[0] tmpInheritClass["class"] = tmpStack[1] elif len(tmpStack) == 3 and "virtual" in tmpStack: tmpInheritClass["access"] = tmpStack[1] if tmpStack[1] != "virtual" else tmpStack[0] tmpInheritClass["class"] = tmpStack[2] tmpInheritClass["virtual"] = True else: warning_print( "Warning: can not parse inheriting class %s"%(" ".join(tmpStack))) if '>' in tmpStack: pass # allow skip templates for now else: raise NotImplemented if 'class' in tmpInheritClass: inheritList.append(tmpInheritClass) elif nameStack.count(':') == 2: self['parent'] = self['name']; self['name'] = nameStack[-1] elif nameStack.count(':') > 2 and nameStack[0] in ("class", "struct"): tmpStack = nameStack[nameStack.index(":") + 1:] superTmpStack = [[]] for tok in tmpStack: if tok == ',': superTmpStack.append([]) else: superTmpStack[-1].append(tok) for tmpStack in superTmpStack: tmpInheritClass = {"access":"private"} if len(tmpStack) and tmpStack[0] in supportedAccessSpecifier: tmpInheritClass["access"] = tmpStack[0] tmpStack = tmpStack[1:] inheritNSStack = [] while len(tmpStack) > 3: if tmpStack[0] == ':': break; if tmpStack[1] != ':': break; if tmpStack[2] != ':': break; inheritNSStack.append(tmpStack[0]) tmpStack = tmpStack[3:] if len(tmpStack) == 1 and tmpStack[0] != ':': inheritNSStack.append(tmpStack[0]) tmpInheritClass["class"] = "::".join(inheritNSStack) inheritList.append(tmpInheritClass) self['inherits'] = inheritList methodAccessSpecificList = {} propertyAccessSpecificList = {} enumAccessSpecificList = {} structAccessSpecificList = {} typedefAccessSpecificList = {} forwardAccessSpecificList = {} for accessSpecifier in supportedAccessSpecifier: methodAccessSpecificList[accessSpecifier] = [] propertyAccessSpecificList[accessSpecifier] = [] enumAccessSpecificList[accessSpecifier] = [] structAccessSpecificList[accessSpecifier] = [] typedefAccessSpecificList[accessSpecifier] = [] forwardAccessSpecificList[accessSpecifier] = [] self['methods'] = methodAccessSpecificList self['properties'] = propertyAccessSpecificList self['enums'] = enumAccessSpecificList self['structs'] = structAccessSpecificList self['typedefs'] = typedefAccessSpecificList self['forward_declares'] = forwardAccessSpecificList def show(self): """Convert class to a string""" namespace_prefix = "" if self["namespace"]: namespace_prefix = self["namespace"] + "::" rtn = "%s %s"%(self["declaration_method"], namespace_prefix + self["name"]) if self['abstract']: rtn += ' (abstract)\n' else: rtn += '\n' if 'doxygen' in self.keys(): rtn += self["doxygen"] + '\n' if 'parent' in self.keys() and self['parent']: rtn += 'parent class: ' + self['parent'] + '\n' if "inherits" in self.keys(): rtn += " Inherits: " for inheritClass in self["inherits"]: if inheritClass["virtual"]: rtn += "virtual " rtn += "%s %s, "%(inheritClass["access"], inheritClass["class"]) rtn += "\n" rtn += " {\n" for accessSpecifier in supportedAccessSpecifier: rtn += " %s\n"%(accessSpecifier) #Enums if (len(self["enums"][accessSpecifier])): rtn += " \n" for enum in self["enums"][accessSpecifier]: rtn += " %s\n"%(repr(enum)) #Properties if (len(self["properties"][accessSpecifier])): rtn += " \n" for property in self["properties"][accessSpecifier]: rtn += " %s\n"%(repr(property)) #Methods if (len(self["methods"][accessSpecifier])): rtn += " \n" for method in self["methods"][accessSpecifier]: rtn += "\t\t" + method.show() + '\n' rtn += " }\n" print rtn def __repr__(self): """Convert class to a string""" namespace_prefix = "" if self["namespace"]: namespace_prefix = self["namespace"] + "::" rtn = "%s %s"%(self["declaration_method"], namespace_prefix + self["name"]) if self['abstract']: rtn += ' (abstract)\n' else: rtn += '\n' if 'doxygen' in self.keys(): rtn += self["doxygen"] + '\n' if 'parent' in self.keys() and self['parent']: rtn += 'parent class: ' + self['parent'] + '\n' if "inherits" in self.keys() and len(self["inherits"]): rtn += "Inherits: " for inheritClass in self["inherits"]: if inheritClass.get("virtual", False): rtn += "virtual " rtn += "%s %s, "%(inheritClass["access"], inheritClass["class"]) rtn += "\n" rtn += "{\n" for accessSpecifier in supportedAccessSpecifier: rtn += "%s\n"%(accessSpecifier) #Enums if (len(self["enums"][accessSpecifier])): rtn += " // Enums\n" for enum in self["enums"][accessSpecifier]: rtn += " %s\n"%(repr(enum)) #Properties if (len(self["properties"][accessSpecifier])): rtn += " // Properties\n" for property in self["properties"][accessSpecifier]: rtn += " %s\n"%(repr(property)) #Methods if (len(self["methods"][accessSpecifier])): rtn += " // Methods\n" for method in self["methods"][accessSpecifier]: rtn += " %s\n"%(repr(method)) rtn += "}\n" return rtn class CppUnion( CppClass ): """Takes a name stack and turns it into a union Contains the following Keys: self['name'] - Name of the union self['doxygen'] - Doxygen comments associated with the union if they exist self['members'] - List of members the union has An example of how this could look is as follows: #self = { 'name': "" 'members': [] } """ def __init__(self, nameStack): CppClass.__init__(self, nameStack) self["name"] = "union " + self["name"] self["members"] = self["properties"]["public"] def transform_to_union_keys(self): print "union keys: %s"%self.keys() for key in ['inherits', 'parent', 'abstract', 'namespace', 'typedefs', 'methods']: del self[key] def show(self): """Convert class to a string""" print self def __repr__(self): """Convert class to a string""" namespace_prefix = "" if self["namespace"]: namespace_prefix = self["namespace"] + "::" rtn = "%s %s"%(self["declaration_method"], namespace_prefix + self["name"]) if self['abstract']: rtn += ' (abstract)\n' else: rtn += '\n' if 'doxygen' in self.keys(): rtn += self["doxygen"] + '\n' if 'parent' in self.keys() and self['parent']: rtn += 'parent class: ' + self['parent'] + '\n' rtn += "{\n" for member in self["members"]: rtn += " %s\n"%(repr(member)) rtn += "}\n" return rtn class _CppMethod( dict ): def _params_helper1( self, stack ): # deal with "throw" keyword if 'throw' in stack: stack = stack[ : stack.index('throw') ] ## remove GCC keyword __attribute__(...) and preserve returns ## cleaned = [] hit = False; hitOpen = 0; hitClose = 0 for a in stack: if a == '__attribute__': hit = True if hit: if a == '(': hitOpen += 1 elif a == ')': hitClose += 1 if a==')' and hitOpen == hitClose: hit = False else: cleaned.append( a ) stack = cleaned # also deal with attribute((const)) function prefix # # TODO this needs to be better # if len(stack) > 5: a = ''.join(stack) if a.startswith('((__const__))'): stack = stack[ 5 : ] elif a.startswith('__attribute__((__const__))'): stack = stack[ 6 : ] stack = stack[stack.index('(') + 1: ] if not stack: return [] if len(stack)>=3 and stack[0]==')' and stack[1]==':': # is this always a constructor? self['constructor'] = True return [] stack.reverse(); _end_ = stack.index(')'); stack.reverse() stack = stack[ : len(stack)-(_end_+1) ] if '(' not in stack: return stack # safe to return, no defaults that init a class # transforms ['someclass', '(', '0', '0', '0', ')'] into "someclass(0,0,0)'" r = []; hit=False for a in stack: if a == '(': hit=True elif a == ')': hit=False if hit or a == ')': r[-1] = r[-1] + a else: r.append( a ) return r def _params_helper2( self, params ): for p in params: p['method'] = self # save reference in variable to parent method if '::' in p['type']: ns = p['type'].split('::')[0] if ns not in Resolver.NAMESPACES and ns in Resolver.CLASSES: p['type'] = self['namespace'] + p['type'] else: p['namespace'] = self[ 'namespace' ] class CppMethod( _CppMethod ): """Takes a name stack and turns it into a method Contains the following Keys: self['rtnType'] - Return type of the method (ex. "int") self['name'] - Name of the method (ex. "getSize") self['doxygen'] - Doxygen comments associated with the method if they exist self['parameters'] - List of CppVariables """ def show(self): r = ['method name: %s (%s)' %(self['name'],self['debug']) ] if self['returns']: r.append( 'returns: %s'%self['returns'] ) if self['parameters']: r.append( 'number arguments: %s' %len(self['parameters'])) if self['pure_virtual']: r.append( 'pure virtual: %s'%self['pure_virtual'] ) if self['constructor']: r.append( 'constructor' ) if self['destructor']: r.append( 'destructor' ) return '\n\t\t '.join( r ) def __init__(self, nameStack, curClass, methinfo): debug_print( "Method: %s"%nameStack ) global doxygenCommentCache if len(doxygenCommentCache): self["doxygen"] = doxygenCommentCache doxygenCommentCache = "" if "operator" in nameStack: self["rtnType"] = " ".join(nameStack[:nameStack.index('operator')]) self["name"] = "".join(nameStack[nameStack.index('operator'):nameStack.index('(')]) else: self["rtnType"] = " ".join(nameStack[:nameStack.index('(') - 1]) self["name"] = " ".join(nameStack[nameStack.index('(') - 1:nameStack.index('(')]) if self["rtnType"].startswith("virtual"): self["rtnType"] = self["rtnType"][len("virtual"):].strip() if len(self["rtnType"]) == 0 or self["name"] == curClass: self["rtnType"] = "void" self["rtnType"] = self["rtnType"].replace(' : : ', '::' ) self["rtnType"] = self["rtnType"].replace(" <","<") self["rtnType"] = self["rtnType"].replace(" >",">").replace(">>", "> >").replace(">>", "> >") self["rtnType"] = self["rtnType"].replace(" ,",",") self["const"] = False for i in reversed(nameStack): if i == "const": self["const"] = True break elif i == ")": break self.update( methinfo ) #Filter out initializer lists used in constructors try: paren_depth_counter = 0 for i in range(0, len(nameStack)): elm = nameStack[i] if elm == "(": paren_depth_counter += 1 if elm == ")": paren_depth_counter -=1 if paren_depth_counter == 0 and nameStack[i+1] == ':': debug_print("Stripping out initializer list") nameStack = nameStack[:i+1] break except: pass paramsStack = self._params_helper1( nameStack ) params = [] #See if there is a doxygen comment for the variable doxyVarDesc = {} if self.has_key("doxygen"): doxyLines = self["doxygen"].split("\n") lastParamDesc = "" for doxyLine in doxyLines: if " @param " in doxyLine or " \param " in doxyLine: try: #Strip out the param doxyLine = doxyLine[doxyLine.find("param ") + 6:] (var, desc) = doxyLine.split(" ", 1) doxyVarDesc[var] = desc.strip() lastParamDesc = var except: pass elif " @return " in doxyLine or " \return " in doxyLine: lastParamDesc = "" # not handled for now elif lastParamDesc: try: doxyLine = doxyLine.strip() if " " not in doxyLine: lastParamDesc = "" continue doxyLine = doxyLine[doxyLine.find(" ") + 1:] doxyVarDesc[lastParamDesc] += " " + doxyLine except: pass #Create the variable now while (len(paramsStack)): # Find commas that are not nexted in <>'s like template types open_template_count = 0 param_separator = 0 i = 0 for elm in paramsStack: if '<' in elm : open_template_count += 1 elif '>' in elm: open_template_count -= 1 elif elm == ',' and open_template_count == 0: param_separator = i break i += 1 if param_separator: param = CppVariable(paramsStack[0:param_separator], doxyVarDesc=doxyVarDesc) if len(param.keys()): params.append(param) paramsStack = paramsStack[param_separator + 1:] else: param = CppVariable(paramsStack, doxyVarDesc=doxyVarDesc) if len(param.keys()): params.append(param) break self["parameters"] = params self._params_helper2( params ) # mods params inplace def __repr__(self): filter_keys = ("parent", "defined", "operator", "returns_reference") cpy = dict((k,v) for (k,v) in self.items() if k not in filter_keys) return "%s"%cpy class _CppVariable(dict): def _name_stack_helper( self, stack ): stack = list(stack) if '=' not in stack: # TODO refactor me # check for array[n] and deal with funny array syntax: "int myvar:99" array = [] while stack and stack[-1].isdigit(): array.append( stack.pop() ) if array: array.reverse(); self['array'] = int(''.join(array)) if stack and stack[-1].endswith(':'): stack[-1] = stack[-1][:-1] while stack and not stack[-1]: stack.pop() # can be empty return stack def init(self): #assert self['name'] # allow unnamed variables, methods like this: "void func(void);" a = [] self['aliases'] = []; self['parent'] = None; self['typedef'] = None for key in 'constant reference pointer static typedefs class fundamental unresolved'.split(): self[ key ] = 0 for b in self['type'].split(): if b == '__const__': b = 'const' a.append( b ) self['type'] = ' '.join( a ) class CppVariable( _CppVariable ): """Takes a name stack and turns it into a method Contains the following Keys: self['type'] - Type for the variable (ex. "const string &") self['name'] - Name of the variable (ex. "numItems") self['namespace'] - Namespace containing the enum self['desc'] - Description of the variable if part of a method (optional) self['doxygen'] - Doxygen comments associated with the method if they exist self['defaltValue'] - Default value of the variable, this key will only exist if there is a default value """ Vars = [] def __init__(self, nameStack, **kwargs): _stack_ = nameStack if "[" in nameStack: #strip off array informatin arrayStack = nameStack[nameStack.index("["):] if len(arrayStack) == 3: self["array_size"] = arrayStack[1] nameStack = nameStack[:nameStack.index("[")] self["array"] = 1 else: self["array"] = 0 nameStack = self._name_stack_helper( nameStack ) global doxygenCommentCache if len(doxygenCommentCache): self["doxygen"] = doxygenCommentCache doxygenCommentCache = "" debug_print( "Variable: %s"%nameStack ) self["function_pointer"] = 0 if (len(nameStack) < 2): # +++ if len(nameStack) == 1: self['type'] = nameStack[0]; self['name'] = '' else: error_print(_stack_); assert 0 elif is_function_pointer_stack(nameStack): #function pointer self["type"] = " ".join(nameStack[:nameStack.index("(") + 2] + nameStack[nameStack.index(")") :]) self["name"] = " ".join(nameStack[nameStack.index("(") + 2 : nameStack.index(")")]) self["function_pointer"] = 1 elif ("=" in nameStack): self["type"] = " ".join(nameStack[:nameStack.index("=") - 1]) self["name"] = nameStack[nameStack.index("=") - 1] self["defaltValue"] = " ".join(nameStack[nameStack.index("=") + 1:]) # deprecate camelCase in dicts self['default'] = " ".join(nameStack[nameStack.index("=") + 1:]) elif is_fundamental(nameStack[-1]) or nameStack[-1] in ['>', '<' , ':', '.']: #Un named parameter self["type"] = " ".join(nameStack) self["name"] = "" else: # common case self["type"] = " ".join(nameStack[:-1]) self["name"] = nameStack[-1] self["type"] = self["type"].replace(" :",":") self["type"] = self["type"].replace(": ",":") self["type"] = self["type"].replace(" <","<") self["type"] = self["type"].replace(" >",">").replace(">>", "> >").replace(">>", "> >") self["type"] = self["type"].replace(" ,",",") #Optional doxygen description try: self["desc"] = kwargs["doxyVarDesc"][self["name"]] except: pass self.init() CppVariable.Vars.append( self ) # save and resolve later def __repr__(self): keys_white_list = ['constant','name','reference','type','static','pointer','desc'] cpy = dict((k,v) for (k,v) in self.items() if k in keys_white_list) if self.has_key("array_size"): cpy["array_size"] = self["array_size"] return "%s"%cpy class _CppEnum(dict): def resolve_enum_values( self, values ): """Evaluates the values list of dictionaries passed in and figures out what the enum value for each enum is editing in place: Example: From: [{'name': 'ORANGE'}, {'name': 'RED'}, {'name': 'GREEN', 'value': '8'}] To: [{'name': 'ORANGE', 'value': 0}, {'name': 'RED', 'value': 1}, {'name': 'GREEN', 'value': 8}] """ t = int; i = 0 names = [ v['name'] for v in values ] for v in values: if 'value' in v: a = v['value'].strip() if a.lower().startswith("0x"): try: i = a = int(a , 16) except:pass elif a.isdigit(): i = a = int( a ) elif a in names: for other in values: if other['name'] == a: v['value'] = other['value'] break elif '"' in a or "'" in a: t = str # only if there are quotes it this a string enum else: try: a = i = ord(a) except: pass #Allow access of what is in the file pre-convert if converted if v['value'] != str(a): v['raw_value'] = v['value'] v['value'] = a else: v['value'] = i i += 1 return t class CppEnum(_CppEnum): """Takes a name stack and turns it into an Enum Contains the following Keys: self['name'] - Name of the enum (ex. "ItemState") self['namespace'] - Namespace containing the enum self['values'] - List of values where the values are a dictionary of the form {"name": name of the key (ex. "PARSING_HEADER"), "value": Specified value of the enum, this key will only exist if a value for a given enum value was defined } """ def __init__(self, nameStack): if len(nameStack) < 4 or "{" not in nameStack or "}" not in nameStack: #Not enough stuff for an enum return global doxygenCommentCache if len(doxygenCommentCache): self["doxygen"] = doxygenCommentCache doxygenCommentCache = "" valueList = [] #Figure out what values it has valueStack = nameStack[nameStack.index('{') + 1: nameStack.index('}')] while len(valueStack): tmpStack = [] if "," in valueStack: tmpStack = valueStack[:valueStack.index(",")] valueStack = valueStack[valueStack.index(",") + 1:] else: tmpStack = valueStack valueStack = [] d = {} if len(tmpStack) == 1: d["name"] = tmpStack[0] elif len(tmpStack) >= 3 and tmpStack[1] == "=": d["name"] = tmpStack[0]; d["value"] = " ".join(tmpStack[2:]) elif len(tmpStack) == 2 and tmpStack[1] == "=": debug_print( "WARN-enum: parser missed value for %s"%tmpStack[0] ) d["name"] = tmpStack[0] if d: valueList.append( d ) if len(valueList): self['type'] = self.resolve_enum_values( valueList ) # returns int for standard enum self["values"] = valueList else: warning_print( 'WARN-enum: empty enum %s'%nameStack ) return #Figure out if it has a name preBraceStack = nameStack[:nameStack.index("{")] postBraceStack = nameStack[nameStack.index("}") + 1:] if (len(preBraceStack) == 2 and "typedef" not in nameStack): self["name"] = preBraceStack[1] elif len(postBraceStack) and "typedef" in nameStack: self["name"] = " ".join(postBraceStack) else: warning_print( 'WARN-enum: nameless enum %s'%nameStack ) #See if there are instances of this if "typedef" not in nameStack and len(postBraceStack): self["instances"] = [] for var in postBraceStack: if "," in var: continue self["instances"].append(var) self["namespace"] = "" class CppStruct(dict): Structs = [] def __init__(self, nameStack): if len(nameStack) >= 2: self['type'] = nameStack[1] else: self['type'] = None self['fields'] = [] self.Structs.append( self ) C99_NONSTANDARD = { 'int8' : 'signed char', 'int16' : 'short int', 'int32' : 'int', 'int64' : 'int64_t', # this can be: long int (64bit), or long long int (32bit) 'uint' : 'unsigned int', 'uint8' : 'unsigned char', 'uint16' : 'unsigned short int', 'uint32' : 'unsigned int', 'uint64' : 'uint64_t', # depends on host bits } def standardize_fundamental( s ): if s in C99_NONSTANDARD: return C99_NONSTANDARD[ s ] else: return s class Resolver(object): C_FUNDAMENTAL = 'size_t unsigned signed bool char wchar short int float double long void'.split() C_FUNDAMENTAL += 'struct union enum'.split() SubTypedefs = {} # TODO deprecate? NAMESPACES = [] CLASSES = {} STRUCTS = {} def initextra(self): self.typedefs = {} self.typedefs_order = [] self.classes_order = [] self.structs = Resolver.STRUCTS self.structs_order = [] self.namespaces = Resolver.NAMESPACES # save all namespaces self.curStruct = None self.stack = [] # full name stack, good idea to keep both stacks? (simple stack and full stack) self._classes_brace_level = {} # class name : level self._structs_brace_level = {} # struct type : level self._method_body = None self._forward_decls = [] self._template_typenames = [] # template def current_namespace(self): return self.cur_namespace(True) def cur_namespace(self, add_double_colon=False): rtn = "" i = 0 while i < len(self.nameSpaces): rtn += self.nameSpaces[i] if add_double_colon or i < len(self.nameSpaces) - 1: rtn += "::" i+=1 return rtn def guess_ctypes_type( self, string ): pointers = string.count('*') string = string.replace('*','') a = string.split() if 'unsigned' in a: u = 'u' else: u = '' if 'long' in a and 'double' in a: b = 'longdouble' # there is no ctypes.c_ulongdouble (this is a 64bit float?) elif a.count('long') == 2 and 'int' in a: b = '%sint64' %u elif a.count('long') == 2: b = '%slonglong' %u elif 'long' in a: b = '%slong' %u elif 'double' in a: b = 'double' # no udouble in ctypes elif 'short' in a: b = '%sshort' %u elif 'char' in a: b = '%schar' %u elif 'wchar' in a: b = 'wchar' elif 'bool' in a: b = 'bool' elif 'float' in a: b = 'float' elif 'int' in a: b = '%sint' %u elif 'int8' in a: b = 'int8' elif 'int16' in a: b = 'int16' elif 'int32' in a: b = 'int32' elif 'int64' in a: b = 'int64' elif 'uint' in a: b = 'uint' elif 'uint8' in a: b = 'uint8' elif 'uint16' in a: b = 'uint16' elif 'uint32' in a: b = 'uint32' elif 'uint64' in a: b = 'uint64' elif 'size_t' in a: b = 'size_t' elif 'void' in a: b = 'void_p' elif string in 'struct union'.split(): b = 'void_p' # what should be done here? don't trust struct, it could be a class, no need to expose via ctypes else: b = 'void_p' if not pointers: return 'ctypes.c_%s' %b else: x = '' for i in range(pointers): x += 'ctypes.POINTER(' x += 'ctypes.c_%s' %b x += ')' * pointers return x def resolve_type( self, string, result ): # recursive ''' keeps track of useful things like: how many pointers, number of typedefs, is fundamental or a class, etc... ''' ## be careful with templates, what is inside can be a pointer but the overall type is not a pointer ## these come before a template s = string.split('<')[0] result[ 'constant' ] += s.split().count('const') result[ 'static' ] += s.split().count('static') result[ 'mutable' ] = 'mutable' in s.split() ## these come after a template s = string.split('>')[-1] result[ 'pointer' ] += s.count('*') result[ 'reference' ] += s.count('&') x = string; alias = False for a in '* & const static mutable'.split(): x = x.replace(a,'') for y in x.split(): if y not in self.C_FUNDAMENTAL: alias = y; break #if alias == 'class': # result['class'] = result['name'] # forward decl of class # result['forward_decl'] = True if alias == '__extension__': result['fundamental_extension'] = True elif alias: result['aliases'].append( alias ) if alias in C99_NONSTANDARD: result['type'] = C99_NONSTANDARD[ alias ] result['typedef'] = alias result['typedefs'] += 1 elif alias in self.typedefs: result['typedefs'] += 1 result['typedef'] = alias self.resolve_type( self.typedefs[alias], result ) elif alias in self.classes: klass = self.classes[alias]; result['fundamental'] = False result['class'] = klass result['unresolved'] = False else: result['unresolved'] = True else: result['fundamental'] = True result['unresolved'] = False def finalize_vars(self): for s in CppStruct.Structs: # vars within structs can be ignored if they do not resolve for var in s['fields']: var['parent'] = s['type'] #for c in self.classes.values(): # for var in c.get_all_properties(): var['parent'] = c['name'] ## RESOLVE ## for var in CppVariable.Vars: self.resolve_type( var['type'], var ) #if 'method' in var and var['method']['name'] == '_notifyCurrentCamera': print(var); assert 0 # then find concrete type and best guess ctypes type # for var in CppVariable.Vars: if not var['aliases']: #var['fundamental']: var['ctypes_type'] = self.guess_ctypes_type( var['type'] ) else: var['unresolved'] = False # below may test to True if var['class']: var['ctypes_type'] = 'ctypes.c_void_p' else: assert var['aliases'] tag = var['aliases'][0] klass = None nestedEnum = None nestedStruct = None nestedTypedef = None if 'method' in var and 'parent' in var['method'].keys(): klass = var['method']['parent'] if tag in var['method']['parent']._public_enums: nestedEnum = var['method']['parent']._public_enums[ tag ] elif tag in var['method']['parent']._public_structs: nestedStruct = var['method']['parent']._public_structs[ tag ] elif tag in var['method']['parent']._public_typedefs: nestedTypedef = var['method']['parent']._public_typedefs[ tag ] if '<' in tag: # should also contain '>' var['template'] = tag # do not resolve templates var['ctypes_type'] = 'ctypes.c_void_p' var['unresolved'] = True elif nestedEnum: enum = nestedEnum if enum['type'] is int: var['ctypes_type'] = 'ctypes.c_int' var['raw_type'] = 'int' elif enum['type'] is str: var['ctypes_type'] = 'ctypes.c_char_p' var['raw_type'] = 'char*' var['enum'] = var['method']['path'] + '::' + enum['name'] var['fundamental'] = True elif nestedStruct: var['ctypes_type'] = 'ctypes.c_void_p' var['raw_type'] = var['method']['path'] + '::' + nestedStruct['type'] var['fundamental'] = False elif nestedTypedef: var['fundamental'] = is_fundamental( nestedTypedef ) if not var['fundamental']: var['raw_type'] = var['method']['path'] + '::' + tag else: _tag = tag if '::' in tag and tag.split('::')[0] in self.namespaces: tag = tag.split('::')[-1] con = self.concrete_typedef( _tag ) if con: var['concrete_type'] = con var['ctypes_type'] = self.guess_ctypes_type( var['concrete_type'] ) elif tag in self.structs: trace_print( 'STRUCT', var ) var['struct'] = tag var['ctypes_type'] = 'ctypes.c_void_p' var['raw_type'] = self.structs[tag]['namespace'] + '::' + tag elif tag in self._forward_decls: var['forward_declared'] = tag var['ctypes_type'] = 'ctypes.c_void_p' elif tag in self.global_enums: enum = self.global_enums[ tag ] if enum['type'] is int: var['ctypes_type'] = 'ctypes.c_int' var['raw_type'] = 'int' elif enum['type'] is str: var['ctypes_type'] = 'ctypes.c_char_p' var['raw_type'] = 'char*' var['enum'] = enum['namespace'] + enum['name'] var['fundamental'] = True elif var['parent']: warning_print( 'WARN unresolved %s'%_tag) var['ctypes_type'] = 'ctypes.c_void_p' var['unresolved'] = True elif tag.count('::')==1: trace_print( 'trying to find nested something in', tag ) a = tag.split('::')[0] b = tag.split('::')[-1] if a in self.classes: # a::b is most likely something nested in a class klass = self.classes[ a ] if b in klass._public_enums: trace_print( '...found nested enum', b ) enum = klass._public_enums[ b ] if enum['type'] is int: var['ctypes_type'] = 'ctypes.c_int' var['raw_type'] = 'int' elif enum['type'] is str: var['ctypes_type'] = 'ctypes.c_char_p' var['raw_type'] = 'char*' if 'method' in var: var['enum'] = var['method']['path'] + '::' + enum['name'] else: # class property var['unresolved'] = True var['fundamental'] = True else: var['unresolved'] = True # TODO klass._public_xxx elif a in self.namespaces: # a::b can also be a nested namespace if b in self.global_enums: enum = self.global_enums[ b ] trace_print(enum) trace_print(var) assert 0 elif b in self.global_enums: # falling back, this is a big ugly enum = self.global_enums[ b ] assert a in enum['namespace'].split('::') if enum['type'] is int: var['ctypes_type'] = 'ctypes.c_int' var['raw_type'] = 'int' elif enum['type'] is str: var['ctypes_type'] = 'ctypes.c_char_p' var['raw_type'] = 'char*' var['fundamental'] = True else: # boost::gets::crazy trace_print('NAMESPACES', self.namespaces) trace_print( a, b ) trace_print( '---- boost gets crazy ----' ) var['ctypes_type'] = 'ctypes.c_void_p' var['unresolved'] = True elif 'namespace' in var and self.concrete_typedef(var['namespace']+tag): #print( 'TRYING WITH NS', var['namespace'] ) con = self.concrete_typedef( var['namespace']+tag ) if con: var['typedef'] = var['namespace']+tag var['type'] = con if 'struct' in con.split(): var['raw_type'] = var['typedef'] var['ctypes_type'] = 'ctypes.c_void_p' else: self.resolve_type( var['type'], var ) var['ctypes_type'] = self.guess_ctypes_type( var['type'] ) elif '::' in var: var['ctypes_type'] = 'ctypes.c_void_p' var['unresolved'] = True elif tag in self.SubTypedefs: # TODO remove SubTypedefs if 'property_of_class' in var or 'property_of_struct' in var: trace_print( 'class:', self.SubTypedefs[ tag ], 'tag:', tag ) var['typedef'] = self.SubTypedefs[ tag ] # class name var['ctypes_type'] = 'ctypes.c_void_p' else: trace_print( "WARN-this should almost never happen!" ) trace_print( var ); trace_print('-'*80) var['unresolved'] = True elif tag in self._template_typenames: var['typename'] = tag var['ctypes_type'] = 'ctypes.c_void_p' var['unresolved'] = True # TODO, how to deal with templates? elif tag.startswith('_'): # assume starting with underscore is not important for wrapping warning_print( 'WARN unresolved %s'%_tag) var['ctypes_type'] = 'ctypes.c_void_p' var['unresolved'] = True else: trace_print( 'WARN: unknown type', var ) assert 'property_of_class' in var or 'property_of_struct' # only allow this case var['unresolved'] = True ## if not resolved and is a method param, not going to wrap these methods ## if var['unresolved'] and 'method' in var: var['method']['unresolved_parameters'] = True # create stripped raw_type # p = '* & const static mutable'.split() # +++ new July7: "mutable" for var in CppVariable.Vars: if 'raw_type' not in var: raw = [] for x in var['type'].split(): if x not in p: raw.append( x ) var['raw_type'] = ' '.join( raw ) #if 'AutoConstantEntry' in var['raw_type']: print(var); assert 0 if var['class']: if '::' not in var['raw_type']: if not var['class']['parent']: var['raw_type'] = var['class']['namespace'] + '::' + var['raw_type'] elif var['class']['parent'] in self.classes: parent = self.classes[ var['class']['parent'] ] var['raw_type'] = parent['namespace'] + '::' + var['class']['name'] + '::' + var['raw_type'] else: var['unresolved'] = True elif '::' in var['raw_type'] and var['raw_type'].split('::')[0] not in self.namespaces: var['raw_type'] = var['class']['namespace'] + '::' + var['raw_type'] else: var['unresolved'] = True elif 'forward_declared' in var and 'namespace' in var: if '::' not in var['raw_type']: var['raw_type'] = var['namespace'] + var['raw_type'] elif '::' in var['raw_type'] and var['raw_type'].split('::')[0] in self.namespaces: pass else: trace_print('-'*80); trace_print(var); raise NotImplemented ## need full name space for classes in raw type ## if var['raw_type'].startswith( '::' ): #print(var) #print('NAMESPACE', var['class']['namespace']) #print( 'PARENT NS', var['class']['parent']['namespace'] ) #assert 0 var['unresolved'] = True if 'method' in var: var['method']['unresolved_parameters'] = True #var['raw_type'] = var['raw_type'][2:] def concrete_typedef( self, key ): if key not in self.typedefs: #print( 'FAILED typedef', key ) return None while key in self.typedefs: prev = key key = self.typedefs[ key ] if '<' in key or '>' in key: return prev # stop at template if key.startswith('std::'): return key # stop at std lib return key class _CppHeader( Resolver ): def finalize(self): self.finalize_vars() # finalize classes and method returns types for cls in self.classes.values(): for meth in cls.get_all_methods(): if meth['pure_virtual']: cls['abstract'] = True if not meth['returns_fundamental'] and meth['returns'] in C99_NONSTANDARD: meth['returns'] = C99_NONSTANDARD[meth['returns']] meth['returns_fundamental'] = True elif not meth['returns_fundamental']: # describe the return type con = None if cls['namespace'] and '::' not in meth['returns']: con = self.concrete_typedef( cls['namespace'] + '::' + meth['returns'] ) else: con = self.concrete_typedef( meth['returns'] ) if con: meth['returns_concrete'] = con meth['returns_fundamental'] = is_fundamental( con ) elif meth['returns'] in self.classes: trace_print( 'meth returns class:', meth['returns'] ) meth['returns_class'] = True elif meth['returns'] in self.SubTypedefs: meth['returns_class'] = True meth['returns_nested'] = self.SubTypedefs[ meth['returns'] ] elif meth['returns'] in cls._public_enums: enum = cls._public_enums[ meth['returns'] ] meth['returns_enum'] = enum['type'] meth['returns_fundamental'] = True if enum['type'] == int: meth['returns'] = 'int' else: meth['returns'] = 'char*' elif meth['returns'] in self.global_enums: enum = self.global_enums[ meth['returns'] ] meth['returns_enum'] = enum['type'] meth['returns_fundamental'] = True if enum['type'] == int: meth['returns'] = 'int' else: meth['returns'] = 'char*' elif meth['returns'].count('::')==1: trace_print( meth ) a,b = meth['returns'].split('::') if a in self.namespaces: if b in self.classes: klass = self.classes[ b ] meth['returns_class'] = a + '::' + b elif '<' in b and '>' in b: warning_print( 'WARN-can not return template: %s'%b ) meth['returns_unknown'] = True elif b in self.global_enums: enum = self.global_enums[ b ] meth['returns_enum'] = enum['type'] meth['returns_fundamental'] = True if enum['type'] == int: meth['returns'] = 'int' else: meth['returns'] = 'char*' else: trace_print( a, b); trace_print( meth); meth['returns_unknown'] = True # +++ elif a in self.classes: klass = self.classes[ a ] if b in klass._public_enums: trace_print( '...found nested enum', b ) enum = klass._public_enums[ b ] meth['returns_enum'] = enum['type'] meth['returns_fundamental'] = True if enum['type'] == int: meth['returns'] = 'int' else: meth['returns'] = 'char*' elif b in klass._public_forward_declares: meth['returns_class'] = True elif b in klass._public_typedefs: typedef = klass._public_typedefs[ b ] meth['returns_fundamental'] = is_fundamental( typedef ) else: trace_print( meth ) # should be a nested class, TODO fix me. meth['returns_unknown'] = True elif '::' in meth['returns']: trace_print('TODO namespace or extra nested return:', meth) meth['returns_unknown'] = True else: trace_print( 'WARN: UNKNOWN RETURN', meth['name'], meth['returns']) meth['returns_unknown'] = True for cls in self.classes.values(): methnames = cls.get_all_method_names() pvm = cls.get_all_pure_virtual_methods() for d in cls['inherits']: c = d['class'] a = d['access'] # do not depend on this to be 'public' trace_print( 'PARENT CLASS:', c ) if c not in self.classes: trace_print('WARN: parent class not found') if c in self.classes and self.classes[c]['abstract']: p = self.classes[ c ] for meth in p.get_all_methods(): #p["methods"]["public"]: trace_print( '\t\tmeth', meth['name'], 'pure virtual', meth['pure_virtual'] ) if meth['pure_virtual'] and meth['name'] not in methnames: cls['abstract'] = True; break def evaluate_struct_stack(self): """Create a Struct out of the name stack (but not its parts)""" #print( 'eval struct stack', self.nameStack ) #if self.braceDepth != len(self.nameSpaces): return struct = CppStruct(self.nameStack) struct["namespace"] = self.cur_namespace() self.structs[ struct['type'] ] = struct self.structs_order.append( struct ) if self.curClass: struct['parent'] = self.curClass klass = self.classes[ self.curClass ] klass['structs'][self.curAccessSpecifier].append( struct ) if self.curAccessSpecifier == 'public': klass._public_structs[ struct['type'] ] = struct self.curStruct = struct self._structs_brace_level[ struct['type'] ] = self.braceDepth def parse_method_type( self, stack ): trace_print( 'meth type info', stack ) if stack[0] in ':;': stack = stack[1:] info = { 'debug': ' '.join(stack).replace(' : : ', '::' ).replace(' < ', '<' ).replace(' > ', '> ' ).replace(" >",">").replace(">>", "> >").replace(">>", "> >"), 'class':None, 'namespace':self.cur_namespace(add_double_colon=True), } for tag in 'defined pure_virtual operator constructor destructor extern template virtual static explicit inline friend returns returns_pointer returns_fundamental returns_class'.split(): info[tag]=False header = stack[ : stack.index('(') ] header = ' '.join( header ) header = header.replace(' : : ', '::' ) header = header.replace(' < ', '<' ) header = header.replace(' > ', '> ' ) header = header.strip() if '{' in stack: info['defined'] = True self._method_body = self.braceDepth trace_print( 'NEW METHOD WITH BODY', self.braceDepth ) elif stack[-1] == ';': info['defined'] = False self._method_body = None # not a great idea to be clearing here else: assert 0 if len(stack) > 3 and stack[-1] == ';' and stack[-2] == '0' and stack[-3] == '=': info['pure_virtual'] = True r = header.split() name = None if 'operator' in stack: # rare case op overload defined outside of class op = stack[ stack.index('operator')+1 : stack.index('(') ] op = ''.join(op) if not op: if " ".join(['operator', '(', ')', '(']) in " ".join(stack): op = "()" else: trace_print( 'Error parsing operator') return None info['operator'] = op name = 'operator' + op a = stack[ : stack.index('operator') ] elif r: name = r[-1] a = r[ : -1 ] # strip name if name is None: return None #if name.startswith('~'): name = name[1:] while a and a[0] == '}': # strip - can have multiple } } a = a[1:] if '::' in name: #klass,name = name.split('::') # methods can be defined outside of class klass = name[ : name.rindex('::') ] name = name.split('::')[-1] info['class'] = klass if self.classes.has_key(klass) and not self.curClass: #Class function defined outside the class return None # info['name'] = name #else: info['name'] = name if name.startswith('~'): info['destructor'] = True name = name[1:] elif not a or (name == self.curClass and len(self.curClass)): info['constructor'] = True info['name'] = name for tag in 'extern virtual static explicit inline friend'.split(): if tag in a: info[ tag ] = True; a.remove( tag ) # inplace if 'template' in a: a.remove('template') b = ' '.join( a ) if '>' in b: info['template'] = b[ : b.index('>')+1 ] info['returns'] = b[ b.index('>')+1 : ] # find return type, could be incorrect... TODO if '' if typname not in self._template_typenames: self._template_typenames.append( typname ) else: info['returns'] = ' '.join( a ) else: info['returns'] = ' '.join( a ) info['returns'] = info['returns'].replace(' <', '<').strip() ## be careful with templates, do not count pointers inside template info['returns_pointer'] = info['returns'].split('>')[-1].count('*') if info['returns_pointer']: info['returns'] = info['returns'].replace('*','').strip() info['returns_reference'] = '&' in info['returns'] if info['returns']: info['returns'] = info['returns'].replace('&','').strip() a = [] for b in info['returns'].split(): if b == '__const__': info['returns_const'] = True elif b == 'const': info['returns_const'] = True else: a.append( b ) info['returns'] = ' '.join( a ) info['returns_fundamental'] = is_fundamental( info['returns'] ) return info def evaluate_method_stack(self): """Create a method out of the name stack""" if self.curStruct: trace_print( 'WARN - struct contains methods - skipping' ) trace_print( self.stack ) assert 0 info = self.parse_method_type( self.stack ) if info: if info[ 'class' ] and info['class'] in self.classes: # case where methods are defined outside of class newMethod = CppMethod(self.nameStack, info['name'], info) klass = self.classes[ info['class'] ] klass[ 'methods' ][ 'public' ].append( newMethod ) newMethod['parent'] = klass if klass['namespace']: newMethod['path'] = klass['namespace'] + '::' + klass['name'] else: newMethod['path'] = klass['name'] elif self.curClass: # normal case newMethod = CppMethod(self.nameStack, self.curClass, info) klass = self.classes[self.curClass] klass['methods'][self.curAccessSpecifier].append(newMethod) newMethod['parent'] = klass if klass['namespace']: newMethod['path'] = klass['namespace'] + '::' + klass['name'] else: newMethod['path'] = klass['name'] else: #non class functions debug_print("FREE FUNCTION") newMethod = CppMethod(self.nameStack, None, info) self.functions.append(newMethod) global parseHistory parseHistory.append({"braceDepth": self.braceDepth, "item_type": "method", "item": newMethod}) else: trace_print( 'free function?', self.nameStack ) self.stack = [] def _parse_typedef( self, stack, namespace='' ): if not stack or 'typedef' not in stack: return stack = list( stack ) # copy just to be safe if stack[-1] == ';': stack.pop() while stack and stack[-1].isdigit(): stack.pop() # throw away array size for now idx = stack.index('typedef') name = namespace + stack[-1] s = '' for a in stack[idx+1:-1]: if a == '{': break if not s or s[-1] in ':<>' or a in ':<>': s += a # keep compact else: s += ' ' + a # spacing r = {'name':name, 'raw':s, 'type':s} if not is_fundamental(s): if 'struct' in s.split(): pass # TODO is this right? "struct ns::something" elif '::' not in s: s = namespace + s # only add the current name space if no namespace given r['type'] = s if s: return r def evaluate_typedef(self): ns = self.cur_namespace(add_double_colon=True) res = self._parse_typedef( self.stack, ns ) if res: name = res['name'] self.typedefs[ name ] = res['type'] if name not in self.typedefs_order: self.typedefs_order.append( name ) def evaluate_property_stack(self): """Create a Property out of the name stack""" global parseHistory assert self.stack[-1] == ';' if self.nameStack[0] == 'typedef': if self.curClass: typedef = self._parse_typedef( self.stack ) name = typedef['name'] klass = self.classes[ self.curClass ] klass[ 'typedefs' ][ self.curAccessSpecifier ].append( name ) if self.curAccessSpecifier == 'public': klass._public_typedefs[ name ] = typedef['type'] Resolver.SubTypedefs[ name ] = self.curClass else: assert 0 elif self.curStruct or self.curClass: if len(self.nameStack) == 1: #See if we can de anonymize the type filteredParseHistory = [h for h in parseHistory if h["braceDepth"] == self.braceDepth] if len(filteredParseHistory) and filteredParseHistory[-1]["item_type"] == "class": self.nameStack.insert(0, filteredParseHistory[-1]["item"]["name"]) debug_print("DEANONYMOIZING %s to type '%s'"%(self.nameStack[1], self.nameStack[0])) newVar = CppVariable(self.nameStack) newVar['namespace'] = self.current_namespace() if self.curStruct: self.curStruct[ 'fields' ].append( newVar ) newVar['property_of_struct'] = self.curStruct elif self.curClass: klass = self.classes[self.curClass] klass["properties"][self.curAccessSpecifier].append(newVar) newVar['property_of_class'] = klass['name'] parseHistory.append({"braceDepth": self.braceDepth, "item_type": "variable", "item": newVar}) self.stack = [] # CLEAR STACK def evaluate_class_stack(self): """Create a Class out of the name stack (but not its parts)""" #dont support sub classes today #print( 'eval class stack', self.nameStack ) parent = self.curClass if self.braceDepth > len( self.nameSpaces) and parent: trace_print( 'HIT NESTED SUBCLASS' ) self.accessSpecifierStack.append(self.curAccessSpecifier) elif self.braceDepth != len(self.nameSpaces): error_print( 'ERROR: WRONG BRACE DEPTH' ) return if self.nameStack[0] == "class": self.curAccessSpecifier = 'private' else:#struct self.curAccessSpecifier = 'public' debug_print("curAccessSpecifier changed/defaulted to %s"%self.curAccessSpecifier) if self.nameStack[0] == "union": newClass = CppUnion(self.nameStack) trace_print( 'NEW UNION', newClass['name'] ) else: newClass = CppClass(self.nameStack) trace_print( 'NEW CLASS', newClass['name'] ) newClass["declaration_method"] = self.nameStack[0] self.classes_order.append( newClass ) # good idea to save ordering self.stack = [] # fixes if class declared with ';' in closing brace if parent: newClass["namespace"] = self.classes[ parent ]['namespace'] + '::' + parent newClass['parent'] = parent self.classes[ parent ]['nested_classes'].append( newClass ) ## supports nested classes with the same name ## self.curClass = key = parent+'::'+newClass['name'] self._classes_brace_level[ key ] = self.braceDepth elif newClass['parent']: # nested class defined outside of parent. A::B {...} parent = newClass['parent'] newClass["namespace"] = self.classes[ parent ]['namespace'] + '::' + parent self.classes[ parent ]['nested_classes'].append( newClass ) ## supports nested classes with the same name ## self.curClass = key = parent+'::'+newClass['name'] self._classes_brace_level[ key ] = self.braceDepth else: newClass["namespace"] = self.cur_namespace() key = newClass['name'] self.curClass = newClass["name"] self._classes_brace_level[ newClass['name'] ] = self.braceDepth if not key.endswith("::") and len(key) != 0: if key in self.classes: trace_print( 'ERROR name collision:', key ) self.classes[key].show() trace_print('-'*80) newClass.show() assert key not in self.classes # namespace collision self.classes[ key ] = newClass global parseHistory parseHistory.append({"braceDepth": self.braceDepth, "item_type": "class", "item": newClass}) def evalute_forward_decl(self): trace_print( 'FORWARD DECL', self.nameStack ) assert self.nameStack[0] in ('class', 'struct') name = self.nameStack[-1] if self.curClass: klass = self.classes[ self.curClass ] klass['forward_declares'][self.curAccessSpecifier].append( name ) if self.curAccessSpecifier == 'public': klass._public_forward_declares.append( name ) else: self._forward_decls.append( name ) class CppHeader( _CppHeader ): """Parsed C++ class header Variables produced: self.classes - Dictionary of classes found in a given header file where the key is the name of the class """ IGNORE_NAMES = '__extension__'.split() def show(self): for className in self.classes.keys():self.classes[className].show() def __init__(self, headerFileName, argType="file", **kwargs): """Create the parsed C++ header file parse tree headerFileName - Name of the file to parse OR actual file contents (depends on argType) argType - Indicates how to interpret headerFileName as a file string or file name kwargs - Supports the following keywords """ ## reset global state ## global doxygenCommentCache doxygenCommentCache = "" CppVariable.Vars = [] CppStruct.Structs = [] if (argType == "file"): self.headerFileName = os.path.expandvars(headerFileName) self.mainClass = os.path.split(self.headerFileName)[1][:-2] headerFileStr = "" elif argType == "string": self.headerFileName = "" self.mainClass = "???" headerFileStr = headerFileName else: raise Exception("Arg type must be either file or string") self.curClass = "" # nested classes have parent::nested, but no extra namespace, # this keeps the API compatible, TODO proper namespace for everything. Resolver.CLASSES = {} self.classes = Resolver.CLASSES #Functions that are not part of a class self.functions = [] self.enums = [] self.global_enums = {} self.nameStack = [] self.nameSpaces = [] self.curAccessSpecifier = 'private' # private is default self.accessSpecifierStack = [] self.accessSpecifierScratch = [] debug_print("curAccessSpecifier changed/defaulted to %s"%self.curAccessSpecifier) self.initextra() if (len(self.headerFileName)): fd = open(self.headerFileName) headerFileStr = "".join(fd.readlines()) fd.close() # Make sure supportedAccessSpecifier are sane for i in range(0, len(supportedAccessSpecifier)): if " " not in supportedAccessSpecifier[i]: continue supportedAccessSpecifier[i] = re.sub("[ ]+", " ", supportedAccessSpecifier[i]).strip() # Strip out template declarations headerFileStr = re.sub("template[\t ]*<[^>]*>", "", headerFileStr) # Strip out #defines # Based from http://stackoverflow.com/questions/2424458/regular-expression-to-match-cs-multiline-preprocessor-statements headerFileStr = re.sub(r'(?m)^#[Dd][Ee][Ff][Ii][Nn][Ee] (?:.*\\\r?\n)*.*$', "", headerFileStr) #Filter out Extern "C" statements. These are order dependent headerFileStr = re.sub(re.compile(r'extern[\t ]+"[Cc]"[\t \n\r]*{', re.DOTALL), "namespace __IGNORED_NAMESPACE__CppHeaderParser__ {", headerFileStr) #To be ignored later headerFileStr = re.sub(r'extern[ ]+"[Cc]"[ ]*', "", headerFileStr) self.braceDepth = 0 lex.input(headerFileStr) curLine = 0 curChar = 0 try: while True: tok = lex.token() if not tok: break if tok.type == 'NAME' and tok.value in self.IGNORE_NAMES: continue if tok.type not in ('PRECOMP_MACRO', 'PRECOMP_MACRO_CONT'): self.stack.append( tok.value ) curLine = tok.lineno curChar = tok.lexpos if (tok.type == 'OPEN_BRACE'): if len(self.nameStack) >= 2 and is_namespace(self.nameStack): # namespace {} with no name used in boost, this sets default? if self.nameStack[1] == "__IGNORED_NAMESPACE__CppHeaderParser__":#Used in filtering extern "C" self.nameStack[1] = "" self.nameSpaces.append(self.nameStack[1]) ns = self.cur_namespace(); self.stack = [] if ns not in self.namespaces: self.namespaces.append( ns ) if len(self.nameStack) and not is_enum_namestack(self.nameStack): self.evaluate_stack() else: self.nameStack.append(tok.value) if self.stack and self.stack[0] == 'class': self.stack = [] self.braceDepth += 1 elif (tok.type == 'CLOSE_BRACE'): if self.braceDepth == 0: continue if (self.braceDepth == len(self.nameSpaces)): tmp = self.nameSpaces.pop() self.stack = [] # clear stack when namespace ends? if len(self.nameStack) and is_enum_namestack(self.nameStack): self.nameStack.append(tok.value) elif self.braceDepth < 10: self.evaluate_stack() else: self.nameStack = [] self.braceDepth -= 1 #self.stack = []; print 'BRACE DEPTH', self.braceDepth, 'NS', len(self.nameSpaces) if self.curClass: debug_print( 'CURBD %s'%self._classes_brace_level[ self.curClass ] ) if (self.braceDepth == 0) or (self.curClass and self._classes_brace_level[self.curClass]==self.braceDepth): trace_print( 'END OF CLASS DEF' ) if self.accessSpecifierStack: self.curAccessSpecifier = self.accessSpecifierStack[-1] self.accessSpecifierStack = self.accessSpecifierStack[:-1] if self.curClass and self.classes[ self.curClass ]['parent']: self.curClass = self.classes[ self.curClass ]['parent'] else: self.curClass = ""; #self.curStruct = None self.stack = [] #if self.curStruct: self.curStruct = None if self.braceDepth == 0 or (self.curStruct and self._structs_brace_level[self.curStruct['type']]==self.braceDepth): trace_print( 'END OF STRUCT DEF' ) self.curStruct = None if self._method_body and self.braceDepth <= self._method_body: self._method_body = None; self.stack = []; self.nameStack = []; trace_print( 'FORCE CLEAR METHBODY' ) if (tok.type == 'OPEN_PAREN'): self.nameStack.append(tok.value) elif (tok.type == 'CLOSE_PAREN'): self.nameStack.append(tok.value) elif (tok.type == 'OPEN_SQUARE_BRACKET'): self.nameStack.append(tok.value) elif (tok.type == 'CLOSE_SQUARE_BRACKET'): self.nameStack.append(tok.value) elif (tok.type == 'TAB'): pass elif (tok.type == 'EQUALS'): self.nameStack.append(tok.value) elif (tok.type == 'COMMA'): self.nameStack.append(tok.value) elif (tok.type == 'BACKSLASH'): self.nameStack.append(tok.value) elif (tok.type == 'PIPE'): self.nameStack.append(tok.value) elif (tok.type == 'PERCENT'): self.nameStack.append(tok.value) elif (tok.type == 'CARET'): self.nameStack.append(tok.value) elif (tok.type == 'EXCLAMATION'): self.nameStack.append(tok.value) elif (tok.type == 'NUMBER'): self.nameStack.append(tok.value) elif (tok.type == 'MINUS'): self.nameStack.append(tok.value) elif (tok.type == 'PLUS'): self.nameStack.append(tok.value) elif (tok.type == 'STRING_LITERAL'): self.nameStack.append(tok.value) elif (tok.type == 'NAME' or tok.type == 'AMPERSTAND' or tok.type == 'ASTERISK'): if tok.value in ignoreSymbols: debug_print("Ignore symbol %s"%tok.value) elif (tok.value == 'class'): self.nameStack.append(tok.value) elif tok.value in supportedAccessSpecifier: if len(self.nameStack) and self.nameStack[0] in ("class", "struct", "union"): self.nameStack.append(tok.value) elif self.braceDepth == len(self.nameSpaces) + 1 or self.braceDepth == (len(self.nameSpaces) + len(self.curClass.split("::"))): self.curAccessSpecifier = tok.value; self.accessSpecifierScratch.append(tok.value) debug_print("curAccessSpecifier updated to %s"%self.curAccessSpecifier) self.stack = [] else: self.nameStack.append(tok.value) elif (tok.type == 'COLON'): #Dont want colon to be first in stack if len(self.nameStack) == 0: self.accessSpecifierScratch = [] continue # Handle situation where access specifiers can be multi words such as "public slots" jns = " ".join(self.accessSpecifierScratch + self.nameStack) if jns in supportedAccessSpecifier: self.curAccessSpecifier = jns; debug_print("curAccessSpecifier updated to %s"%self.curAccessSpecifier) self.stack = [] self.nameStack = [] else: self.nameStack.append(tok.value) self.accessSpecifierScratch = [] elif (tok.type == 'SEMI_COLON'): if (self.braceDepth < 10): self.evaluate_stack( tok.type ) if not self.stack: continue if self.stack[0]=='typedef' and ( '{' not in self.stack or '}' in self.stack ): self.stack = []; trace_print( "REAL CLEAR") elif self.stack[0] != 'typedef': self.stack = []; trace_print('CLEAR STACK') except: if (debug): raise raise CppParseError("Not able to parse %s on line %d evaluating \"%s\"\nError around: %s" % (self.headerFileName, tok.lineno, tok.value, " ".join(self.nameStack))) self.finalize() def evaluate_stack(self, token=None): """Evaluates the current name stack""" global doxygenCommentCache debug_print( "Evaluating stack %s\n BraceDepth: %s (called from %d)" %(self.nameStack,self.braceDepth, inspect.currentframe().f_back.f_lineno)) #Handle special case of overloading operator () if "operator()(" in "".join(self.nameStack): operator_index = self.nameStack.index("operator") self.nameStack.pop(operator_index + 2) self.nameStack.pop(operator_index + 1) self.nameStack[operator_index] = "operator()" if (len(self.curClass)): debug_print( "%s (%s) "%(self.curClass, self.curAccessSpecifier)) #Filter special case of array with casting in it try: bracePos = self.nameStack.index("[") parenPos = self.nameStack.index("(") if bracePos == parenPos - 1: endParen = self.nameStack.index(")") self.nameStack = self.nameStack[:bracePos + 1] + self.nameStack[endParen + 1:] debug_print("Filtered namestack to=%s"%self.nameStack) except: pass #if 'typedef' in self.nameStack: self.evaluate_typedef() # allows nested typedefs, probably a bad idea if not self.curClass and 'typedef' in self.nameStack: trace_print('STACK', self.stack) if token == 'SEMI_COLON' and ('{' not in self.stack or '}' in self.stack): self.evaluate_typedef() else: return elif (len(self.nameStack) == 0): debug_print( "trace" ) debug_print( "(Empty Stack)" ) return elif (self.nameStack[0] == "namespace"): #Taken care of outside of here pass elif self.nameStack[0] == "friend": pass elif len(self.nameStack) >= 2 and self.nameStack[0] == 'using' and self.nameStack[1] == 'namespace': pass # TODO elif is_enum_namestack(self.nameStack): debug_print( "trace" ) self.evaluate_enum_stack() elif self._method_body and self.braceDepth > self._method_body: trace_print( 'INSIDE METHOD DEF' ) elif is_method_namestack(self.stack) and not self.curStruct and '(' in self.nameStack: debug_print( "trace" ) if self.braceDepth > 0: if "{" in self.stack and self.stack[0] != '{' and self.stack[-1] == ';' and self.braceDepth == 1: #Special case of a method defined outside a class that has a body pass else: self.evaluate_method_stack() else: #Free function self.evaluate_method_stack() elif is_property_namestack(self.nameStack) and self.stack[-1] == ';': debug_print( "trace" ) if self.nameStack[0] in ('class', 'struct') and len(self.stack) == 3: self.evalute_forward_decl() elif len(self.nameStack) >= 2 and (self.nameStack[0]=='friend' and self.nameStack[1]=='class'): pass else: self.evaluate_property_stack() # catches class props and structs in a namespace elif self.nameStack[0] in ("class", "struct", "union"): #Parsing a union can reuse much of the class parsing debug_print( "trace" ) self.evaluate_class_stack() #elif (self.nameStack[0] == "struct"): # debug_print( "trace" ) ##this causes a bug when structs are nested in protected or private##self.curAccessSpecifier = "public" # self.evaluate_struct_stack() elif not self.curClass: debug_print( "trace" ) if is_enum_namestack(self.nameStack): self.evaluate_enum_stack() elif self.curStruct and self.stack[-1] == ';': self.evaluate_property_stack() # this catches fields of global structs self.nameStack = [] doxygenCommentCache = "" return elif (self.braceDepth < 1): debug_print( "trace" ) #Ignore global stuff for now debug_print( "Global stuff: %s"%self.nameStack ) self.nameStack = [] doxygenCommentCache = "" return elif (self.braceDepth > len(self.nameSpaces) + 1): debug_print( "trace" ) self.nameStack = [] doxygenCommentCache = "" return self.nameStack = [] # its a little confusing to have some if/else above return and others not, and then clearning the nameStack down here doxygenCommentCache = "" def evaluate_enum_stack(self): """Create an Enum out of the name stack""" newEnum = CppEnum(self.nameStack) if len(newEnum.keys()): if len(self.curClass): newEnum["namespace"] = self.cur_namespace(False) klass = self.classes[self.curClass] klass["enums"][self.curAccessSpecifier].append(newEnum) if self.curAccessSpecifier == 'public' and 'name' in newEnum: klass._public_enums[ newEnum['name'] ] = newEnum else: newEnum["namespace"] = self.cur_namespace(True) self.enums.append(newEnum) if 'name' in newEnum and newEnum['name']: self.global_enums[ newEnum['name'] ] = newEnum #This enum has instances, turn them into properties if newEnum.has_key("instances"): instanceType = "enum" if newEnum.has_key("name"): instanceType = newEnum["name"] for instance in newEnum["instances"]: self.nameStack = [instanceType, instance] self.evaluate_property_stack() del newEnum["instances"] def __repr__(self): rtn = "" for className in self.classes.keys(): rtn += "%s\n"%self.classes[className] if self.functions: rtn += "// functions\n" for f in self.functions: rtn += "%s\n"%f return rtn dolfin-1.3.0/site-packages/dolfin_utils/cppparser/__init__.pyc0000644000175000017500000000044212263015065024334 0ustar johannrjohannró ÌRc@sddlmZddlTdS(iÿÿÿÿ(t CppHeader(t*N(tCppHeaderParserRtutils(((si/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/__init__.pytsdolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyc0000644000175000017500000017724212263015065025622 0ustar johannrjohannró ÌRc@s”dZddljZddlZddlZddlZddlZd„ZdZZ ddddd d d d d ddddddddddddddddddd d!d"gZ d#Z d$Z d%Z d&Zd'Zd(Zd)Zd*Zd+Zd,Zd-Zd.Zd/Zd0Zd1Zd2Zd3Zd4Zd5Zd6Zd7„Zd8Z d9Z!d:Z"d;Z#d<Z$d=Z%d>Z&d?Z'd@„Z(dA„Z)dB„Z*ejƒdCZ+dDZ,dDa-dDa.dE„Z/dF„Z0dG„Z1dH„Z2dIdJdKgZ3dLgZ4dMa5ga6dN„Z7dO„Z8dP„Z9dQ„Z:dR„Z;dS„Z<dTe=fdU„ƒYZ>dVe?fdW„ƒYZ@dXe@fdY„ƒYZAdZe?fd[„ƒYZBd\eBfd]„ƒYZCd^e?fd_„ƒYZDd`eDfda„ƒYZEdbe?fdc„ƒYZFddeFfde„ƒYZGdfe?fdg„ƒYZHi dhdi6djdk6dldm6dndo6dpdq6drds6dtdu6dpdv6dwdx6ZIdy„ZJdzeKfd{„ƒYZLd|eLfd}„ƒYZMd~eMfd„ƒYZNdS(€sLParse C++ header files and generate a data structure representing the class iÿÿÿÿNcCstjƒjjS(s/Returns the current line number in our program.(tinspectt currentframetf_backtf_lineno(((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pytlineno:ss2.1tNUMBERtNAMEt OPEN_PARENt CLOSE_PARENt OPEN_BRACEt CLOSE_BRACEtOPEN_SQUARE_BRACKETtCLOSE_SQUARE_BRACKETtCOLONt SEMI_COLONtCOMMAtTABt BACKSLASHtPIPEtPERCENTt EXCLAMATIONtCARETtCOMMENT_SINGLELINEtCOMMENT_MULTILINEt PRECOMP_MACROtPRECOMP_MACRO_CONTtASTERISKt AMPERSTANDtEQUALStMINUStPLUStDIVIDEt CHAR_LITERALtSTRING_LITERALtNEW_LINEs .?@'s[0-9][0-9XxA-Fa-f]*s[<>A-Za-z_~][A-Za-z0-9_]*s\(s\)t{t}s\[s\]t;t:t,s\ts\\s\|t%s\^t!s\#.*s.*\\\ncCsq|jjdƒs$|jjdƒrmtr7td7an|jjdƒr]t|jd 7aqmt|j7andS(s\/\/.*\ns///s//!s iÿÿÿÿN(tvaluet startswithtdoxygenCommentCachetendswith(tt((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pytt_COMMENT_SINGLELINEus $ s\*s\-s\+s/[^/]t&t=s'.'s"([^"\\]|\\.)*"cCs_|jjdƒs$|jjdƒr[|jjddƒ}tjdd|ƒ}t|7andS(s)/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/s/**s/*!s s s [\s]+\*s *N(R*R+treplacetretsubR,(R.tv((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pytt_COMMENT_MULTILINEŠs$cCs|jjt|jƒ7_dS(s\n+N(tlexerRtlenR*(R.((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyt t_NEWLINE“scCsd|fGHdS(Ns Lex error: ((R5((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pytt_error—siicCs(tr$dtjƒjj|fGHndS(Ns[%4d] %s(t print_errorsRRRR(targ((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyt error_print¤scCs(tr$dtjƒjj|fGHndS(Ns[%4d] %s(tprint_warningsRRRR(R<((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyt warning_print§scCs(tr$dtjƒjj|fGHndS(Ns[%4d] %s(tdebugRRRR(R<((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyt debug_printªscGsbtr^tjjdtjƒjjƒx"|D]}tjjd|ƒq-WtjjdƒndS(Ns[%s] s%s s (t debug_tracetsyststdouttwriteRRRR(R<ta((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyt trace_print®s   tpublict protectedtprivatetQ_OBJECTtcCs.t|ƒdkrtS|ddkr*tStS(s,Determines if a namespace is being specifiedit namespace(R8tFalsetTrue(t nameStack((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyt is_namespaceÅs cCsdt|ƒdkrtS|ddkr*tSt|ƒdkr`|ddkr`|ddkr`tStS(s.Determines if a namestack is an enum namestackitenumittypedef(R8RNRO(RP((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pytis_enum_namestackÍs2cCs+x$|jƒD]}|dkr tSq WtS(Ntsize_ttstructtuniontunsignedtsignedtbooltchartshorttinttfloattdoubletlongtvoidt*(RUsstructsunionRXRYsboolscharR\sintsfloatR_slongsvoidRb(tsplitRNRO(tsRF((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pytis_fundamental×s cCsÝd}d}t}d}x¤|D]œ}|dkr>|d7}nw|dkr||dkr||d8}|dkrµ|d7}qµn9|dkrµ|dkrµ|dkrµ|dkrµt}n|}qW|rÕ|dkrÕtStSdS(spCount how many non-nested paranthesis are in the stack. Useful for determining if a stack is a function pointerit(it)RbiN(RNtNoneRO(tstackt paren_deptht paren_counttstar_after_first_parentlast_ete((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pytis_function_pointer_stackÜs"     0  c CsYt}d|krt}næ|ddkr4t}nÍd|krIt}n¸d|kr||jdƒ|jdƒkr|t}n…d|krûd|krûd|krµd|krµt}q|dd krãt|ƒrÚt}qøt}qd|krt}qnt}|rUd|krUd |krUd|krU|jd ƒ|jdƒkrUt}qUn|S( NRfiRStoperatorR#RgR$iÿÿÿÿR%R1(RNROtindexRo(Ritr((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pytis_method_namestackòs.   *      * cCs†t}d|kr'd|kr't}n?d|krfd|krf|jdƒ|jdƒkrft}n| r‚t|ƒr‚t}n|S(NRfRgR1(RNRORqRo(RPRr((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pytis_property_namestacks 6  t CppParseErrorcBseZRS((t__name__t __module__(((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyRustCppClasscBs\eZdZd„Zd„Zd„Zdd„Zdd„Zd„Zd„Z d „Z RS( spTakes a name stack and turns it into a class Contains the following Keys: self['name'] - Name of the class self['doxygen'] - Doxygen comments associated with the class if they exist self['inherits'] - List of Classes that this one inherits where the values are of the form {"access": Anything in supportedAccessSpecifier "class": Name of the class self['methods'] - Dictionary where keys are from supportedAccessSpecifier and values are a lists of CppMethod's self['properties'] - Dictionary where keys are from supportedAccessSpecifier and values are lists of CppVariable's self['enums'] - Dictionary where keys are from supportedAccessSpecifier and values are lists of CppEnum's self['structs'] - Dictionary where keys are from supportedAccessSpecifier and values are lists of nested Struct's An example of how this could look is as follows: #self = { 'name': "" 'inherits':[] 'methods': { 'public':[], 'protected':[], 'private':[] }, 'properties': { 'public':[], 'protected':[], 'private':[] }, 'enums': { 'public':[], 'protected':[], 'private':[] } } cCs-g}x tD]}||d|7}q W|S(Ntmethods(tsupportedAccessSpecifier(tselfRrttyp((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pytget_all_methods=s cCs.g}x!tD]}||j|ƒ7}q W|S(N(Rztget_method_names(R{RrR|((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pytget_all_method_namesBs cCs1i}x$tD]}|j|j|ƒƒq W|S(N(Rztupdatetget_pure_virtual_methods(R{RrR|((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pytget_all_pure_virtual_methodsGs RHcCs#g|d|D]}|d^qS(NRytname((R{ttypetmeth((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyR~MscCs>i}x1|d|D]!}|dr|||dR&RJtaccesstvirtualR'tclasss*Warning: can not parse inheriting class %st iÿÿÿÿRVs::tinheritsRyt propertiestenumststructsttypedefstforward_declares(Rsstruct(RhRNt _public_enumst_public_structst_public_typedefst_public_forward_declaresRAR8tinsertR,R+ROtjoinRqtcounttrangetappendR?tNotImplementedRz(R{RPtopen_template_counttparam_separatort found_firsttitelmt inheritListttmpStackttmpInheritClasst tmpStack2t superTmpStackttoktinheritNSStacktmethodAccessSpecificListtpropertyAccessSpecificListtenumAccessSpecificListtstructAccessSpecificListttypedefAccessSpecificListtforwardAccessSpecificListtaccessSpecifier((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyt__init__Usæ           %        (   %      "            cCsUd}|dr!|dd}nd|d||df}|drT|d7}n |d 7}d |jƒkr…||d d 7}nd |jƒkrº|d rº|d |d d 7}nd |jƒkr+|d7}xE|d D]9}|drþ|d7}n|d|d|df7}qáW|d 7}n|d7}x tD]}|d|7}t|d|ƒrq|d7}nx*|d|D]}|dt|ƒ7}q€Wt|d|ƒr¿|d7}nx*|d|D]}|dt|ƒ7}qÎWt|d|ƒr |d7}nx.|d|D]}|d|jƒd 7}qWq<W|d7}|GHdS( sConvert class to a stringRLRMs::s%s %stdeclaration_methodRƒR‰s (abstract) s RŠRˆsparent class: R‘s Inherits: RŽsvirtual s%s %s, RRs { s %s R“s s %s R’s Rys s s } N(tkeysRzR8treprtshow(R{tnamespace_prefixtrtnt inheritClassR³RRtpropertytmethod((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyR¸ÛsF              cCsdd}|dr!|dd}nd|d||df}|drT|d7}n |d 7}d |jƒkr…||d d 7}nd |jƒkrº|d rº|d |d d 7}nd |jƒkrCt|d ƒrC|d7}xM|d D]A}|jdtƒr|d7}n|d|d|df7}qñW|d 7}n|d7}xtD]þ}|d|7}t|d|ƒr‰|d7}nx*|d|D]}|dt|ƒ7}q˜Wt|d|ƒr×|d7}nx*|d|D]}|dt|ƒ7}qæWt|d|ƒr%|d7}nx*|d|D]}|dt|ƒ7}q4WqTW|d7}|S(sConvert class to a stringRLRMs::s%s %sRµRƒR‰s (abstract) s RŠRˆsparent class: R‘s Inherits: RŽsvirtual s%s %s, RRs{ s%s R“s // Enums s %s R’s // Properties Rys // Methods s %s s} (R¶R8tgetRNRzR·(R{R¹RºR»R³RRR¼R½((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyt__repr__sF   "          ( RvRwt__doc__R}RR‚R~RR´R¸R¿(((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyRxs*      † &tCppUnioncBs2eZdZd„Zd„Zd„Zd„ZRS(s{Takes a name stack and turns it into a union Contains the following Keys: self['name'] - Name of the union self['doxygen'] - Doxygen comments associated with the union if they exist self['members'] - List of members the union has An example of how this could look is as follows: #self = { 'name': "" 'members': [] } cCs8tj||ƒd|d|d<|dd|dt |ƒD]0}|dkrút |dRŒs>>s> >s ,R'tconstRgR&sStripping out initializer lists s @param s \param sparam is @return s eturn t doxyVarDescRÚ(RAR8R,RœRqR+tstripR2RNtreversedROR€RžRÐthas_keyRctfindt CppVariableR¶RŸR×(R{RPtcurClasstmethinfoR¤tparen_depth_counterR¥t paramsStackRÔRÞt doxyLinest lastParamDesctdoxyLinetvartdescR¡R¢tparam((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyR´¢s´     /$0!& 2                       cs0d‰t‡fd†|jƒDƒƒ}d|S(NRˆtdefinedRptreturns_referencec3s-|]#\}}|ˆkr||fVqdS(N((t.0tkR5(t filter_keys(sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pys ss%s(sparentRîsoperatorRï(tdicttitems(R{tcpy((Ròsp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyR¿s"(RvRwRÀR¸R´R¿(((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyRØs lt _CppVariablecBseZd„Zd„ZRS(cCsÑt|ƒ}d|kr«g}x-|rM|djƒrM|j|jƒƒq!W|rz|jƒtdj|ƒƒ|ds>>s> >s ,R'RÞRì(RŒR‹R&R(RqR8RûR,RAR=tAssertionErrorRoRœReR2RÿRãtVarsRŸ(R{RPtkwargst_stack_t arrayStack((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyR´:sZ          50  $$'  2 csedddddddg‰t‡fd†|jƒDƒƒ}|jd ƒr]|d |d usRs%s(RóRôRá(R{Rõ((Rsp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyR¿ss "(RvRwRÀRR´R¿(((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyRã-s  9t_CppEnumcBseZd„ZRS(cCs{t}d}g|D]}|d^q}xK|D]C}d|kr_|djƒ}|jƒjdƒr‹yt|dƒ}}Wq+q+Xn |jƒrªt|ƒ}}n||krìxr|D](}|d|kr½|d|d|r×t|ƒ|d<|dsÕ|d dd||dt‚|dtkred |dR@RNR?RJRQRnRd(((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyRÑÿs    , . ït _CppHeadercBs\eZd„Zd„Zd„Zd„Zdd„Zd„Zd„Zd„Z d „Z RS( c Cs¾|jƒxŸ|jjƒD]Ž}x…|jƒD]w}|drJt|d s> s >RŒs>>s> >R@RRBRMs¤defined pure_virtual operator constructor destructor extern template virtual static explicit inline friend returns returns_pointer returns_fundamental returns_classRfR#RîsNEW METHOD WITH BODYiÿÿÿÿR%iiþÿÿÿt0iýÿÿÿR1R†RpRLRgs()sError parsing operatorR$t~RÛRÉRƒs,extern virtual static explicit inline friendRXRÙs RRƒRmR„RVs::(RøRúRùRqReRc(R{RiRMtidxRƒRdRFRr((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyt_parse_typedef‰s2   #    cCsq|jdtƒ}|j|j|ƒ}|rm|d}|d|j|<||jkrm|jj|ƒqmndS(NRBRƒR„(R?ROR‘RiR•R3RŸ(R{RÖtresRƒ((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pytevaluate_typedef s cCs;|jddkst‚|jddkr¾|jr¯|j|jƒ}|d}|j|j}|d|jj|ƒ|jdkrœ|d|j|krˆtd4| j,ƒqì | j,dkr­|jj/| j,ƒqì | j,t kr} t|jƒrô|jd dCkrô|jj/| j,ƒn}|j&t|jƒdks> |j&t|jƒt|j j d7ƒƒkrq | j,|_|jj/| j,ƒtd8|jƒng|_.qì |jj/| j,ƒq:| j+d9kr9 t|jƒd krÆ g|_q:nd j|j|jƒ} | t kr | |_td8|jƒg|_.g|_n|jj/| j,ƒg|_q:| j+d:kr:|j&dkrj |j6| j+ƒn|j.sy q:n|j.d d;krÀ d<|j.ksª d=|j.krÀ g|_.t9d>ƒqì |j.d d;krì g|_.t9d?ƒqì q:q:WWnDt?r ‚nt@d@|j| j0| j,d j|jƒfƒ‚nX|jAƒdAS(Ds)Create the parsed C++ header file parse tree headerFileName - Name of the file to parse OR actual file contents (depends on argType) argType - Indicates how to interpret headerFileName as a file string or file name kwargs - Supports the following keywords RLRŸiiþÿÿÿRGs???s&Arg type must be either file or stringRJs*curAccessSpecifier changed/defaulted to %siRs[ ]+stemplate[ ]*<[^>]*>s0(?m)^#[Dd][Ee][Ff][Ii][Nn][Ee] (?:.*\\\r?\n)*.*$sextern[\t ]+"[Cc]"[\t \n\r]*{s2namespace __IGNORED_NAMESPACE__CppHeaderParser__ {sextern[ ]+"[Cc]"[ ]*RRRR it&__IGNORED_NAMESPACE__CppHeaderParser__RR i sCURBD %ssEND OF CLASS DEFiÿÿÿÿRˆR„sEND OF STRUCT DEFsFORCE CLEAR METHBODYRRR R RRRRRRRRRRRR!RRsIgnore symbol %sRVRWs::s curAccessSpecifier updated to %sR RRSR#R$s REAL CLEARs CLEAR STACKs@Not able to parse %s on line %d evaluating "%s" Error around: %sN(RR(sclasssstructsunion(BR,RãRR#R%tosRZt expandvarstheaderFileNameRct mainClasst ExceptionRäRÑRÓRRRŒR“ReRPRAR|R™taccessSpecifierScratchRAR>R8topenRœt readlinestcloseRžRzR3R4RßtcompiletDOTALLR}tlextinputROttokenR„R*t IGNORE_NAMESRiRŸRtlexposRQR?R7RTtevaluate_stackRúR9RGR8R:RhR;t ignoreSymbolsR@RuR{( R{R£targTypeRt headerFileStrtfdR¤tcurLinetcurCharR«RÖttmptjns((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyR´sZ                        '$    !  $       1    5   -"J         1  /c Csútd|j|jtjƒjjfƒddj|jƒkr‹|jjdƒ}|jj |dƒ|jj |dƒd|j|t |jƒdkrÖtdƒtdƒdS|jddkrìnû|jddkrnåt |jƒdkr@|jddkr@|jddkr@n§t|jƒrftdƒ|jƒn|jrŽ|j|jkrŽt dƒnYt|jƒr0|j r0d |jkr0tdƒ|jdkr#d|jkr|jddkr|jddkr|jdkrq-|jƒqç|jƒn·t|jƒrÜ|jddkrÜtdƒ|jdd!kr‘t |jƒdkr‘|jƒqçt |jƒdkrÏ|jddkrÏ|jddkrÏqç|jƒn |jdd"krtdƒ|jƒná|j sqtdƒt|jƒr5|jƒn)|jr^|jddkr^|jƒng|_dadS|jdkr®tdƒtd |jƒg|_dadS|jt |jƒdkrçtdƒg|_dadSg|_dadS(#s Evaluates the current name stacks:Evaluating stack %s BraceDepth: %s (called from %d)s operator()(RLRpiis operator()s%s (%s) RRfRgsFiltered namestack to=%sRStSTACKRR#R$Nittraces (Empty Stack)RMtfriendtusingsINSIDE METHOD DEFiÿÿÿÿR%RRViRWsGlobal stuff: %s(sclasssstruct(sclasssstructsunion(RARPR}RRRRRœRqRúR8RäR|RGRiR“RTtevaluate_enum_stackR;RsR8RRtRœR˜R›R,RA(R{R®toperator_indextbracePostparenPostendParen((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyR±âs˜)#*   ;   ( D  " ( ;             cCsZt|jƒ}t|jƒƒrVt|jƒr|jtƒ|d<|j|j}|d|jj |ƒ|jdkrêd|krê||j |dR@RBR=R?RARGRzR²R,RRQRTReRoRsRtR¥RuRóRxRÁRÆRØRöRãRRR#R1R2tobjectRÑRpR(((sp/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/cppparser/CppHeaderParser.pyt1sê                      ÿ26„L+A  ÿ{ÿ˜dolfin-1.3.0/site-packages/dolfin_utils/ordereddict.py0000644000175000017500000001017512263014601022722 0ustar johannrjohannr# Copyright (c) 2009 Raymond Hettinger # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation files # (the "Software"), to deal in the Software without restriction, # including without limitation the rights to use, copy, modify, merge, # publish, distribute, sublicense, and/or sell copies of the Software, # and to permit persons to whom the Software is furnished to do so, # subject to the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. from UserDict import DictMixin class OrderedDict(dict, DictMixin): def __init__(self, *args, **kwds): if len(args) > 1: raise TypeError('expected at most 1 arguments, got %d' % len(args)) try: self.__end except AttributeError: self.clear() self.update(*args, **kwds) def clear(self): self.__end = end = [] end += [None, end, end] # sentinel node for doubly linked list self.__map = {} # key --> [key, prev, next] dict.clear(self) def __setitem__(self, key, value): if key not in self: end = self.__end curr = end[1] curr[2] = end[1] = self.__map[key] = [key, curr, end] dict.__setitem__(self, key, value) def __delitem__(self, key): dict.__delitem__(self, key) key, prev, next = self.__map.pop(key) prev[2] = next next[1] = prev def __iter__(self): end = self.__end curr = end[2] while curr is not end: yield curr[0] curr = curr[2] def __reversed__(self): end = self.__end curr = end[1] while curr is not end: yield curr[0] curr = curr[1] def popitem(self, last=True): if not self: raise KeyError('dictionary is empty') if last: key = reversed(self).next() else: key = iter(self).next() value = self.pop(key) return key, value def __reduce__(self): items = [[k, self[k]] for k in self] tmp = self.__map, self.__end del self.__map, self.__end inst_dict = vars(self).copy() self.__map, self.__end = tmp if inst_dict: return (self.__class__, (items,), inst_dict) return self.__class__, (items,) def keys(self): return list(self) setdefault = DictMixin.setdefault update = DictMixin.update pop = DictMixin.pop values = DictMixin.values items = DictMixin.items iterkeys = DictMixin.iterkeys itervalues = DictMixin.itervalues iteritems = DictMixin.iteritems def __repr__(self): if not self: return '%s()' % (self.__class__.__name__,) return '%s(%r)' % (self.__class__.__name__, self.items()) def copy(self): return self.__class__(self) @classmethod def fromkeys(cls, iterable, value=None): d = cls() for key in iterable: d[key] = value return d def __eq__(self, other): if isinstance(other, OrderedDict): if len(self) != len(other): return False for p, q in zip(self.items(), other.items()): if p != q: return False return True return dict.__eq__(self, other) def __ne__(self, other): return not self == other dolfin-1.3.0/site-packages/dolfin_utils/pjobs/0000755000175000017500000000000012263014601021171 5ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin_utils/pjobs/__init__.py0000644000175000017500000000003112263014601023274 0ustar johannrjohannrfrom pjobs import submit dolfin-1.3.0/site-packages/dolfin_utils/pjobs/pjobs.py0000644000175000017500000002076012263014601022665 0ustar johannrjohannr#!/usr/bin/env python # Copyright (C) 2009 Martin Sandve Alnes # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # Modified Johan Hake 2011 # Modified Johannes Ring 2013 import torque import sge import slurm import os import subprocess import re def check_mem_argument(mem, backend): if backend == "slurm": allowed_mem_suffices = ["k","m","g","K","M","G"] else: allowed_mem_suffices = ["kb","mb","gb"] if not mem is None: assert isinstance(mem,str) match = re.match("(\d+)(\w+)", mem) if not match: return False if match.groups()[1] not in allowed_mem_suffices: return False try: memory = int(match.groups()[0]) if memory < 0: return False except: return False return True def sjoin(*items): "Join str() of all arguments." return "".join(map(str,items)) def submit(jobs, nodes=1, ppn=1, walltime=3, mem=None, vmem=None, name="myjob", \ workdir=".", email=None, paths=(), setup="", \ keep_environment=True, serial=None, nice=None, dryrun=False, \ queue=None, parallel_environment=None, backend="torque"): """Submit a sequence of commands to the queue using qsub/sbatch. Example use: from pjobs import submit, sjoin for n in (10,20,30): for h in (0.1, 0.01, 0.005): dt = 0.1*h jobs.append("pmpirun.openmpi mysimulator -n%d -h%f -dt%f" % (n, h, dt)) submit(jobs, nodes=4, ppn=8, walltime=24*7) Arguments: @param jobs: A list of commands (strings) to pass to the queue for separate execution. @param nodes: Number of compute nodes to use. Default is 1 node. @param ppn: Number of processors per node to use. Default is 1 processor. @param walltime: Maximum amount of real-life time the job can use, in hours. Default is 3. @param mem: Optional maximum amount of physical memory the process will need. The syntax is mem='100mb', or mem='4gb', with allowed suffices one of 'kb', 'mb' or 'gb' for the torque and the sge backends, and one of 'k', 'm', 'g', 'K', 'M', 'G' for the slurm backend. Only int values is allowed. @param vmem: Optional maximum amount of virtual memory the process will need. For syntax see mem. (not available for the slurm backend) @param name: Basename of the job, just for the queue system. If a single string this will be combined with a counter to separate multiple jobs. A list or tuple of strings can be provided instead to define separate names for each job. Default is 'myjob'. @param email: Your email address if you want email when the jobs are started and stopped. @param workdir: The directory the jobs will be run in. Default is the place you commit the job from @param paths: A list of directories to add to the $PATH. @param setup: Optional additional job script contents for setting up e.g. environment variables before each job. @param keep_environment: True if you want to copy all current environment variables to the job environment (PBS -V option). Default True. @param serial: True if you want to run the jobs as a serial sequence of processes instead of passing them to the qsub queue. Default is False, unless the environment variable PJOBS_SERIAL=1 is defined in which case the default is True. @param nice: Optional nice value (int) used for all jobs when running in serial. If provided, "nice -n %d" % nice is added before each job command. @param dryrun: True if you want to test this script but not send jobs to the queue. @param queue: Set a particular queue to be used when submitting (only available for the sge backend) @param parallel_environment: Set the parallel environment (PE) of the submitting backend (only available for the sge backend) @param backend: Set the name of the actuall submitter. Available backends: 'torque' (default), 'sge' and 'slurm' """ if isinstance(jobs, str): jobs = [jobs] assert all(isinstance(job, str) for job in jobs) assert isinstance(nodes, int) assert isinstance(ppn, int) assert isinstance(walltime, (int, float)) if not check_mem_argument(mem, backend): raise TypeError, "Wrong format of mem attribute, see docstring" if not check_mem_argument(vmem, backend): raise TypeError, "Wrong format of vmem attribute, see docstring" assert isinstance(name, (str, list, tuple)) assert isinstance(workdir, str) assert email is None or isinstance(email, str) if serial is None: # Get environment variable to toggle serial behaviour serial = bool(os.environ.get("PJOBS_SERIAL", False)) assert isinstance(serial, bool) # Check queue and PE queue = queue or "" parallel_environment = parallel_environment or "" assert isinstance(queue, str) assert isinstance(parallel_environment, str) # Check backend assert isinstance(backend, str) assert (backend in ["torque", "sge", "slurm"]) # Shared setup paths = "PATH=$PATH:" + ":".join(paths) if paths else "" # Modify options to make sense in serial if serial: if paths: print "TODO: Not using paths for serial job." if setup: print "TODO: Not using setup for serial job." if workdir == ".": workdir = os.getcwd() workdir = os.path.abspath(workdir) if nice is not None: jobs = ["nice -n %d %s" % (nice, job) for job in jobs] else: workdir = os.path.abspath(workdir) # Define range of names if only a single name is provided if isinstance(name, str): names = ["%s_%d" % (name, k) for k in range(len(jobs))] else: names = name # Enter workdir origdir = os.getcwd() try: if serial: os.chdir(workdir) # Queue sequence of jobs for job, jobname in zip(jobs, names): if serial: # Execute job in separate process cmd = job if dryrun: print "NOT calling job command:", cmd else: print "Calling job command:", cmd # Pass process output to file f #f = open("%s_stdout" % jobname, "w") subprocess.call(cmd.split()) #f.close() else: job_script = globals()[backend].job_script(job, jobname, nodes, \ ppn, walltime, mem, \ vmem, workdir, email, paths,\ setup, keep_environment,\ queue, parallel_environment) # Write job script to file scriptfilename = "run_%s.sh" % jobname f = open(scriptfilename, "w") f.write(job_script) f.close() print "Wrote file ", scriptfilename # Queue the generated job script if backend == "slurm": cmd = ["sbatch"] + [scriptfilename] else: cmd = ["qsub"] + [scriptfilename] if dryrun: print "NOT calling queue command:", " ".join(cmd) else: print "Calling queue command:", " ".join(cmd) subprocess.call(cmd) os.unlink(scriptfilename) finally: os.chdir(origdir) dolfin-1.3.0/site-packages/dolfin_utils/pjobs/torque.py0000644000175000017500000000415512263014601023067 0ustar johannrjohannr#!/usr/bin/env python # Copyright (C) 2009 Martin Sandve Alnes # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # Modified Johan Hake 2011 import os # Template for script sent to qsub template = """#!/bin/bash %(pbs)s # enter the job-directory cd %(workdir)s # add /usr/local/bin in path PATH=$PATH:/usr/local/bin # setup environment %(paths)s %(setup)s # execute job %(job)s """ def job_script(job, jobname, nodes, ppn, walltime, mem, vmem, workdir, \ email, paths, setup, keep_environment, queue, parallel_environment): """ Generate a torque specific job script """ if queue or parallel_environment: print "Warning: 'queue' and 'parallel_environment' is not available "\ "for the 'torque' backend" # Set working dir if workdir == os.path.abspath(os.getcwd()): workdir = "$PBS_O_WORKDIR" pbs = [] pbs.append("-j oe") pbs_resources = "-lnodes=%d:ppn=%d,walltime=%d:00:00" % (nodes, ppn, walltime) if mem: pbs_resources += ",mem=" + mem if vmem: pbs_resources += ",vmem=" + vmem pbs.append(pbs_resources) if email: pbs.append("-m abe") pbs.append("-M %s" % email) pbs.append("-N %s" % jobname) if keep_environment: pbs.append("-V") pbs.append("") pbs = "\n".join("#PBS %s" % a for a in pbs) args = dict(pbs=pbs, workdir=workdir, paths=paths, setup=setup, job=job) return template % args dolfin-1.3.0/site-packages/dolfin_utils/pjobs/sge.py0000644000175000017500000000512512263014601022324 0ustar johannrjohannr#!/usr/bin/env python # Copyright (C) 2011 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # Template for script sent to qsub template = """#!/bin/sh # Your job name #$ -N %(jobname)s # Resources #$ -l %(resources)s # enter the job-directory cd %(workdir)s # Use current working directory #$ -cwd # Join stdout and stderr #$ -j y # Execute in current environment %(environment)s # Set queue #$ -q %(queue)s # Set your number of processors here. # Requests mpich environment although we actually are using openmpi #$ -pe %(PE)s %(np)d # add /usr/local/bin in path PATH=$PATH:/usr/local/bin # Run job through bash shell #$ -S /bin/bash # setup environment %(paths)s %(setup)s %(job)s """ def job_script(job, jobname, nodes, ppn, walltime, mem, vmem, workdir, \ email, paths, setup, keep_environment, queue, parallel_environment): """ Generate a sge specific job script """ # Set default queue queue = queue or "all.q" # Check environment if not parallel_environment: raise RuntimeError("expected proper values for 'parallel_environment'. "\ "Check available environments using: qconf -spl") # Set resources resources="cpu=%d:00:00"%walltime if mem: mem = mem.replace("b", "").upper() resources += ",mem_free=" + mem if vmem: vmem = vmem.replace("b", "").upper() resources += ",h_vmem=" + vmem # Issue warnings on not supported arguments if email: print "Warning: 'email' is not supported for the 'sge' backend" args = dict(jobname=jobname, resources=resources, environment="#$ -V" if keep_environment else "# No", queue=queue, PE=parallel_environment, np = nodes*ppn, # FIXME: Is this the correct way to set this? workdir=workdir, paths=paths, setup=setup, job=job) return template % args dolfin-1.3.0/site-packages/dolfin_utils/pjobs/slurm.py0000644000175000017500000000353112263014601022707 0ustar johannrjohannr#!/usr/bin/env python # Copyright (C) 2013 Johannes Ring # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . template = """#!/bin/bash %(sbatch)s %(paths)s %(setup)s %(job)s """ def job_script(job, jobname, nodes, ppn, walltime, mem, vmem, workdir, \ email, paths, setup, keep_environment, queue, parallel_environment): """ Generate a slurm specific job script. """ sbatch = "#SBATCH --job-name=" + jobname sbatch += " --time=%d:00:00" % walltime sbatch += " --ntasks=" + str(nodes) sbatch += " --cpus-per-task=" + str(ppn) if mem: sbatch += " --mem-per-cpu=" + mem if email: sbatch += " --mail-user=" + email if keep_environment: sbatch += " --get-user-env" # Issue warnings on not supported arguments if vmem: print "Warning: 'vmem' is not supported for the 'slurm' backend" if queue: print "Warning: 'queue' is not supported for the 'slurm' backend" if parallel_environment: print "Warning: 'parallel_environment' is not supported for the 'slurm' backend" args = dict(sbatch=sbatch, workdir=workdir, paths=paths, setup=setup, job=job) return template % args dolfin-1.3.0/site-packages/dolfin_utils/commands.py0000644000175000017500000000303712263014601022232 0ustar johannrjohannr# Copyright (C) 2009 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Johannes Ring, 2009. # # First added: 2009-09-16 # Last changed: 2009-09-16 from subprocess import Popen, PIPE, STDOUT # These are taken from http://ivory.idyll.org/blog/mar-07/replacing-commands-with-subprocess __all__ = ['getoutput', 'getstatusoutput'] def getoutput(cmd): "Replacement for commands.getoutput which does not work on Windows." pipe = Popen(cmd, shell=True, stdout=PIPE, stderr=STDOUT, bufsize=-1) r = pipe.wait() output, error = pipe.communicate() return output def getstatusoutput(cmd, input=None, cwd=None, env=None): "Replacement for commands.getstatusoutput which does not work on Windows." pipe = Popen(cmd, shell=True, cwd=cwd, env=env, stdout=PIPE, stderr=STDOUT) output, error = pipe.communicate(input=input) assert not error status = pipe.returncode return status, output dolfin-1.3.0/site-packages/dolfin_utils/__init__.pyc0000644000175000017500000000026612263015065022341 0ustar johannrjohannró ÌRc@sdS(N((((s_/home/johannr/dev/fenics/src/dolfin/release/dolfin-1.3.0/site-packages/dolfin_utils/__init__.pytsdolfin-1.3.0/site-packages/dolfin/0000755000175000017500000000000012263014601016634 5ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin/__init__.py0000644000175000017500000000214312263014601020745 0ustar johannrjohannr"""Main module for DOLFIN""" # Special module to handle import issues import dolfin.importhandler # Import UFL form language from ufl import * # Add log level present in C++ DOLFIN but not ufl.log PROGRESS = 16 # Remove some unnecessary imports from UFL del set_handler, set_level # Import names from the compiled cpp modules import cpp from dolfin.cpp import * from dolfin.cpp import __version__, __swigversion__ # Reset dl open flags import sys sys.setdlopenflags(dolfin.importhandler.stored_dlopen_flags) del sys # Repair namespace from ufl import FiniteElement # Import UFL color printing from ufl.log import info_red, info_green, info_blue # List of supported elements from FFC try: from ffc import supported_elements, supported_elements_for_plotting except: supported_elements = [] supported_elements_for_plotting = [] # Imports from pure Python modules from dolfin.functions import * from dolfin.common import * from dolfin.compilemodules import * from dolfin.fem import * from dolfin.mesh import * from dolfin.multistage import * # Handling of deprecated interfaces from deprecation import * dolfin-1.3.0/site-packages/dolfin/multistage/0000755000175000017500000000000012263014601021012 5ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin/multistage/__init__.py0000644000175000017500000000066212263014601023127 0ustar johannrjohannr"""The multistage module of dolfin""" from dolfin.multistage import multistagescheme from dolfin.multistage import multistagesolvers from multistagescheme import * from multistagesolvers import * # NOTE: The automatic documentation system in DOLFIN requires to _not_ define # NOTE: classes or functions within this file. Use separate modules for that # NOTE: purpose. __all__ = multistagescheme.__all__ + multistagesolvers.__all__ dolfin-1.3.0/site-packages/dolfin/multistage/multistagesolvers.py0000644000175000017500000000372712263014601025171 0ustar johannrjohannr"""This module describes the Python wrapper of the cpp.PointIntegralSolver""" # Copyright (C) 2013 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2013-04-24 # Last changed: 2013-04-24 # Import SWIG-generated extension module (DOLFIN C++) import dolfin.cpp as cpp __all__ = ["PointIntegralSolver", "RKSolver"] class PointIntegralSolver(cpp.PointIntegralSolver): __doc__ = cpp.PointIntegralSolver.__doc__ def __init__(self, scheme): """ Construct a PointIntegralSolver *Arguments* scheme (_MultiStageScheme_) The multistage scheme the PointIntegralSolver is going to use to solve the PointIntegrals """ self._scheme = scheme cpp.PointIntegralSolver.__init__(self, scheme) def scheme(self): "Return the MultiStageScheme" return self._scheme class RKSolver(cpp.RKSolver): __doc__ = cpp.RKSolver.__doc__ def __init__(self, scheme): """ Construct a RKSolver *Arguments* scheme (_MultiStageScheme_) The multistage scheme the RKSolver is going to use to solve the PDE """ self._scheme = scheme cpp.RKSolver.__init__(self, scheme) def scheme(self): "Return the MultiStageScheme" return self._scheme dolfin-1.3.0/site-packages/dolfin/multistage/multistagescheme.py0000644000175000017500000002776212263014601024745 0ustar johannrjohannr"""This module defines different MultiStageScheme classes which can be passed to a RKSolver""" # Copyright (C) 2013 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2013-02-22 # Last changed: 2013-02-22 import numpy as np # Import SWIG-generated extension module (DOLFIN C++) import dolfin.cpp as cpp # Import ufl import ufl # Import classes from dolfin python layer from dolfin.functions.constant import Constant from dolfin.fem.formmanipulations import derivative from dolfin.fem.form import Form # FIXME: Add support for algebraic parts (at least for implicit) # FIXME: Add support for implicit/explicit split ala IMEX schemes def _butcher_scheme_generator(a, b, c, solution, rhs_form): """ Generates a list of forms and solutions for a given Butcher tableau *Arguments* a (2 dimensional numpy array) The a matrix of the Butcher tableau. b (1-2 dimensional numpy array) The b vector of the Butcher tableau. If b is 2 dimensional the scheme includes an error estimator and can be used in adaptive solvers. c (1 dimensional numpy array) The c vector the Butcher tableau. solution (_Function_) The prognastic variable rhs_form (ufl.Form) A UFL form representing the rhs for a time differentiated equation """ if not (isinstance(a, np.ndarray) and (len(a) == 1 or \ (len(a.shape)==2 and a.shape[0] == a.shape[1]))): raise TypeError("Expected an m x m numpy array as the first argument") if not (isinstance(b, np.ndarray) and len(b.shape) in [1,2]): raise TypeError("Expected a 1 or 2 dimensional numpy array as the second argument") if not (isinstance(c, np.ndarray) and len(c.shape) == 1): raise TypeError("Expected a 1 dimensional numpy array as the third argument") # Make sure a is a "matrix" if len(a) == 1: a.shape = (1, 1) # Get size of system size = a.shape[0] # If b is a matrix we expect it to have two rows if len(b.shape) == 2: if not (b.shape[0] == 2 and b.shape[1] == size): raise ValueError("Expected a 2 row matrix with the same number "\ "of collumns as the first dimension of the a matrix.") elif len(b) != size: raise ValueError("Expected the length of the b vector to have the "\ "same size as the first dimension of the a matrix.") if len(c) != size: raise ValueError("Expected the length of the c vector to have the "\ "same size as the first dimension of the a matrix.") # Check if tableau is fully implicit for i in range(size): for j in range(i): if a[j, i] != 0: raise ValueError("Does not support fully implicit Butcher tableau.") if not isinstance(rhs_form, ufl.Form): raise TypeError("Expected a ufl.Form as the 5th argument.") # Check if form contains a cell or point integral if "cell" in rhs_form.integral_groups(): DX = ufl.dx elif "point" in rhs_form.integral_groups(): DX = ufl.dP else: raise ValueError("Expected either a cell or point integral in the form.") # Get test function arguments, coefficients = ufl.algorithms.extract_arguments_and_coefficients(rhs_form) if len(arguments) != 1: raise ValueError("Expected the form to have rank 1") v = arguments[0] # Create time step dt = Constant(0.1) # rhs forms dolfin_stage_forms = [] ufl_stage_forms = [] # Stage solutions k = [solution.copy(deepcopy=True) for i in range(size)] # Create the stage forms y_ = solution for i, ki in enumerate(k): # Check wether the stage is explicit explicit = a[i,i] == 0 # Evaluation arguments for the ith stage evalargs = y_ + dt * sum([float(a[i,j]) * k[j] \ for j in range(i+1)], ufl.zero(*y_.shape())) stage_form = ufl.replace(rhs_form, {y_:evalargs}) if explicit: stage_forms = [stage_form] else: # Create a F=0 form and differentiate it stage_form -= ufl.inner(ki, v)*DX stage_forms = [stage_form, derivative(stage_form, ki)] ufl_stage_forms.append(stage_forms) dolfin_stage_forms.append([Form(form) for form in stage_forms]) # Only one last stage if len(b.shape) == 1: last_stage = cpp.FunctionAXPY([(float(bi), ki) for bi, ki in zip(b, k)]) else: # FIXME: Add support for addaptivity in RKSolver and MultiStageScheme last_stage = [cpp.FunctionAXPY([(float(bi), ki) for bi, ki in zip(b[0,:], k)]), cpp.FunctionAXPY([(float(bi), ki) for bi, ki in zip(b[1,:], k)])] # Create the Function holding the solution at end of time step #k.append(solution.copy()) # Generate human form of MultiStageScheme human_form = [] for i in range(size): kterm = " + ".join("%sh*k_%s" % ("" if a[i,j] == 1.0 else \ "%s*"% a[i,j], j) \ for j in range(size) if a[i,j] != 0) if c[i] in [0.0, 1.0]: cih = " + h" if c[i] == 1.0 else "" else: cih = " + %s*h" % c[i] if len(kterm) == 0: human_form.append("k_%(i)s = f(t_n%(cih)s, y_n)" % {"i": i, "cih": cih}) else: human_form.append("k_%(i)s = f(t_n%(cih)s, y_n + %(kterm)s)" % \ {"i": i, "cih": cih, "kterm": kterm}) parentheses = "(%s)" if np.sum(b>0) > 1 else "%s" human_form.append("y_{n+1} = y_n + h*" + parentheses % (" + ".join(\ "%sk_%s" % ("" if b[i] == 1.0 else "%s*" % b[i], i) \ for i in range(size) if b[i] > 0))) human_form = "\n".join(human_form) return ufl_stage_forms, dolfin_stage_forms, last_stage, k, dt, human_form class MultiStageScheme(cpp.MultiStageScheme): """ Base class for all MultiStageSchemes """ def __init__(self, rhs_form, solution, t, bcs, a, b, c, order): bcs = bcs or [] t = t or Constant(0.0) ufl_stage_forms, dolfin_stage_forms, last_stage, k, dt, human_form = \ _butcher_scheme_generator(a, b, c, solution, rhs_form) # Store data self._rhs_form = rhs_form self._ufl_stage_forms = ufl_stage_forms self._dolfin_stage_forms = dolfin_stage_forms self._t = t self._dt = dt self._last_stage = last_stage self._solution = solution self._k = k self.a = a self.b = b self.c = c cpp.MultiStageScheme.__init__(self, dolfin_stage_forms, last_stage, k, \ solution, t, dt, c, order, self.__class__.__name__, human_form, bcs) def rhs_form(self): "Return the original rhs form" return self._rhs_form def ufl_stage_forms(self): "Return the ufl stage forms" return self._ufl_stage_forms def dolfin_stage_forms(self): "Return the dolfin stage forms" return self._dolfin_stage_forms def t(self): "Return the Constant used to describe time in the MultiStageScheme" return self._t def dt(self): "Return the Constant used to describe time in the MultiStageScheme" return self._dt def solution(self): "Return the solution Function" return self._solution def last_stage(self): "Return the AXPYFunction object describing the last stage" return self._last_stage def stage_solutions(self): "Return the stage solutions" return self._stage_solutions class ERK1(MultiStageScheme): """ Explicit first order Scheme """ def __init__(self, rhs_form, solution, t=None, bcs=None): a = np.array([0.]) b = np.array([1.]) c = np.array([0.]) MultiStageScheme.__init__(self, rhs_form, solution, t, bcs, a, b, c, 1) class BDF1(MultiStageScheme): """ Implicit first order scheme """ def __init__(self, rhs_form, solution, t=None, bcs=None): a = np.array([1.]) b = np.array([1.]) c = np.array([1.]) MultiStageScheme.__init__(self, rhs_form, solution, t, bcs, a, b, c, 1) class ExplicitMidPoint(MultiStageScheme): """ Explicit 2nd order scheme """ def __init__(self, rhs_form, solution, t=None, bcs=None): a = np.array([[0, 0],[0.5, 0.0]]) b = np.array([0., 1]) c = np.array([0, 0.5]) MultiStageScheme.__init__(self, rhs_form, solution, t, bcs, a, b, c, 2) class CN2(MultiStageScheme): """ Semi-implicit 2nd order scheme """ def __init__(self, rhs_form, solution, t=None, bcs=None): a = np.array([[0, 0],[0.5, 0.5]]) b = np.array([0.5, 0.5]) c = np.array([0, 1.0]) MultiStageScheme.__init__(self, rhs_form, solution, t, bcs, a, b, c, 2) class ERK4(MultiStageScheme): """ Explicit 4th order scheme """ def __init__(self, rhs_form, solution, t=None, bcs=None): a = np.array([[0, 0, 0, 0], [0.5, 0, 0, 0], [0, 0.5, 0, 0], [0, 0, 1, 0]]) b = np.array([1./6, 1./3, 1./3, 1./6]) c = np.array([0, 0.5, 0.5, 1]) MultiStageScheme.__init__(self, rhs_form, solution, t, bcs, a, b, c, 4) class ESDIRK3(MultiStageScheme): """ Explicit implicit 3rd order scheme """ def __init__(self, rhs_form, solution, t=None, bcs=None): a = np.array([[ 0. , 0. , 0. , 0. , 0. ], [ 0.43586652, 0.43586652, 0. , 0. , 0. ], [ 0.14073777, -0.10836555, 0.43586652, 0. , 0. ], [ 0.1023994 , -0.37687845, 0.83861253, 0.43586652, 0. ], [ 0.1570249 , 0.11733044, 0.61667803, -0.32689989, 0.43586652]]) b = a[-1,:].copy() c = a.sum(1) MultiStageScheme.__init__(self, rhs_form, solution, t, bcs, a, b, c, 3) class ESDIRK4(MultiStageScheme): """ Explicit implicit 4rd order scheme """ def __init__(self, rhs_form, solution, t=None, bcs=None): a = np.array([[0, 0, 0, 0, 0 ], [0.435866521500000, 0.435866521500000, 0, 0, 0 ], [0.140737774731968, -0.108365551378832, 0.435866521500000, 0, 0 ], [0.102399400616089, -0.376878452267324, 0.838612530151233, 0.435866521500000, 0 ], [0.157024897860995, 0.117330441357768, 0.616678030391680, -0.326899891110444, 0.435866521500000 ]]) b = a[-1,:].copy() c = a.sum(1) MultiStageScheme.__init__(self, rhs_form, solution, t, bcs, a, b, c, 4) # Aliases CrankNicolson = CN2 ExplicitEuler = ERK1 ForwardEuler = ERK1 ImplicitEuler = BDF1 BackwardEuler = BDF1 ERK = ERK1 RK4 = ERK4 __all__ = [name for name, attr in globals().items() \ if isinstance(attr, type) and issubclass(attr, MultiStageScheme)] __all__.append("MultiStageScheme") dolfin-1.3.0/site-packages/dolfin/compilemodules/0000755000175000017500000000000012263015066021663 5ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin/compilemodules/__init__.py0000644000175000017500000000126712263014601023774 0ustar johannrjohannr"""The compilemodules module of dolfin""" from dolfin.compilemodules import compilemodule from dolfin.compilemodules import expressions from dolfin.compilemodules import subdomains from dolfin.compilemodules import jit from compilemodule import compile_extension_module from expressions import compile_expressions from subdomains import compile_subdomains, CompiledSubDomain from jit import jit # NOTE: The automatic documentation system in DOLFIN requires to _not_ define # NOTE: classes or functions within this file. Use separate modules for that # NOTE: purpose. __all__ = ["compile_extension_module", "compile_expressions", \ "compile_subdomains", "CompiledSubDomain", "jit"] dolfin-1.3.0/site-packages/dolfin/compilemodules/expressions.py0000644000175000017500000002114112263014601024610 0ustar johannrjohannr"This module provides functionality for compilation of strings as dolfin Expressions." # Copyright (C) 2008-2008 Martin Sandve Alnes # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Johan Hake 2008-2009 # # First added: 2008-06-04 # Last changed: 2011-04-18 import re import types import hashlib import instant # Import local compile_extension_module from dolfin.compilemodules.compilemodule import (compile_extension_module, expression_to_code_fragments, math_header) __all__ = ["compile_expressions"] _expression_template = """class %(classname)s: public Expression { public: %(members)s %(classname)s():Expression() { %(value_shape)s %(constructor)s } void eval(dolfin::Array& values, const dolfin::Array& x, const ufc::cell& cell) const { %(evalcode_cell)s } void eval(dolfin::Array& values, const dolfin::Array& x) const { %(evalcode)s } }; """ def flatten_and_check_expression(expr): # Convert expr to a flat tuple of strings # and return value_shape and geometrical dimensions if isinstance(expr, str): return (expr,), () elif isinstance(expr, (tuple,list)): if all(isinstance(e,tuple) for e in expr): shape = (len(expr),len(expr[0])) expr = sum(expr, ()) else: shape = (len(expr),) if all(isinstance(e,str) for e in expr): return expr, shape raise TypeError, "Wrong type of expressions. Provide a 'str', a 'tuple' of 'str' or a 'tuple' of 'tuple' of 'str': %s" % str(expr) def expression_to_dolfin_expression(expr, generic_function_members): "Generates code for a dolfin::Expression subclass for a single expression." # Check and flattern provided expression expr, shape = flatten_and_check_expression(expr) # Extract code fragments from the expr fragments, members = expression_to_code_fragments(\ expr, ["values","x"], generic_function_members) # Generate code for value_rank value_shape_code = [" _value_shape.push_back(%d);" % value_dim \ for value_dim in shape] evalcode = [] # Generate code for constant members for name in generic_function_members: evalcode.append(" if (shared_%s->value_size()!=1)" % name) evalcode.append(" dolfin_error(\"generated code\",") evalcode.append(" \"calling eval\", ") evalcode.append(" \"Parameter \\'%s\\' is not scalar valued\");" % name) evalcode.append(" if (shared_%s.get()==this)" % name) evalcode.append(" dolfin_error(\"generated code\",") evalcode.append(" \"calling eval\",") evalcode.append(" \"Circular eval call detected. Cannot use itself as parameter \\'%s\\' within eval\");" % name) evalcode.append(" Array %s__array_(1);" % name) evalcode.append(" shared_%s->eval(%s__array_, x);" % (name, name)) evalcode.append(" const double %s = %s__array_[0];" % (name, name)) # Generate code for the actual expression evaluation evalcode.extend(" values[%d] = %s;" % (i, c) for (i,c) in enumerate(expr)) # Connect the code fragments using the expression template code fragments["evalcode"] = "\n".join(evalcode) fragments["evalcode_cell"] = fragments["evalcode"].replace(\ "__array_, x", "__array_, x, cell") fragments["value_shape"] = "\n".join(value_shape_code) # Assign classname classname = "Expression_" + hashlib.md5(fragments["evalcode"]).hexdigest() fragments["classname"] = classname # Produce the C++ code for the expression class code = _expression_template % fragments return classname, code, members def compile_expression_code(code, classnames=None, module_name=None, \ additional_declarations=None): additional_declarations = additional_declarations or "" # Autodetect classnames: _classnames = re.findall(r"class[ ]+([\w]+).*", code) # Just a little assertion for safety: if classnames is None: classnames = _classnames else: assert all(a == b for (a,b) in zip(classnames, _classnames)) # Complete the code code = "%s\n%s"%(math_header, code) # Compile the extension module compiled_module = compile_extension_module(\ code, additional_declarations=additional_declarations) # Get the compiled class expression_classes = [getattr(compiled_module, name) for name in classnames] return expression_classes def compile_expressions(cppargs, generic_function_members=None): """ Compiles a list of either C++ expressions of full subclasses of dolfin::Expression class. The expression can either be a str in which case it is interpreted as a scalar expression and a scalar Expression is generated. If the expression is a tuple consisting of more than one str it is interpreted as a vector expression, and a rank 1 Expression is generated. A tuple of tuples of str objects is interpreted as a matrix expression, and a rank 2 Expression is generated. If an expression string contains a name, it is assumed to be a scalar parameter name, and is added as a public member of the generated expression. The names of these parameters are then returned in a list together with the compiled expression class. If 'cppargs' include a class definition it is interpreted as c++ code with complete implementations of a subclasses of dolfin::Expression. kwargs propagates the default member values for any generated parameter. """ #, which contains: # %s #""" % "\n".join(" " + b for b in _builtins) # FIXME: Hook up this to a more general debug mechanism assert(isinstance(cppargs, list)) generic_function_members_list = generic_function_members or \ [[] for i in range(len(cppargs))] # Check for uniq sub expressions if len(set(hashlib.md5(repr(expr)) for expr in cppargs)) \ != len(cppargs): raise TypeError, "The batch-compiled expressions must be unique." # Collect code and classnames code_snippets = []; classnames = []; all_members = []; additional_declarations = []; for cpparg, generic_function_members in zip(cppargs, generic_function_members_list): assert(isinstance(cpparg, (str, tuple, list))) # If the cpparg includes the word 'class' and 'Expression', # assume it is a c++ code snippet if isinstance(cpparg, str) and "class" in cpparg and "Expression" in cpparg: # Assume that a code snippet is passed as cpparg code = cpparg # Get the class name classname = re.findall(r"class[ ]+([\w]+).*", code)[0] members = [] # FIXME: Check for passed dimension? else: classname, code, members = \ expression_to_dolfin_expression(cpparg, generic_function_members) additional_declarations.extend("%%rename(%s) dolfin::%s::shared_%s;" % \ (name, classname, name) for name in \ generic_function_members) all_members.append(members) code_snippets.append(code) classnames.append(classname) expression_classes = compile_expression_code("\n\n".join(\ code_snippets), classnames, additional_declarations="\n".join(\ additional_declarations)) return expression_classes, all_members if __name__ == "__main__": cn1, code1 = expression_to_dolfin_expression("exp(alpha)",{'alpha':1.5}) cn2, code2 = expression_to_dolfin_expression(("sin(x[0])", "cos(x[1])", "0.0"),{}) cn3, code3 = expression_to_dolfin_expression((("sin(x[0])", "cos(x[1])"), ("0.0", "1.0")),{}) print code1 print cn1 print code2 print cn2 print code3 print cn3 dolfin-1.3.0/site-packages/dolfin/compilemodules/jit.py0000644000175000017500000000756412263014601023031 0ustar johannrjohannr"""This module defines a jit function that wraps the jit function for the chosen form compiler.""" # Copyright (C) 2008-2009 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Anders Logg, 2008-2009. # Modified by Garth N. Wells, 2011. # # First added: 2008-12-04 # Last changed: 2011-09-10 __all__ = ["jit"] from functools import wraps # Import SWIG-generated extension module (DOLFIN C++) import dolfin.cpp as cpp from dolfin.cpp import MPI, info, parameters, warning, info # Set UFL log level import ufl ufl.set_level(ufl.INFO) def mpi_jit_decorator(local_jit, *args, **kwargs): """A decorator for jit compilation Use this function as a decorator to any jit compiler function. In a paralell run, this function will first call the jit compilation function on the first process. When this is done, and the module is in the cache, it will call the jit compiler on the remaining processes, which will then use the cached module. *Example* .. code-block:: python def jit_something(something): .... """ @wraps(local_jit) def mpi_jit(*args, **kwargs): # Just call JIT compiler when running in serial if MPI.num_processes() == 1: return local_jit(*args, **kwargs) # Compile first on process 0 if MPI.process_number() == 0: output = local_jit(*args, **kwargs) # Wait for the first process to finish MPI.barrier() # Then compile on all other processes (which may then just read the cache) if not MPI.process_number() == 0: output = local_jit(*args,**kwargs) return output # Return the decorated jit function return mpi_jit @mpi_jit_decorator def jit(form, form_compiler_parameters=None, common_cell=None): """Just-in-time compile any provided form. It uses the jit function from the form compiler registered by parameters["form_compiler"]["name"]. """ # Check that form is not empty if isinstance(form, ufl.Form): if form.integrals() == (): raise RuntimeError, "Form is empty. Cannot pass to JIT compiler." # Import form compiler form_compiler_name = cpp.parameters["form_compiler"]["name"] try: form_compiler = __import__(form_compiler_name) except ImportError, message: print message warning("Could not import %s form compiler, falling back to FFC." % form_compiler_name) try: form_compiler = __import__("ffc") except: cpp.dolfin_error("jit.py", "perform just-in-time compilation of form", "Could not import FFC form compiler") # Prepare form compiler parameters p = form_compiler.default_parameters() # Set parameters from global DOLFIN parameter set for key, value in parameters["form_compiler"].iteritems(): p[key] = value # Override with local parameters if any if form_compiler_parameters: p.update(form_compiler_parameters) # Get jit function try: jit_compile = form_compiler.jit except AttributeError: raise RuntimeError, "Form compiler must implement the jit function." return jit_compile(form, parameters=p, common_cell=common_cell) dolfin-1.3.0/site-packages/dolfin/compilemodules/swigimportinfo.py0000644000175000017500000016136712263015066025333 0ustar johannrjohannr""" This module contains compiletime information about the dolfin python library, which can be utelized at runtime. The file is automatically generated by the generateswigcode.py script in the dolfin/swig directory.""" try: from collections import OrderedDict except ImportError: from dolfin_utils.ordereddict import OrderedDict # A list of shared_ptr declared classes in dolfin shared_ptr_classes = ['AdaptiveLinearVariationalSolver', 'AdaptiveNonlinearVariationalSolver', 'ErrorControl', 'Hierarchical', 'GenericAdaptiveVariationalSolver', 'GoalFunctional', 'SpecialFacetFunction', 'TimeSeries', 'TimeSeriesHDF5', 'MeshDisplacement', 'Variable', 'Hierarchical', 'GenericDofMap', 'DofMap', 'CCFEMDofMap', 'Form', 'FiniteElement', 'BasisFunction', 'MultiStageScheme', 'Hierarchical', 'Hierarchical', 'LinearVariationalProblem', 'NonlinearVariationalProblem', 'LinearVariationalSolver', 'NonlinearVariationalSolver', 'VariationalProblem', 'PointIntegralSolver', 'Hierarchical', 'DirichletBC', 'Hierarchical', 'FunctionSpace', 'SubSpace', 'GenericFunction', 'Hierarchical', 'Function', 'Expression', 'FacetArea', 'Constant', 'MeshCoordinates', 'BoundingBoxTree', 'Hierarchical', 'BoundaryMesh', 'CircleMesh', 'EllipseMesh', 'EllipsoidMesh', 'Mesh', 'Restriction', 'SphereMesh', 'SubMesh', 'UnitTetrahedronMesh', 'UnitTetrahedron', 'UnitCubeMesh', 'UnitCube', 'UnitIntervalMesh', 'UnitInterval', 'IntervalMesh', 'Interval', 'UnitTriangleMesh', 'UnitTriangle', 'UnitSquareMesh', 'UnitSquare', 'UnitCircleMesh', 'UnitCircle', 'BoxMesh', 'Box', 'RectangleMesh', 'Rectangle', 'CSGGeometry', 'CSGOperator', 'CSGUnion', 'CSGDifference', 'CSGIntersection', 'CSGPrimitive', 'CSGPrimitive2D', 'CSGPrimitive3D', 'Circle', 'Ellipse', 'Polygon', 'Sphere', 'Cone', 'Cylinder', 'Tetrahedron', 'Surface3D', 'CSGCGALMeshGenerator2D', 'CSGCGALMeshGenerator3D', 'SubDomain', 'DomainBoundary', 'LocalMeshData', 'MeshData', 'Hierarchical >', 'MeshFunction', 'CellFunction', 'EdgeFunction', 'FaceFunction', 'FacetFunction', 'VertexFunction', 'Parameters', 'GlobalParameters', 'GenericLinearOperator', 'GenericMatrix', 'GenericPreconditioner', 'GenericTensor', 'GenericVector', 'LinearAlgebraObject', 'Scalar', 'Matrix', 'Vector', 'LinearOperator', 'STLMatrix', 'uBLASMatrix >', 'uBLASVector', 'PETScBaseMatrix', 'PETScLinearOperator', 'PETScKrylovSolver', 'PETScLUSolver', 'PETScMatrix', 'PETScObject', 'PETScPreconditioner', 'PETScVector', 'PETScUserPreconditioner', 'SLEPcEigenSolver', 'EpetraKrylovSolver', 'EpetraLUSolver', 'EpetraMatrix', 'EpetraSparsityPattern', 'EpetraVector', 'TrilinosPreconditioner', 'PaStiXLUSolver', 'UmfpackLUSolver', 'CholmodCholeskySolver', 'uBLASKrylovSolver', 'uBLASLinearOperator', 'LinearSolver', 'GenericLinearSolver', 'GenericLUSolver', 'KrylovSolver', 'LUSolver', 'GenericSparsityPattern', 'SparsityPattern', 'Table', 'GenericFile', 'File', 'XDMFFile', 'HDF5File', 'Lagrange', 'NewtonSolver', 'PETScSNESSolver', 'TAOLinearBoundSolver', 'VTKPlotter', 'GenericVTKPlottable', 'VTKPlottableMesh', 'VTKPlottableGenericFunction', 'VTKPlottableMeshFunction', 'ExpressionWrapper', 'Quadrature', 'LobattoQuadrature', 'RadauQuadrature', 'GaussQuadrature', 'GaussianQuadrature', 'MeshPointIntersection'] # An OrderedDict of all dolfin declared and its meta info dolfin_type_def = OrderedDict([\ ('ufc::function', {'header': 'ufc.h', 'submodule': '', 'derived': ['Function', 'MeshDisplacement', 'BasisFunction', 'GenericFunction', 'SpecialFacetFunction', 'MeshCoordinates', 'Constant', 'Expression', 'FacetArea'], 'bases': [], 'module': ''}), ('la_index', {'header': 'dolfin/common/types.h', 'submodule': 'common', 'derived': [], 'bases': [], 'module': 'common'}), ('Array', {'header': 'dolfin/common/Array.h', 'submodule': 'common', 'derived': [], 'bases': [], 'module': 'common'}), ('IndexSet', {'header': 'dolfin/common/IndexSet.h', 'submodule': 'common', 'derived': [], 'bases': [], 'module': 'common'}), ('Set', {'header': 'dolfin/common/Set.h', 'submodule': 'common', 'derived': [], 'bases': [], 'module': 'common'}), ('Timer', {'header': 'dolfin/common/Timer.h', 'submodule': 'common', 'derived': [], 'bases': [], 'module': 'common'}), ('Variable', {'header': 'dolfin/common/Variable.h', 'submodule': 'common', 'derived': ['GenericDofMap', 'CircleMesh', 'PETScVector', 'PETScLUSolver', 'CSGDifference', 'UnitCircleMesh', 'EpetraVector', 'Matrix', 'VTKPlotter', 'uBLASVector', 'UnitIntervalMesh', 'uBLASMatrix', 'GenericLinearOperator', 'UnitCube', 'MeshCoordinates', 'CSGCGALMeshGenerator3D', 'CSGPrimitive3D', 'FacetFunction', 'GenericTensor', 'FaceFunction', 'AdaptiveNonlinearVariationalSolver', 'EllipsoidMesh', 'UnitSquareMesh', 'CSGPrimitive', 'UmfpackLUSolver', 'TrilinosPreconditioner', 'CSGPrimitive2D', 'XDMFFile', 'Scalar', 'SparsityPattern', 'EpetraKrylovSolver', 'CSGCGALMeshGenerator2D', 'LinearVariationalSolver', 'LinearAlgebraObject', 'UnitInterval', 'GenericSparsityPattern', 'UnitCircle', 'BoundaryMesh', 'SphereMesh', 'AdaptiveLinearVariationalSolver', 'Circle', 'CSGIntersection', 'CSGOperator', 'CSGGeometry', 'CholmodCholeskySolver', 'CellFunction', 'LUSolver', 'MultiStageScheme', 'BoxMesh', 'MeshDisplacement', 'SubMesh', 'LinearOperator', 'Box', 'LinearSolver', 'PETScLinearOperator', 'UnitTetrahedronMesh', 'Lagrange', 'Vector', 'MeshValueCollection', 'KrylovSolver', 'GenericLUSolver', 'Cylinder', 'PETScPreconditioner', 'Cone', 'UnitSquare', 'GenericVector', 'VertexFunction', 'TimeSeriesHDF5', 'Rectangle', 'LocalMeshData', 'GenericMatrix', 'Mesh', 'IntervalMesh', 'MUMPSLUSolver', 'Tetrahedron', 'EpetraLUSolver', 'SpecialFacetFunction', 'Constant', 'Expression', 'CSGUnion', 'RectangleMesh', 'PETScMatrix', 'DofMap', 'GenericLinearSolver', 'SLEPcEigenSolver', 'Surface3D', 'uBLASKrylovSolver', 'Polygon', 'UnitCubeMesh', 'SubSpace', 'PointIntegralSolver', 'GenericAdaptiveVariationalSolver', 'ErrorControl', 'EpetraMatrix', 'EdgeFunction', 'Function', 'DirichletBC', 'UnitTriangleMesh', 'CCFEMDofMap', 'STLMatrix', 'PETScBaseMatrix', 'MeshFunction', 'TAOLinearBoundSolver', 'PETScKrylovSolver', 'HDF5File', 'TimeSeries', 'PaStiXLUSolver', 'FacetArea', 'GenericFunction', 'EllipseMesh', 'uBLASLinearOperator', 'NewtonSolver', 'NonlinearVariationalSolver', 'Sphere', 'FunctionSpace', 'Table', 'Ellipse', 'MeshData'], 'bases': [], 'module': 'common'}), ('Hierarchical', {'header': 'dolfin/common/Hierarchical.h', 'submodule': 'common', 'derived': ['UnitInterval', 'UnitCubeMesh', 'UnitCircle', 'CircleMesh', 'SubSpace', 'SphereMesh', 'LinearVariationalProblem', 'GoalFunctional', 'ErrorControl', 'VertexFunction', 'UnitCircleMesh', 'DirichletBC', 'UnitSquare', 'Function', 'Form', 'BoundaryMesh', 'UnitIntervalMesh', 'UnitTriangleMesh', 'CellFunction', 'UnitCube', 'Mesh', 'BoxMesh', 'EdgeFunction', 'IntervalMesh', 'SubMesh', 'MeshFunction', 'FacetFunction', 'UnitTetrahedronMesh', 'FaceFunction', 'EllipsoidMesh', 'UnitSquareMesh', 'NonlinearVariationalProblem', 'EllipseMesh', 'RectangleMesh', 'FunctionSpace'], 'bases': [], 'module': 'common'}), ('map_iterator', {'header': 'dolfin/common/MPI.h', 'submodule': 'common', 'derived': [], 'bases': [], 'module': 'common'}), ('map_const_iterator', {'header': 'dolfin/common/MPI.h', 'submodule': 'common', 'derived': [], 'bases': [], 'module': 'common'}), ('MPI', {'header': 'dolfin/common/MPI.h', 'submodule': 'common', 'derived': [], 'bases': [], 'module': 'common'}), ('MPINonblocking', {'header': 'dolfin/common/MPI.h', 'submodule': 'common', 'derived': [], 'bases': [], 'module': 'common'}), ('MPICommunicator', {'header': 'dolfin/common/MPI.h', 'submodule': 'common', 'derived': [], 'bases': [], 'module': 'common'}), ('MPIInfo', {'header': 'dolfin/common/MPI.h', 'submodule': 'common', 'derived': [], 'bases': [], 'module': 'common'}), ('SubSystemsManager', {'header': 'dolfin/common/SubSystemsManager.h', 'submodule': 'common', 'derived': [], 'bases': [], 'module': 'common'}), ('IntParameter', {'header': 'dolfin/parameter/Parameter.h', 'submodule': 'parameter', 'derived': [], 'bases': ['Parameter'], 'module': 'common'}), ('BoolParameter', {'header': 'dolfin/parameter/Parameter.h', 'submodule': 'parameter', 'derived': [], 'bases': ['Parameter'], 'module': 'common'}), ('StringParameter', {'header': 'dolfin/parameter/Parameter.h', 'submodule': 'parameter', 'derived': [], 'bases': ['Parameter'], 'module': 'common'}), ('Parameter', {'header': 'dolfin/parameter/Parameter.h', 'submodule': 'parameter', 'derived': ['IntParameter', 'BoolParameter', 'StringParameter', 'DoubleParameter'], 'bases': [], 'module': 'common'}), ('DoubleParameter', {'header': 'dolfin/parameter/Parameter.h', 'submodule': 'parameter', 'derived': [], 'bases': ['Parameter'], 'module': 'common'}), ('Parameters', {'header': 'dolfin/parameter/Parameters.h', 'submodule': 'parameter', 'derived': ['GlobalParameters'], 'bases': [], 'module': 'common'}), ('GlobalParameters', {'header': 'dolfin/parameter/GlobalParameters.h', 'submodule': 'parameter', 'derived': [], 'bases': ['Parameters'], 'module': 'common'}), ('Event', {'header': 'dolfin/log/Event.h', 'submodule': 'log', 'derived': [], 'bases': [], 'module': 'common'}), ('Progress', {'header': 'dolfin/log/Progress.h', 'submodule': 'log', 'derived': [], 'bases': [], 'module': 'common'}), ('Table', {'header': 'dolfin/log/Table.h', 'submodule': 'log', 'derived': [], 'bases': ['Variable'], 'module': 'common'}), ('TableEntry', {'header': 'dolfin/log/Table.h', 'submodule': 'log', 'derived': [], 'bases': [], 'module': 'common'}), ('ublas_sparse_matrix_cmajor', {'header': 'dolfin/la/ublas.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('ublas_vector_range', {'header': 'dolfin/la/ublas.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('ublas_assembly_matrix', {'header': 'dolfin/la/ublas.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('ublas_dense_matrix', {'header': 'dolfin/la/ublas.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('ublas_sparse_matrix', {'header': 'dolfin/la/ublas.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('ublas_matrix_cmajor_tri', {'header': 'dolfin/la/ublas.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('ublas_matrix_range', {'header': 'dolfin/la/ublas.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('ublas_matrix_cmajor_tri_column', {'header': 'dolfin/la/ublas.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('ublas_vector', {'header': 'dolfin/la/ublas.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('ublas_matrix_cmajor', {'header': 'dolfin/la/ublas.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('ublas_assembly_matrix_cmajor', {'header': 'dolfin/la/ublas.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('ublas_matrix_cmajor_tri_range', {'header': 'dolfin/la/ublas.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('ublas_matrix_cmajor_range', {'header': 'dolfin/la/ublas.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('E', {'header': 'dolfin/la/LinearAlgebraObject.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('LinearAlgebraObject', {'header': 'dolfin/la/LinearAlgebraObject.h', 'submodule': 'la', 'derived': ['GenericVector', 'Matrix', 'GenericMatrix', 'GenericTensor', 'uBLASMatrix', 'PETScMatrix', 'PETScVector', 'STLMatrix', 'Scalar', 'Vector', 'LinearOperator', 'uBLASVector', 'uBLASLinearOperator', 'EpetraMatrix', 'GenericLinearOperator', 'EpetraVector', 'PETScLinearOperator'], 'bases': ['Variable'], 'module': 'la'}), ('GenericLinearOperator', {'header': 'dolfin/la/GenericLinearOperator.h', 'submodule': 'la', 'derived': ['Matrix', 'STLMatrix', 'uBLASMatrix', 'PETScMatrix', 'uBLASLinearOperator', 'GenericMatrix', 'LinearOperator', 'EpetraMatrix', 'PETScLinearOperator'], 'bases': ['Variable', 'LinearAlgebraObject'], 'module': 'la'}), ('GenericTensor', {'header': 'dolfin/la/GenericTensor.h', 'submodule': 'la', 'derived': ['GenericVector', 'Matrix', 'STLMatrix', 'uBLASVector', 'uBLASMatrix', 'PETScMatrix', 'PETScVector', 'GenericMatrix', 'Scalar', 'Vector', 'EpetraMatrix', 'EpetraVector'], 'bases': ['Variable', 'LinearAlgebraObject'], 'module': 'la'}), ('GenericMatrix', {'header': 'dolfin/la/GenericMatrix.h', 'submodule': 'la', 'derived': ['STLMatrix', 'uBLASMatrix', 'EpetraMatrix', 'PETScMatrix', 'Matrix'], 'bases': ['Variable', 'GenericTensor', 'LinearAlgebraObject', 'GenericLinearOperator'], 'module': 'la'}), ('GenericSparsityPattern', {'header': 'dolfin/la/GenericSparsityPattern.h', 'submodule': 'la', 'derived': ['SparsityPattern'], 'bases': ['Variable'], 'module': 'la'}), ('GenericVector', {'header': 'dolfin/la/GenericVector.h', 'submodule': 'la', 'derived': ['uBLASVector', 'Vector', 'EpetraVector', 'PETScVector'], 'bases': ['Variable', 'GenericTensor', 'LinearAlgebraObject'], 'module': 'la'}), ('VectorSpaceBasis', {'header': 'dolfin/la/VectorSpaceBasis.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('GenericLinearSolver', {'header': 'dolfin/la/GenericLinearSolver.h', 'submodule': 'la', 'derived': ['GenericLUSolver', 'LinearSolver', 'UmfpackLUSolver', 'CholmodCholeskySolver', 'EpetraLUSolver', 'PETScKrylovSolver', 'PETScLUSolver', 'LUSolver', 'EpetraKrylovSolver', 'uBLASKrylovSolver', 'KrylovSolver'], 'bases': ['Variable'], 'module': 'la'}), ('GenericLUSolver', {'header': 'dolfin/la/GenericLUSolver.h', 'submodule': 'la', 'derived': ['PETScLUSolver', 'UmfpackLUSolver', 'LUSolver', 'EpetraLUSolver'], 'bases': ['Variable', 'GenericLinearSolver'], 'module': 'la'}), ('GenericPreconditioner', {'header': 'dolfin/la/GenericPreconditioner.h', 'submodule': 'la', 'derived': ['PETScPreconditioner', 'TrilinosPreconditioner'], 'bases': [], 'module': 'la'}), ('PETScOptions', {'header': 'dolfin/la/PETScOptions.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('PETScObject', {'header': 'dolfin/la/PETScObject.h', 'submodule': 'la', 'derived': ['PETScUserPreconditioner', 'PETScLinearOperator', 'PETScPreconditioner', 'PETScMatrix', 'PETScKrylovSolver', 'PETScVector', 'PETScLUSolver', 'PETScSNESSolver', 'TAOLinearBoundSolver', 'PETScBaseMatrix', 'SLEPcEigenSolver'], 'bases': [], 'module': 'la'}), ('PETScBaseMatrix', {'header': 'dolfin/la/PETScBaseMatrix.h', 'submodule': 'la', 'derived': ['PETScMatrix', 'PETScLinearOperator'], 'bases': ['Variable', 'PETScObject'], 'module': 'la'}), ('PETScMatrixDeleter', {'header': 'dolfin/la/PETScBaseMatrix.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('uBLASFactory', {'header': 'dolfin/la/uBLASFactory.h', 'submodule': 'la', 'derived': [], 'bases': ['GenericLinearAlgebraFactory'], 'module': 'la'}), ('tuple', {'header': 'dolfin/la/uBLASMatrix.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('uBLASMatrix', {'header': 'dolfin/la/uBLASMatrix.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericMatrix', 'LinearAlgebraObject', 'GenericLinearOperator', 'GenericTensor'], 'module': 'la'}), ('uBLASLinearOperator', {'header': 'dolfin/la/uBLASLinearOperator.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'LinearAlgebraObject', 'GenericLinearOperator'], 'module': 'la'}), ('PETScMatrix', {'header': 'dolfin/la/PETScMatrix.h', 'submodule': 'la', 'derived': [], 'bases': ['LinearAlgebraObject', 'GenericTensor', 'GenericLinearOperator', 'PETScObject', 'GenericMatrix', 'Variable', 'PETScBaseMatrix'], 'module': 'la'}), ('PETScLinearOperator', {'header': 'dolfin/la/PETScLinearOperator.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'PETScBaseMatrix', 'LinearAlgebraObject', 'GenericLinearOperator', 'PETScObject'], 'module': 'la'}), ('PETScPreconditioner', {'header': 'dolfin/la/PETScPreconditioner.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericPreconditioner', 'PETScObject'], 'module': 'la'}), ('EpetraLUSolver', {'header': 'dolfin/la/EpetraLUSolver.h', 'submodule': 'la', 'derived': [], 'bases': ['GenericLUSolver', 'Variable', 'GenericLinearSolver'], 'module': 'la'}), ('EpetraKrylovSolver', {'header': 'dolfin/la/EpetraKrylovSolver.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericLinearSolver'], 'module': 'la'}), ('EpetraMatrix', {'header': 'dolfin/la/EpetraMatrix.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericMatrix', 'LinearAlgebraObject', 'GenericLinearOperator', 'GenericTensor'], 'module': 'la'}), ('EpetraVector', {'header': 'dolfin/la/EpetraVector.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericTensor', 'GenericVector', 'LinearAlgebraObject'], 'module': 'la'}), ('PETScKrylovSolver', {'header': 'dolfin/la/PETScKrylovSolver.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericLinearSolver', 'PETScObject'], 'module': 'la'}), ('PETScLUSolver', {'header': 'dolfin/la/PETScLUSolver.h', 'submodule': 'la', 'derived': [], 'bases': ['GenericLUSolver', 'Variable', 'GenericLinearSolver', 'PETScObject'], 'module': 'la'}), ('CholmodCholeskySolver', {'header': 'dolfin/la/CholmodCholeskySolver.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericLinearSolver'], 'module': 'la'}), ('UmfpackLUSolver', {'header': 'dolfin/la/UmfpackLUSolver.h', 'submodule': 'la', 'derived': [], 'bases': ['GenericLUSolver', 'Variable', 'GenericLinearSolver'], 'module': 'la'}), ('MUMPSLUSolver', {'header': 'dolfin/la/MUMPSLUSolver.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable'], 'module': 'la'}), ('PaStiXLUSolver', {'header': 'dolfin/la/PaStiXLUSolver.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable'], 'module': 'la'}), ('STLMatrix', {'header': 'dolfin/la/STLMatrix.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericMatrix', 'LinearAlgebraObject', 'GenericLinearOperator', 'GenericTensor'], 'module': 'la'}), ('CoordinateMatrix', {'header': 'dolfin/la/CoordinateMatrix.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('uBLASVector', {'header': 'dolfin/la/uBLASVector.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericTensor', 'GenericVector', 'LinearAlgebraObject'], 'module': 'la'}), ('PETScVector', {'header': 'dolfin/la/PETScVector.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericTensor', 'GenericVector', 'LinearAlgebraObject', 'PETScObject'], 'module': 'la'}), ('PETScVectorDeleter', {'header': 'dolfin/la/PETScVector.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('SparsityPattern', {'header': 'dolfin/la/SparsityPattern.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericSparsityPattern'], 'module': 'la'}), ('GenericLinearAlgebraFactory', {'header': 'dolfin/la/GenericLinearAlgebraFactory.h', 'submodule': 'la', 'derived': ['DefaultFactory', 'EpetraFactory', 'PETScFactory', 'uBLASFactory', 'STLFactory', 'PETScCuspFactory'], 'bases': [], 'module': 'la'}), ('DefaultFactory', {'header': 'dolfin/la/DefaultFactory.h', 'submodule': 'la', 'derived': [], 'bases': ['GenericLinearAlgebraFactory'], 'module': 'la'}), ('PETScUserPreconditioner', {'header': 'dolfin/la/PETScUserPreconditioner.h', 'submodule': 'la', 'derived': [], 'bases': ['PETScObject'], 'module': 'la'}), ('PETScFactory', {'header': 'dolfin/la/PETScFactory.h', 'submodule': 'la', 'derived': [], 'bases': ['GenericLinearAlgebraFactory'], 'module': 'la'}), ('PETScCuspFactory', {'header': 'dolfin/la/PETScCuspFactory.h', 'submodule': 'la', 'derived': [], 'bases': ['GenericLinearAlgebraFactory'], 'module': 'la'}), ('EpetraFactory', {'header': 'dolfin/la/EpetraFactory.h', 'submodule': 'la', 'derived': [], 'bases': ['GenericLinearAlgebraFactory'], 'module': 'la'}), ('STLFactory', {'header': 'dolfin/la/STLFactory.h', 'submodule': 'la', 'derived': [], 'bases': ['GenericLinearAlgebraFactory'], 'module': 'la'}), ('SLEPcEigenSolver', {'header': 'dolfin/la/SLEPcEigenSolver.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'PETScObject'], 'module': 'la'}), ('TrilinosPreconditioner', {'header': 'dolfin/la/TrilinosPreconditioner.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericPreconditioner'], 'module': 'la'}), ('uBLASSparseMatrix', {'header': 'dolfin/la/uBLASSparseMatrix.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('uBLASDenseMatrix', {'header': 'dolfin/la/uBLASDenseMatrix.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('uBLASPreconditioner', {'header': 'dolfin/la/uBLASPreconditioner.h', 'submodule': 'la', 'derived': ['uBLASILUPreconditioner'], 'bases': [], 'module': 'la'}), ('uBLASKrylovSolver', {'header': 'dolfin/la/uBLASKrylovSolver.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericLinearSolver'], 'module': 'la'}), ('uBLASILUPreconditioner', {'header': 'dolfin/la/uBLASILUPreconditioner.h', 'submodule': 'la', 'derived': [], 'bases': ['uBLASPreconditioner'], 'module': 'la'}), ('Vector', {'header': 'dolfin/la/Vector.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericTensor', 'GenericVector', 'LinearAlgebraObject'], 'module': 'la'}), ('Matrix', {'header': 'dolfin/la/Matrix.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericMatrix', 'LinearAlgebraObject', 'GenericLinearOperator', 'GenericTensor'], 'module': 'la'}), ('Scalar', {'header': 'dolfin/la/Scalar.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericTensor', 'LinearAlgebraObject'], 'module': 'la'}), ('LinearSolver', {'header': 'dolfin/la/LinearSolver.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericLinearSolver'], 'module': 'la'}), ('KrylovSolver', {'header': 'dolfin/la/KrylovSolver.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'GenericLinearSolver'], 'module': 'la'}), ('LUSolver', {'header': 'dolfin/la/LUSolver.h', 'submodule': 'la', 'derived': [], 'bases': ['GenericLUSolver', 'Variable', 'GenericLinearSolver'], 'module': 'la'}), ('BlockVector', {'header': 'dolfin/la/BlockVector.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('BlockMatrix', {'header': 'dolfin/la/BlockMatrix.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('TensorProductVector', {'header': 'dolfin/la/TensorProductVector.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('TensorProductMatrix', {'header': 'dolfin/la/TensorProductMatrix.h', 'submodule': 'la', 'derived': [], 'bases': [], 'module': 'la'}), ('LinearOperator', {'header': 'dolfin/la/LinearOperator.h', 'submodule': 'la', 'derived': [], 'bases': ['Variable', 'LinearAlgebraObject', 'GenericLinearOperator'], 'module': 'la'}), ('NonlinearProblem', {'header': 'dolfin/nls/NonlinearProblem.h', 'submodule': 'nls', 'derived': [], 'bases': [], 'module': 'la'}), ('NewtonSolver', {'header': 'dolfin/nls/NewtonSolver.h', 'submodule': 'nls', 'derived': [], 'bases': ['Variable'], 'module': 'la'}), ('PETScSNESSolver', {'header': 'dolfin/nls/PETScSNESSolver.h', 'submodule': 'nls', 'derived': [], 'bases': ['PETScObject'], 'module': 'la'}), ('TAOLinearBoundSolver', {'header': 'dolfin/nls/TAOLinearBoundSolver.h', 'submodule': 'nls', 'derived': [], 'bases': ['Variable', 'PETScObject'], 'module': 'la'}), ('CellType', {'header': 'dolfin/mesh/CellType.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('MeshTopology', {'header': 'dolfin/mesh/MeshTopology.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('MeshGeometry', {'header': 'dolfin/mesh/MeshGeometry.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('MeshDomains', {'header': 'dolfin/mesh/MeshDomains.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('MeshData', {'header': 'dolfin/mesh/MeshData.h', 'submodule': 'mesh', 'derived': [], 'bases': ['Variable'], 'module': 'mesh'}), ('Mesh', {'header': 'dolfin/mesh/Mesh.h', 'submodule': 'mesh', 'derived': ['RectangleMesh', 'UnitCubeMesh', 'EllipseMesh', 'UnitCube', 'UnitCircle', 'CircleMesh', 'UnitTetrahedronMesh', 'BoxMesh', 'UnitTriangleMesh', 'SphereMesh', 'EllipsoidMesh', 'UnitSquareMesh', 'UnitSquare', 'BoundaryMesh', 'UnitCircleMesh', 'IntervalMesh', 'UnitIntervalMesh', 'SubMesh', 'UnitInterval'], 'bases': ['Variable', 'Hierarchical'], 'module': 'mesh'}), ('MeshEntity', {'header': 'dolfin/mesh/MeshEntity.h', 'submodule': 'mesh', 'derived': ['Cell', 'Vertex', 'Face', 'Facet', 'Edge', 'FacetCell'], 'bases': [], 'module': 'mesh'}), ('MeshEntityIterator', {'header': 'dolfin/mesh/MeshEntityIterator.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('MeshEntityIteratorBase', {'header': 'dolfin/mesh/MeshEntityIteratorBase.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('SubsetIterator', {'header': 'dolfin/mesh/SubsetIterator.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('VertexIterator', {'header': 'dolfin/mesh/Vertex.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('VertexFunction', {'header': 'dolfin/mesh/Vertex.h', 'submodule': 'mesh', 'derived': [], 'bases': ['Variable', 'Hierarchical', 'MeshFunction'], 'module': 'mesh'}), ('Vertex', {'header': 'dolfin/mesh/Vertex.h', 'submodule': 'mesh', 'derived': [], 'bases': ['MeshEntity'], 'module': 'mesh'}), ('EdgeIterator', {'header': 'dolfin/mesh/Edge.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('Edge', {'header': 'dolfin/mesh/Edge.h', 'submodule': 'mesh', 'derived': [], 'bases': ['MeshEntity'], 'module': 'mesh'}), ('EdgeFunction', {'header': 'dolfin/mesh/Edge.h', 'submodule': 'mesh', 'derived': [], 'bases': ['Variable', 'Hierarchical', 'MeshFunction'], 'module': 'mesh'}), ('FaceIterator', {'header': 'dolfin/mesh/Face.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('FaceFunction', {'header': 'dolfin/mesh/Face.h', 'submodule': 'mesh', 'derived': [], 'bases': ['Variable', 'Hierarchical', 'MeshFunction'], 'module': 'mesh'}), ('Face', {'header': 'dolfin/mesh/Face.h', 'submodule': 'mesh', 'derived': [], 'bases': ['MeshEntity'], 'module': 'mesh'}), ('FacetIterator', {'header': 'dolfin/mesh/Facet.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('Facet', {'header': 'dolfin/mesh/Facet.h', 'submodule': 'mesh', 'derived': [], 'bases': ['MeshEntity'], 'module': 'mesh'}), ('FacetFunction', {'header': 'dolfin/mesh/Facet.h', 'submodule': 'mesh', 'derived': [], 'bases': ['Variable', 'Hierarchical', 'MeshFunction'], 'module': 'mesh'}), ('CellIterator', {'header': 'dolfin/mesh/Cell.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('Cell', {'header': 'dolfin/mesh/Cell.h', 'submodule': 'mesh', 'derived': ['FacetCell'], 'bases': ['MeshEntity'], 'module': 'mesh'}), ('CellFunction', {'header': 'dolfin/mesh/Cell.h', 'submodule': 'mesh', 'derived': [], 'bases': ['Variable', 'Hierarchical', 'MeshFunction'], 'module': 'mesh'}), ('FacetCell', {'header': 'dolfin/mesh/FacetCell.h', 'submodule': 'mesh', 'derived': [], 'bases': ['Cell', 'MeshEntity'], 'module': 'mesh'}), ('MeshConnectivity', {'header': 'dolfin/mesh/MeshConnectivity.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('MeshEditor', {'header': 'dolfin/mesh/MeshEditor.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('DynamicMeshEditor', {'header': 'dolfin/mesh/DynamicMeshEditor.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('LocalMeshValueCollection', {'header': 'dolfin/mesh/LocalMeshValueCollection.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('MeshFunction', {'header': 'dolfin/mesh/MeshFunction.h', 'submodule': 'mesh', 'derived': ['VertexFunction', 'FacetFunction', 'FaceFunction', 'CellFunction', 'EdgeFunction'], 'bases': ['Variable', 'Hierarchical'], 'module': 'mesh'}), ('MeshPartitioning', {'header': 'dolfin/mesh/MeshPartitioning.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('MeshValueCollection', {'header': 'dolfin/mesh/MeshValueCollection.h', 'submodule': 'mesh', 'derived': [], 'bases': ['Variable'], 'module': 'mesh'}), ('MeshColoring', {'header': 'dolfin/mesh/MeshColoring.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('MeshRenumbering', {'header': 'dolfin/mesh/MeshRenumbering.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('MeshTransformation', {'header': 'dolfin/mesh/MeshTransformation.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('LocalMeshData', {'header': 'dolfin/mesh/LocalMeshData.h', 'submodule': 'mesh', 'derived': [], 'bases': ['Variable'], 'module': 'mesh'}), ('SubDomain', {'header': 'dolfin/mesh/SubDomain.h', 'submodule': 'mesh', 'derived': ['DomainBoundary'], 'bases': [], 'module': 'mesh'}), ('SubMesh', {'header': 'dolfin/mesh/SubMesh.h', 'submodule': 'mesh', 'derived': [], 'bases': ['Variable', 'Mesh', 'Hierarchical'], 'module': 'mesh'}), ('Restriction', {'header': 'dolfin/mesh/Restriction.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('DomainBoundary', {'header': 'dolfin/mesh/DomainBoundary.h', 'submodule': 'mesh', 'derived': [], 'bases': ['SubDomain'], 'module': 'mesh'}), ('BoundaryMesh', {'header': 'dolfin/mesh/BoundaryMesh.h', 'submodule': 'mesh', 'derived': [], 'bases': ['Variable', 'Mesh', 'Hierarchical'], 'module': 'mesh'}), ('PeriodicBoundaryComputation', {'header': 'dolfin/mesh/PeriodicBoundaryComputation.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('MeshQuality', {'header': 'dolfin/mesh/MeshQuality.h', 'submodule': 'mesh', 'derived': [], 'bases': [], 'module': 'mesh'}), ('ImplicitDomainMeshGenerator', {'header': 'dolfin/generation/ImplicitDomainMeshGenerator.h', 'submodule': 'generation', 'derived': [], 'bases': [], 'module': 'mesh'}), ('PolygonalMeshGenerator', {'header': 'dolfin/generation/PolygonalMeshGenerator.h', 'submodule': 'generation', 'derived': [], 'bases': [], 'module': 'mesh'}), ('PolyhedralMeshGenerator', {'header': 'dolfin/generation/PolyhedralMeshGenerator.h', 'submodule': 'generation', 'derived': [], 'bases': [], 'module': 'mesh'}), ('Triangulate', {'header': 'dolfin/generation/Triangulate.h', 'submodule': 'generation', 'derived': [], 'bases': [], 'module': 'mesh'}), ('BoxMesh', {'header': 'dolfin/generation/BoxMesh.h', 'submodule': 'generation', 'derived': ['UnitCube', 'UnitCubeMesh'], 'bases': ['Variable', 'Mesh', 'Hierarchical'], 'module': 'mesh'}), ('CircleMesh', {'header': 'dolfin/generation/EllipseMesh.h', 'submodule': 'generation', 'derived': ['UnitCircle', 'UnitCircleMesh'], 'bases': ['Variable', 'Mesh', 'Hierarchical', 'EllipseMesh'], 'module': 'mesh'}), ('EllipseMesh', {'header': 'dolfin/generation/EllipseMesh.h', 'submodule': 'generation', 'derived': ['UnitCircle', 'CircleMesh', 'UnitCircleMesh'], 'bases': ['Variable', 'Mesh', 'Hierarchical'], 'module': 'mesh'}), ('EllipsoidMesh', {'header': 'dolfin/generation/EllipsoidMesh.h', 'submodule': 'generation', 'derived': ['SphereMesh'], 'bases': ['Variable', 'Mesh', 'Hierarchical'], 'module': 'mesh'}), ('SphereMesh', {'header': 'dolfin/generation/EllipsoidMesh.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'EllipsoidMesh', 'Mesh', 'Hierarchical'], 'module': 'mesh'}), ('IntervalMesh', {'header': 'dolfin/generation/IntervalMesh.h', 'submodule': 'generation', 'derived': ['UnitIntervalMesh', 'UnitInterval'], 'bases': ['Variable', 'Mesh', 'Hierarchical'], 'module': 'mesh'}), ('RectangleMesh', {'header': 'dolfin/generation/RectangleMesh.h', 'submodule': 'generation', 'derived': ['UnitSquareMesh', 'UnitSquare'], 'bases': ['Variable', 'Mesh', 'Hierarchical'], 'module': 'mesh'}), ('UnitTetrahedronMesh', {'header': 'dolfin/generation/UnitTetrahedronMesh.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'Mesh', 'Hierarchical'], 'module': 'mesh'}), ('UnitCubeMesh', {'header': 'dolfin/generation/UnitCubeMesh.h', 'submodule': 'generation', 'derived': ['UnitCube'], 'bases': ['Variable', 'Mesh', 'Hierarchical', 'BoxMesh'], 'module': 'mesh'}), ('UnitCube', {'header': 'dolfin/generation/UnitCube.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'Mesh', 'Hierarchical', 'UnitCubeMesh', 'BoxMesh'], 'module': 'mesh'}), ('UnitIntervalMesh', {'header': 'dolfin/generation/UnitIntervalMesh.h', 'submodule': 'generation', 'derived': ['UnitInterval'], 'bases': ['Variable', 'Mesh', 'IntervalMesh', 'Hierarchical'], 'module': 'mesh'}), ('UnitInterval', {'header': 'dolfin/generation/UnitInterval.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'UnitIntervalMesh', 'Mesh', 'IntervalMesh', 'Hierarchical'], 'module': 'mesh'}), ('UnitTriangleMesh', {'header': 'dolfin/generation/UnitTriangleMesh.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'Mesh', 'Hierarchical'], 'module': 'mesh'}), ('UnitSquareMesh', {'header': 'dolfin/generation/UnitSquareMesh.h', 'submodule': 'generation', 'derived': ['UnitSquare'], 'bases': ['Variable', 'RectangleMesh', 'Mesh', 'Hierarchical'], 'module': 'mesh'}), ('UnitSquare', {'header': 'dolfin/generation/UnitSquare.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'RectangleMesh', 'UnitSquareMesh', 'Mesh', 'Hierarchical'], 'module': 'mesh'}), ('UnitCircleMesh', {'header': 'dolfin/generation/UnitCircleMesh.h', 'submodule': 'generation', 'derived': ['UnitCircle'], 'bases': ['Variable', 'CircleMesh', 'Mesh', 'Hierarchical', 'EllipseMesh'], 'module': 'mesh'}), ('UnitCircle', {'header': 'dolfin/generation/UnitCircle.h', 'submodule': 'generation', 'derived': [], 'bases': ['EllipseMesh', 'CircleMesh', 'Hierarchical', 'Variable', 'Mesh', 'UnitCircleMesh'], 'module': 'mesh'}), ('CSGGeometry', {'header': 'dolfin/generation/CSGGeometry.h', 'submodule': 'generation', 'derived': ['Box', 'CSGOperator', 'CSGPrimitive2D', 'Polygon', 'CSGUnion', 'Sphere', 'Tetrahedron', 'Cylinder', 'Ellipse', 'CSGDifference', 'CSGPrimitive', 'Surface3D', 'Circle', 'CSGPrimitive3D', 'CSGIntersection', 'Rectangle', 'Cone'], 'bases': ['Variable'], 'module': 'mesh'}), ('CSGMeshGenerator', {'header': 'dolfin/generation/CSGMeshGenerator.h', 'submodule': 'generation', 'derived': [], 'bases': [], 'module': 'mesh'}), ('CSGCGALMeshGenerator2D', {'header': 'dolfin/generation/CSGCGALMeshGenerator2D.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable'], 'module': 'mesh'}), ('CSGCGALMeshGenerator3D', {'header': 'dolfin/generation/CSGCGALMeshGenerator3D.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable'], 'module': 'mesh'}), ('CSGDifference', {'header': 'dolfin/generation/CSGOperators.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'CSGOperator', 'CSGGeometry'], 'module': 'mesh'}), ('CSGOperator', {'header': 'dolfin/generation/CSGOperators.h', 'submodule': 'generation', 'derived': ['CSGDifference', 'CSGIntersection', 'CSGUnion'], 'bases': ['Variable', 'CSGGeometry'], 'module': 'mesh'}), ('CSGIntersection', {'header': 'dolfin/generation/CSGOperators.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'CSGOperator', 'CSGGeometry'], 'module': 'mesh'}), ('CSGUnion', {'header': 'dolfin/generation/CSGOperators.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'CSGOperator', 'CSGGeometry'], 'module': 'mesh'}), ('CSGPrimitive', {'header': 'dolfin/generation/CSGPrimitive.h', 'submodule': 'generation', 'derived': ['Box', 'Cylinder', 'CSGPrimitive2D', 'Polygon', 'Tetrahedron', 'Sphere', 'Surface3D', 'Circle', 'CSGPrimitive3D', 'Ellipse', 'Rectangle', 'Cone'], 'bases': ['Variable', 'CSGGeometry'], 'module': 'mesh'}), ('Circle', {'header': 'dolfin/generation/CSGPrimitives2D.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'CSGPrimitive', 'CSGGeometry', 'CSGPrimitive2D'], 'module': 'mesh'}), ('CSGPrimitive2D', {'header': 'dolfin/generation/CSGPrimitives2D.h', 'submodule': 'generation', 'derived': ['Circle', 'Ellipse', 'Rectangle', 'Polygon'], 'bases': ['Variable', 'CSGGeometry', 'CSGPrimitive'], 'module': 'mesh'}), ('Ellipse', {'header': 'dolfin/generation/CSGPrimitives2D.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'CSGPrimitive', 'CSGGeometry', 'CSGPrimitive2D'], 'module': 'mesh'}), ('Rectangle', {'header': 'dolfin/generation/CSGPrimitives2D.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'CSGPrimitive', 'CSGGeometry', 'CSGPrimitive2D'], 'module': 'mesh'}), ('Polygon', {'header': 'dolfin/generation/CSGPrimitives2D.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'CSGPrimitive', 'CSGGeometry', 'CSGPrimitive2D'], 'module': 'mesh'}), ('Box', {'header': 'dolfin/generation/CSGPrimitives3D.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'CSGGeometry', 'CSGPrimitive3D', 'CSGPrimitive'], 'module': 'mesh'}), ('Cylinder', {'header': 'dolfin/generation/CSGPrimitives3D.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'CSGGeometry', 'CSGPrimitive3D', 'CSGPrimitive', 'Cone'], 'module': 'mesh'}), ('Tetrahedron', {'header': 'dolfin/generation/CSGPrimitives3D.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'CSGGeometry', 'CSGPrimitive3D', 'CSGPrimitive'], 'module': 'mesh'}), ('Sphere', {'header': 'dolfin/generation/CSGPrimitives3D.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'CSGGeometry', 'CSGPrimitive3D', 'CSGPrimitive'], 'module': 'mesh'}), ('Cone', {'header': 'dolfin/generation/CSGPrimitives3D.h', 'submodule': 'generation', 'derived': ['Cylinder'], 'bases': ['Variable', 'CSGGeometry', 'CSGPrimitive3D', 'CSGPrimitive'], 'module': 'mesh'}), ('CSGPrimitive3D', {'header': 'dolfin/generation/CSGPrimitives3D.h', 'submodule': 'generation', 'derived': ['Box', 'Cylinder', 'Tetrahedron', 'Sphere', 'Surface3D', 'Cone'], 'bases': ['Variable', 'CSGGeometry', 'CSGPrimitive'], 'module': 'mesh'}), ('Surface3D', {'header': 'dolfin/generation/CSGPrimitives3D.h', 'submodule': 'generation', 'derived': [], 'bases': ['Variable', 'CSGGeometry', 'CSGPrimitive3D', 'CSGPrimitive'], 'module': 'mesh'}), ('CSGGeometries', {'header': 'dolfin/generation/CSGGeometries3D.h', 'submodule': 'generation', 'derived': [], 'bases': [], 'module': 'mesh'}), ('ImplicitSurface', {'header': 'dolfin/geometry/ImplicitSurface.h', 'submodule': 'geometry', 'derived': [], 'bases': [], 'module': 'mesh'}), ('Point', {'header': 'dolfin/geometry/Point.h', 'submodule': 'geometry', 'derived': [], 'bases': [], 'module': 'mesh'}), ('BoundingBoxTree', {'header': 'dolfin/geometry/BoundingBoxTree.h', 'submodule': 'geometry', 'derived': [], 'bases': [], 'module': 'mesh'}), ('GenericBoundingBoxTree', {'header': 'dolfin/geometry/GenericBoundingBoxTree.h', 'submodule': 'geometry', 'derived': ['BoundingBoxTree3D'], 'bases': [], 'module': 'mesh'}), ('BoundingBoxTree3D', {'header': 'dolfin/geometry/BoundingBoxTree3D.h', 'submodule': 'geometry', 'derived': [], 'bases': ['GenericBoundingBoxTree'], 'module': 'mesh'}), ('MeshPointIntersection', {'header': 'dolfin/geometry/MeshPointIntersection.h', 'submodule': 'geometry', 'derived': [], 'bases': [], 'module': 'mesh'}), ('graph_set_type', {'header': 'dolfin/graph/Graph.h', 'submodule': 'graph', 'derived': [], 'bases': [], 'module': 'mesh'}), ('Graph', {'header': 'dolfin/graph/Graph.h', 'submodule': 'graph', 'derived': [], 'bases': [], 'module': 'mesh'}), ('GraphBuilder', {'header': 'dolfin/graph/GraphBuilder.h', 'submodule': 'graph', 'derived': [], 'bases': [], 'module': 'mesh'}), ('BoostGraphOrdering', {'header': 'dolfin/graph/BoostGraphOrdering.h', 'submodule': 'graph', 'derived': [], 'bases': [], 'module': 'mesh'}), ('SCOTCH', {'header': 'dolfin/graph/SCOTCH.h', 'submodule': 'graph', 'derived': [], 'bases': [], 'module': 'mesh'}), ('ALE', {'header': 'dolfin/ale/ALE.h', 'submodule': 'ale', 'derived': [], 'bases': [], 'module': 'mesh'}), ('MeshDisplacement', {'header': 'dolfin/ale/MeshDisplacement.h', 'submodule': 'ale', 'derived': [], 'bases': ['Variable', 'GenericFunction', 'Expression', 'ufc::function'], 'module': 'mesh'}), ('GenericFunction', {'header': 'dolfin/function/GenericFunction.h', 'submodule': 'function', 'derived': ['Function', 'MeshDisplacement', 'Constant', 'SpecialFacetFunction', 'MeshCoordinates', 'Expression', 'FacetArea'], 'bases': ['Variable', 'ufc::function'], 'module': 'function'}), ('Expression', {'header': 'dolfin/function/Expression.h', 'submodule': 'function', 'derived': ['MeshDisplacement', 'FacetArea', 'Constant', 'SpecialFacetFunction', 'MeshCoordinates'], 'bases': ['Variable', 'ufc::function', 'GenericFunction'], 'module': 'function'}), ('FunctionAXPY', {'header': 'dolfin/function/FunctionAXPY.h', 'submodule': 'function', 'derived': [], 'bases': [], 'module': 'function'}), ('Function', {'header': 'dolfin/function/Function.h', 'submodule': 'function', 'derived': [], 'bases': ['Variable', 'ufc::function', 'Hierarchical', 'GenericFunction'], 'module': 'function'}), ('FunctionSpace', {'header': 'dolfin/function/FunctionSpace.h', 'submodule': 'function', 'derived': ['SubSpace'], 'bases': ['Variable', 'Hierarchical'], 'module': 'function'}), ('SubSpace', {'header': 'dolfin/function/SubSpace.h', 'submodule': 'function', 'derived': [], 'bases': ['Variable', 'Hierarchical', 'FunctionSpace'], 'module': 'function'}), ('Constant', {'header': 'dolfin/function/Constant.h', 'submodule': 'function', 'derived': [], 'bases': ['Variable', 'ufc::function', 'Expression', 'GenericFunction'], 'module': 'function'}), ('FacetArea', {'header': 'dolfin/function/SpecialFunctions.h', 'submodule': 'function', 'derived': [], 'bases': ['Variable', 'ufc::function', 'Expression', 'GenericFunction'], 'module': 'function'}), ('MeshCoordinates', {'header': 'dolfin/function/SpecialFunctions.h', 'submodule': 'function', 'derived': [], 'bases': ['Variable', 'ufc::function', 'Expression', 'GenericFunction'], 'module': 'function'}), ('SpecialFacetFunction', {'header': 'dolfin/function/SpecialFacetFunction.h', 'submodule': 'function', 'derived': [], 'bases': ['Variable', 'ufc::function', 'Expression', 'GenericFunction'], 'module': 'function'}), ('CCFEMFunctionSpace', {'header': 'dolfin/function/CCFEMFunctionSpace.h', 'submodule': 'function', 'derived': [], 'bases': [], 'module': 'function'}), ('FunctionAssigner', {'header': 'dolfin/function/FunctionAssigner.h', 'submodule': 'function', 'derived': [], 'bases': [], 'module': 'function'}), ('CCFEMFunction', {'header': 'dolfin/function/CCFEMFunction.h', 'submodule': 'function', 'derived': [], 'bases': [], 'module': 'function'}), ('Lagrange', {'header': 'dolfin/math/Lagrange.h', 'submodule': 'math', 'derived': [], 'bases': ['Variable'], 'module': 'function'}), ('Legendre', {'header': 'dolfin/math/Legendre.h', 'submodule': 'math', 'derived': [], 'bases': [], 'module': 'function'}), ('GenericDofMap', {'header': 'dolfin/fem/GenericDofMap.h', 'submodule': 'fem', 'derived': ['DofMap', 'CCFEMDofMap'], 'bases': ['Variable'], 'module': 'fem'}), ('DofMap', {'header': 'dolfin/fem/DofMap.h', 'submodule': 'fem', 'derived': [], 'bases': ['Variable', 'GenericDofMap'], 'module': 'fem'}), ('Equation', {'header': 'dolfin/fem/Equation.h', 'submodule': 'fem', 'derived': [], 'bases': [], 'module': 'fem'}), ('FiniteElement', {'header': 'dolfin/fem/FiniteElement.h', 'submodule': 'fem', 'derived': [], 'bases': [], 'module': 'fem'}), ('BasisFunction', {'header': 'dolfin/fem/BasisFunction.h', 'submodule': 'fem', 'derived': [], 'bases': ['ufc::function'], 'module': 'fem'}), ('DirichletBC', {'header': 'dolfin/fem/DirichletBC.h', 'submodule': 'fem', 'derived': [], 'bases': ['Variable', 'Hierarchical'], 'module': 'fem'}), ('PointSource', {'header': 'dolfin/fem/PointSource.h', 'submodule': 'fem', 'derived': [], 'bases': [], 'module': 'fem'}), ('LocalSolver', {'header': 'dolfin/fem/LocalSolver.h', 'submodule': 'fem', 'derived': [], 'bases': [], 'module': 'fem'}), ('Form', {'header': 'dolfin/fem/Form.h', 'submodule': 'fem', 'derived': ['GoalFunctional'], 'bases': ['Hierarchical'], 'module': 'fem'}), ('AssemblerBase', {'header': 'dolfin/fem/AssemblerBase.h', 'submodule': 'fem', 'derived': ['SystemAssembler', 'Assembler', 'OpenMpAssembler'], 'bases': [], 'module': 'fem'}), ('Assembler', {'header': 'dolfin/fem/Assembler.h', 'submodule': 'fem', 'derived': [], 'bases': ['AssemblerBase'], 'module': 'fem'}), ('SparsityPatternBuilder', {'header': 'dolfin/fem/SparsityPatternBuilder.h', 'submodule': 'fem', 'derived': [], 'bases': [], 'module': 'fem'}), ('SystemAssembler', {'header': 'dolfin/fem/SystemAssembler.h', 'submodule': 'fem', 'derived': [], 'bases': ['AssemblerBase'], 'module': 'fem'}), ('LinearVariationalProblem', {'header': 'dolfin/fem/LinearVariationalProblem.h', 'submodule': 'fem', 'derived': [], 'bases': ['Hierarchical'], 'module': 'fem'}), ('LinearVariationalSolver', {'header': 'dolfin/fem/LinearVariationalSolver.h', 'submodule': 'fem', 'derived': [], 'bases': ['Variable'], 'module': 'fem'}), ('NonlinearVariationalProblem', {'header': 'dolfin/fem/NonlinearVariationalProblem.h', 'submodule': 'fem', 'derived': [], 'bases': ['Hierarchical'], 'module': 'fem'}), ('NonlinearVariationalSolver', {'header': 'dolfin/fem/NonlinearVariationalSolver.h', 'submodule': 'fem', 'derived': [], 'bases': ['Variable'], 'module': 'fem'}), ('CCFEMForm', {'header': 'dolfin/fem/CCFEMForm.h', 'submodule': 'fem', 'derived': [], 'bases': [], 'module': 'fem'}), ('CCFEMDofMap', {'header': 'dolfin/fem/CCFEMDofMap.h', 'submodule': 'fem', 'derived': [], 'bases': ['Variable', 'GenericDofMap'], 'module': 'fem'}), ('CCFEMAssembler', {'header': 'dolfin/fem/CCFEMAssembler.h', 'submodule': 'fem', 'derived': [], 'bases': [], 'module': 'fem'}), ('OpenMpAssembler', {'header': 'dolfin/fem/OpenMpAssembler.h', 'submodule': 'fem', 'derived': [], 'bases': ['AssemblerBase'], 'module': 'fem'}), ('VariationalProblem', {'header': 'dolfin/fem/VariationalProblem.h', 'submodule': 'fem', 'derived': [], 'bases': [], 'module': 'fem'}), ('MultiStageScheme', {'header': 'dolfin/multistage/MultiStageScheme.h', 'submodule': 'multistage', 'derived': [], 'bases': ['Variable'], 'module': 'fem'}), ('RKSolver', {'header': 'dolfin/multistage/RKSolver.h', 'submodule': 'multistage', 'derived': [], 'bases': [], 'module': 'fem'}), ('PointIntegralSolver', {'header': 'dolfin/multistage/PointIntegralSolver.h', 'submodule': 'multistage', 'derived': [], 'bases': ['Variable'], 'module': 'fem'}), ('GenericAdaptiveVariationalSolver', {'header': 'dolfin/adaptivity/GenericAdaptiveVariationalSolver.h', 'submodule': 'adaptivity', 'derived': ['AdaptiveLinearVariationalSolver', 'AdaptiveNonlinearVariationalSolver'], 'bases': ['Variable'], 'module': 'fem'}), ('AdaptiveLinearVariationalSolver', {'header': 'dolfin/adaptivity/AdaptiveLinearVariationalSolver.h', 'submodule': 'adaptivity', 'derived': [], 'bases': ['Variable', 'GenericAdaptiveVariationalSolver'], 'module': 'fem'}), ('AdaptiveNonlinearVariationalSolver', {'header': 'dolfin/adaptivity/AdaptiveNonlinearVariationalSolver.h', 'submodule': 'adaptivity', 'derived': [], 'bases': ['Variable', 'GenericAdaptiveVariationalSolver'], 'module': 'fem'}), ('GoalFunctional', {'header': 'dolfin/adaptivity/GoalFunctional.h', 'submodule': 'adaptivity', 'derived': [], 'bases': ['Hierarchical', 'Form'], 'module': 'fem'}), ('ErrorControl', {'header': 'dolfin/adaptivity/ErrorControl.h', 'submodule': 'adaptivity', 'derived': [], 'bases': ['Variable', 'Hierarchical'], 'module': 'fem'}), ('Extrapolation', {'header': 'dolfin/adaptivity/Extrapolation.h', 'submodule': 'adaptivity', 'derived': [], 'bases': [], 'module': 'fem'}), ('LocalAssembler', {'header': 'dolfin/adaptivity/LocalAssembler.h', 'submodule': 'adaptivity', 'derived': [], 'bases': [], 'module': 'fem'}), ('TimeSeries', {'header': 'dolfin/adaptivity/TimeSeries.h', 'submodule': 'adaptivity', 'derived': [], 'bases': ['Variable'], 'module': 'fem'}), ('TimeSeriesHDF5', {'header': 'dolfin/adaptivity/TimeSeriesHDF5.h', 'submodule': 'adaptivity', 'derived': [], 'bases': ['Variable'], 'module': 'fem'}), ('VTKPlotter', {'header': 'dolfin/plot/VTKPlotter.h', 'submodule': 'plot', 'derived': [], 'bases': ['Variable'], 'module': 'io'}), ('GenericFile', {'header': 'dolfin/io/GenericFile.h', 'submodule': 'io', 'derived': ['XDMFFile'], 'bases': [], 'module': 'io'}), ('File', {'header': 'dolfin/io/File.h', 'submodule': 'io', 'derived': [], 'bases': [], 'module': 'io'}), ('XDMFFile', {'header': 'dolfin/io/XDMFFile.h', 'submodule': 'io', 'derived': [], 'bases': ['Variable', 'GenericFile'], 'module': 'io'}), ('HDF5File', {'header': 'dolfin/io/HDF5File.h', 'submodule': 'io', 'derived': [], 'bases': ['Variable'], 'module': 'io'}), ('HDF5Attribute', {'header': 'dolfin/io/HDF5Attribute.h', 'submodule': 'io', 'derived': [], 'bases': [], 'module': 'io'}),]) # A map between modules and its submodules module_to_submodules = OrderedDict([\ ('common', ['common', 'parameter', 'log']), ('la', ['la', 'nls']), ('mesh', ['mesh', 'generation', 'geometry', 'refinement', 'graph', 'ale']), ('function', ['function', 'math']), ('fem', ['fem', 'multistage', 'adaptivity']), ('io', ['plot', 'io']),]) # A reverse map between submodules and modules submodule_info = OrderedDict([\ ('common', {'headers': ['dolfin/common/init.h', 'dolfin/common/defines.h', 'dolfin/common/types.h', 'dolfin/common/constants.h', 'dolfin/common/timing.h', 'dolfin/common/Array.h', 'dolfin/common/IndexSet.h', 'dolfin/common/Set.h', 'dolfin/common/Timer.h', 'dolfin/common/Variable.h', 'dolfin/common/Hierarchical.h', 'dolfin/common/MPI.h', 'dolfin/common/SubSystemsManager.h'], 'has_post': True, 'module': 'common', 'has_pre': True}), ('parameter', {'headers': ['dolfin/parameter/Parameter.h', 'dolfin/parameter/Parameters.h', 'dolfin/parameter/GlobalParameters.h'], 'has_post': True, 'module': 'common', 'has_pre': True}), ('log', {'headers': ['dolfin/log/log.h', 'dolfin/log/Event.h', 'dolfin/log/Progress.h', 'dolfin/log/Table.h', 'dolfin/log/LogLevel.h'], 'has_post': True, 'module': 'common', 'has_pre': True}), ('la', {'headers': ['dolfin/la/ublas.h', 'dolfin/la/LinearAlgebraObject.h', 'dolfin/la/GenericLinearOperator.h', 'dolfin/la/GenericTensor.h', 'dolfin/la/GenericMatrix.h', 'dolfin/la/GenericSparsityPattern.h', 'dolfin/la/GenericVector.h', 'dolfin/la/VectorSpaceBasis.h', 'dolfin/la/GenericLinearSolver.h', 'dolfin/la/GenericLUSolver.h', 'dolfin/la/GenericPreconditioner.h', 'dolfin/la/PETScOptions.h', 'dolfin/la/PETScObject.h', 'dolfin/la/PETScBaseMatrix.h', 'dolfin/la/uBLASFactory.h', 'dolfin/la/uBLASMatrix.h', 'dolfin/la/uBLASLinearOperator.h', 'dolfin/la/PETScMatrix.h', 'dolfin/la/PETScLinearOperator.h', 'dolfin/la/PETScPreconditioner.h', 'dolfin/la/EpetraLUSolver.h', 'dolfin/la/EpetraKrylovSolver.h', 'dolfin/la/EpetraMatrix.h', 'dolfin/la/EpetraVector.h', 'dolfin/la/PETScKrylovSolver.h', 'dolfin/la/PETScLUSolver.h', 'dolfin/la/CholmodCholeskySolver.h', 'dolfin/la/UmfpackLUSolver.h', 'dolfin/la/MUMPSLUSolver.h', 'dolfin/la/PaStiXLUSolver.h', 'dolfin/la/STLMatrix.h', 'dolfin/la/CoordinateMatrix.h', 'dolfin/la/uBLASVector.h', 'dolfin/la/PETScVector.h', 'dolfin/la/SparsityPattern.h', 'dolfin/la/GenericLinearAlgebraFactory.h', 'dolfin/la/DefaultFactory.h', 'dolfin/la/PETScUserPreconditioner.h', 'dolfin/la/PETScFactory.h', 'dolfin/la/PETScCuspFactory.h', 'dolfin/la/EpetraFactory.h', 'dolfin/la/STLFactory.h', 'dolfin/la/SLEPcEigenSolver.h', 'dolfin/la/TrilinosPreconditioner.h', 'dolfin/la/uBLASSparseMatrix.h', 'dolfin/la/uBLASDenseMatrix.h', 'dolfin/la/uBLASPreconditioner.h', 'dolfin/la/uBLASKrylovSolver.h', 'dolfin/la/uBLASILUPreconditioner.h', 'dolfin/la/Vector.h', 'dolfin/la/Matrix.h', 'dolfin/la/Scalar.h', 'dolfin/la/LinearSolver.h', 'dolfin/la/KrylovSolver.h', 'dolfin/la/LUSolver.h', 'dolfin/la/solve.h', 'dolfin/la/BlockVector.h', 'dolfin/la/BlockMatrix.h', 'dolfin/la/TensorProductVector.h', 'dolfin/la/TensorProductMatrix.h', 'dolfin/la/LinearOperator.h'], 'has_post': True, 'module': 'la', 'has_pre': True}), ('nls', {'headers': ['dolfin/nls/NonlinearProblem.h', 'dolfin/nls/NewtonSolver.h', 'dolfin/nls/PETScSNESSolver.h', 'dolfin/nls/TAOLinearBoundSolver.h'], 'has_post': False, 'module': 'la', 'has_pre': True}), ('mesh', {'headers': ['dolfin/mesh/CellType.h', 'dolfin/mesh/MeshTopology.h', 'dolfin/mesh/MeshGeometry.h', 'dolfin/mesh/MeshDomains.h', 'dolfin/mesh/MeshData.h', 'dolfin/mesh/Mesh.h', 'dolfin/mesh/MeshEntity.h', 'dolfin/mesh/MeshEntityIterator.h', 'dolfin/mesh/MeshEntityIteratorBase.h', 'dolfin/mesh/SubsetIterator.h', 'dolfin/mesh/Vertex.h', 'dolfin/mesh/Edge.h', 'dolfin/mesh/Face.h', 'dolfin/mesh/Facet.h', 'dolfin/mesh/Cell.h', 'dolfin/mesh/FacetCell.h', 'dolfin/mesh/MeshConnectivity.h', 'dolfin/mesh/MeshEditor.h', 'dolfin/mesh/DynamicMeshEditor.h', 'dolfin/mesh/LocalMeshValueCollection.h', 'dolfin/mesh/MeshFunction.h', 'dolfin/mesh/MeshPartitioning.h', 'dolfin/mesh/MeshValueCollection.h', 'dolfin/mesh/MeshColoring.h', 'dolfin/mesh/MeshRenumbering.h', 'dolfin/mesh/MeshTransformation.h', 'dolfin/mesh/LocalMeshData.h', 'dolfin/mesh/SubDomain.h', 'dolfin/mesh/SubMesh.h', 'dolfin/mesh/Restriction.h', 'dolfin/mesh/DomainBoundary.h', 'dolfin/mesh/BoundaryMesh.h', 'dolfin/mesh/PeriodicBoundaryComputation.h', 'dolfin/mesh/MeshQuality.h'], 'has_post': True, 'module': 'mesh', 'has_pre': True}), ('generation', {'headers': ['dolfin/generation/ImplicitDomainMeshGenerator.h', 'dolfin/generation/PolygonalMeshGenerator.h', 'dolfin/generation/PolyhedralMeshGenerator.h', 'dolfin/generation/Triangulate.h', 'dolfin/generation/BoxMesh.h', 'dolfin/generation/EllipseMesh.h', 'dolfin/generation/EllipsoidMesh.h', 'dolfin/generation/IntervalMesh.h', 'dolfin/generation/Interval.h', 'dolfin/generation/RectangleMesh.h', 'dolfin/generation/UnitTetrahedronMesh.h', 'dolfin/generation/UnitCubeMesh.h', 'dolfin/generation/UnitCube.h', 'dolfin/generation/UnitIntervalMesh.h', 'dolfin/generation/UnitInterval.h', 'dolfin/generation/UnitTriangleMesh.h', 'dolfin/generation/UnitSquareMesh.h', 'dolfin/generation/UnitSquare.h', 'dolfin/generation/UnitCircleMesh.h', 'dolfin/generation/UnitCircle.h', 'dolfin/generation/CSGGeometry.h', 'dolfin/generation/CSGMeshGenerator.h', 'dolfin/generation/CSGCGALMeshGenerator2D.h', 'dolfin/generation/CSGCGALMeshGenerator3D.h', 'dolfin/generation/CSGOperators.h', 'dolfin/generation/CSGPrimitive.h', 'dolfin/generation/CSGPrimitives2D.h', 'dolfin/generation/CSGPrimitives3D.h', 'dolfin/generation/CSGGeometries3D.h'], 'has_post': True, 'module': 'mesh', 'has_pre': False}), ('geometry', {'headers': ['dolfin/geometry/ImplicitSurface.h', 'dolfin/geometry/Point.h', 'dolfin/geometry/BoundingBoxTree.h', 'dolfin/geometry/GenericBoundingBoxTree.h', 'dolfin/geometry/BoundingBoxTree3D.h', 'dolfin/geometry/MeshPointIntersection.h', 'dolfin/geometry/intersect.h'], 'has_post': True, 'module': 'mesh', 'has_pre': True}), ('refinement', {'headers': ['dolfin/refinement/refine.h'], 'has_post': False, 'module': 'mesh', 'has_pre': False}), ('function', {'headers': ['dolfin/function/GenericFunction.h', 'dolfin/function/Expression.h', 'dolfin/function/FunctionAXPY.h', 'dolfin/function/Function.h', 'dolfin/function/FunctionSpace.h', 'dolfin/function/SubSpace.h', 'dolfin/function/Constant.h', 'dolfin/function/SpecialFunctions.h', 'dolfin/function/SpecialFacetFunction.h', 'dolfin/function/CCFEMFunctionSpace.h', 'dolfin/function/FunctionAssigner.h', 'dolfin/function/assign.h', 'dolfin/function/CCFEMFunction.h'], 'has_post': True, 'module': 'function', 'has_pre': True}), ('graph', {'headers': ['dolfin/graph/Graph.h', 'dolfin/graph/GraphBuilder.h', 'dolfin/graph/BoostGraphOrdering.h', 'dolfin/graph/SCOTCH.h'], 'has_post': True, 'module': 'mesh', 'has_pre': False}), ('plot', {'headers': ['dolfin/plot/plot.h', 'dolfin/plot/VTKPlotter.h'], 'has_post': False, 'module': 'io', 'has_pre': False}), ('math', {'headers': ['dolfin/math/basic.h', 'dolfin/math/Lagrange.h', 'dolfin/math/Legendre.h'], 'has_post': False, 'module': 'function', 'has_pre': False}), ('ale', {'headers': ['dolfin/ale/ALE.h', 'dolfin/ale/MeshDisplacement.h'], 'has_post': False, 'module': 'mesh', 'has_pre': True}), ('fem', {'headers': ['dolfin/fem/GenericDofMap.h', 'dolfin/fem/DofMap.h', 'dolfin/fem/fem_utils.h', 'dolfin/fem/Equation.h', 'dolfin/fem/FiniteElement.h', 'dolfin/fem/BasisFunction.h', 'dolfin/fem/DirichletBC.h', 'dolfin/fem/PointSource.h', 'dolfin/fem/assemble.h', 'dolfin/fem/LocalSolver.h', 'dolfin/fem/solve.h', 'dolfin/fem/Form.h', 'dolfin/fem/AssemblerBase.h', 'dolfin/fem/Assembler.h', 'dolfin/fem/SparsityPatternBuilder.h', 'dolfin/fem/SystemAssembler.h', 'dolfin/fem/LinearVariationalProblem.h', 'dolfin/fem/LinearVariationalSolver.h', 'dolfin/fem/NonlinearVariationalProblem.h', 'dolfin/fem/NonlinearVariationalSolver.h', 'dolfin/fem/CCFEMForm.h', 'dolfin/fem/CCFEMDofMap.h', 'dolfin/fem/CCFEMAssembler.h', 'dolfin/fem/OpenMpAssembler.h', 'dolfin/fem/VariationalProblem.h'], 'has_post': True, 'module': 'fem', 'has_pre': True}), ('multistage', {'headers': ['dolfin/multistage/MultiStageScheme.h', 'dolfin/multistage/RKSolver.h', 'dolfin/multistage/PointIntegralSolver.h'], 'has_post': False, 'module': 'fem', 'has_pre': True}), ('adaptivity', {'headers': ['dolfin/adaptivity/GenericAdaptiveVariationalSolver.h', 'dolfin/adaptivity/AdaptiveLinearVariationalSolver.h', 'dolfin/adaptivity/AdaptiveNonlinearVariationalSolver.h', 'dolfin/adaptivity/GoalFunctional.h', 'dolfin/adaptivity/ErrorControl.h', 'dolfin/adaptivity/Extrapolation.h', 'dolfin/adaptivity/LocalAssembler.h', 'dolfin/adaptivity/TimeSeries.h', 'dolfin/adaptivity/TimeSeriesHDF5.h', 'dolfin/adaptivity/adapt.h', 'dolfin/adaptivity/marking.h', 'dolfin/adaptivity/adaptivesolve.h'], 'has_post': True, 'module': 'fem', 'has_pre': True}), ('io', {'headers': ['dolfin/io/GenericFile.h', 'dolfin/io/File.h', 'dolfin/io/XDMFFile.h', 'dolfin/io/HDF5File.h', 'dolfin/io/HDF5Attribute.h'], 'has_post': True, 'module': 'io', 'has_pre': True}),]) dolfin-1.3.0/site-packages/dolfin/compilemodules/subdomains.py0000644000175000017500000001572312263014601024403 0ustar johannrjohannr"This module provides functionality for compilation of strings as dolfin SubDomains." # Copyright (C) 2008-2008 Martin Sandve Alnes # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2008-07-01 # Last changed: 2011-04-18 import re import os import hashlib import instant # Import local compile_extension_module from dolfin.compilemodules.compilemodule import (compile_extension_module, expression_to_code_fragments, math_header) from dolfin.cpp import deprecation import dolfin.cpp as cpp __all__ = ["compile_subdomains", "CompiledSubDomain"] _map_args = ["x", "y"] _subdomain_template = """ class %(classname)s: public SubDomain { public: %(members)s %(classname)s() { %(constructor)s } /// Return true for points inside the sub domain bool inside(const Array& x, bool on_boundary) const { %(inside)s } }; """ # TODO: Support implementation of map as well """ /// Map coordinate x in domain H to coordinate y in domain G (used for periodic boundary conditions) void map(const Array& x, Array& y) const { %(map)s } """ def expression_to_subdomain(cpparg, classname): """ Generate code for a :py:class:`SubDomain ` subclass for a single expression. """ # Assure we have a simple string expression assert isinstance(cpparg, str) # Extract code fragments from the expr and defaults fragments, members = expression_to_code_fragments(\ [cpparg], ["x", "on_boundary", "DOLFIN_EPS"]) # Generate code for inside() insidecode = " return %s;" % cpparg # Generate code for map() #mapcode = "..." # Connect the code fragments using the function template code fragments["inside"] = insidecode fragments["classname"] = classname #fragments["map"] = mapcode code = _subdomain_template % fragments return code, members def compile_subdomain_code(code, classname): # Complete the code code = math_header + \ """ namespace dolfin { %s } """ % code # Compile the extension module compiled_module = compile_extension_module(code) # Get compiled class return getattr(compiled_module, classname) def CompiledSubDomain(cppcode, **kwargs): """ Compile a C++ string expression into a :py:class:`SubDomain ` instance. *Arguments* cppcode a string containing an expression in C++ syntax. If the string contains a name, it is assumed to be a scalar variable name, and is added as a public member of the generated subdomain. All such members need a default initial value. If the string contains a class name it is interpreted as a complete implementations of subclasses of :py:class:`SubDomain `. *Examples of usage* .. code-block:: python left = CompiledSubDomain("near(x[0], 0) && on_boundary") right = CompiledSubDomain("near(x[1], 1) && on_boundary") center = CompiledSubDomain("near(x[1], c)", c = 0.5) """ if not isinstance(cppcode, str): raise TypeError("expected a 'str'") if isinstance(cppcode, str) and "class" in cppcode and \ "SubDomain" in cppcode: members = [] classname = re.findall(r"class[ ]+([\w]+).*", code)[0] code = cppcode else: classname = "CompiledSubDomain" + hashlib.md5(cppcode).hexdigest() code, members = expression_to_subdomain(cppcode, classname) SubDomainClass = compile_subdomain_code(code, classname) # Check passed default arguments not_allowed = [n for n in dir(cpp.SubDomain) if n[0] !="_"] not_allowed += ["cppcode"] if not all(member in kwargs for member in members): missing = [] for member in members: if member not in kwargs: missing.append(member) missing = ", ".join("'%s'" % miss for miss in missing) raise RuntimeError("expected a default value to all member "\ "variables in the SubDomain. Missing: %s." % missing) for name in kwargs.keys(): if name in not_allowed: raise RuntimeError("Parameter name: '%s' is not allowed. It is "\ "part of the interface of SubDomain" % name) if not (all(isinstance(value, (int, float)) \ for value in kwargs.values())): raise TypeError("expected default arguments for member variables "\ "to be scalars.") # Store compile arguments for possible later use SubDomainClass.cppcode = cppcode # Instantiate CompiledSubDomain subdomain = SubDomainClass() # Set default variables for member, value in kwargs.items(): setattr(subdomain, member, value) return subdomain def compile_subdomains(cppcode): """ Compile C++ string expressions into SubDomain instances. *Arguments* expressions a string or a list of strings containing expressions in C++ syntax. NOTE: This function is deprecated. Use CompiledSubDomain instead. If expressions is a `str`, it is interpreted as a C++ string with complete implementations of subclasses of SubDomain. The compiled subdomains returned will be in the same order as they are defined in this code. If it is a list, each item of the list is interpreted as a logical `inside` expression, and the compiled subdomains returned will be in the same order as they occur in this list. If an expression string contains a name, it is assumed to be a scalar variable name, and is added as a public member of the generated subdomain. *Examples of usage* .. code-block:: python left = compile_subdomains("x[0] == 0") right = compile_subdomains("x[1] == 1") or .. code-block:: python bc = compile_subdomains(["x[0] == 0", "x[1] == 1"]) """ deprecation("compile_subdomains", "1.3.0", \ "compiled_subdomains has been renamed to CompiledSubDomain.") # If passing a list we compile each SubDomain on its own if isinstance(cppcode, list): return [CompiledSubDomain(code_str) for code_str in cppcode] return CompiledSubDomain(cppcode) dolfin-1.3.0/site-packages/dolfin/compilemodules/compilemodule.py0000644000175000017500000004257212263014601025077 0ustar johannrjohannr"""This module provides functionality to compile PyDOLFIN compatible extension modules.""" # Copyright (C) 2009 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Johannes Ring, 2011 # # First added: 2009-08-15 # Last changed: 2011-08-31 import sys import os import re import numpy import instant import hashlib import types from dolfin_utils.cppparser import * # Import PyDOLFIN import dolfin import dolfin.cpp as cpp from dolfin.compilemodules.jit import mpi_jit_decorator from dolfin.compilemodules.swigimportinfo import * __all__ = ["compile_extension_module", "expression_to_code_fragments", "math_header"] # Bump the interface version if anything changes that invalidates cached # modules (not required for change in generated code, swig version or dolfin # version) _interface_version = 1 # A list of supported math builtins _cpp_math_builtins = [ # functions: from http://www.cplusplus.com/reference/cmath/ "cos", "sin", "tan", "acos", "asin", "atan", "atan2", "cosh", "sinh", "tanh", "exp", "frexp", "ldexp", "log", "log10", "modf", "pow", "sqrt", "ceil", "fabs", "floor", "fmod", "max", "min"] _math_builtins = [ # math.h functions: http://en.wikibooks.org/wiki/C_Programming/C_Reference/math.h "acos", "asin", "atan", "atan2", "ceil", "cos", "cosh", "exp", "fabs", "floor", "fmod", "frexp", "ldexp", "log", "log10", "modf", "pow", "sin", "sinh", "sqrt", "tan", "tanh", "acosh", "asinh", "atanh", "cbrt", "copysign", "erf", "erfc", "exp2", "expm1", "fdim", "fma", "fmax", "fmin", "hypot", "ilogb", "lgamma", "llrint", "lrint", "llround", "lround", "log1p", "log2", "logb", "nan", "nearbyint", "nextafter", "nexttoward", "remainder", "remquo", "rint", "round", "scalbln", "scalbn", "tgamma", "trunc"] _math_dolfin = [ # functions from dolfin::math: "sqr", "ipow", "rand", "near", "DOLFIN_EPS", "DOLFIN_PI", "pi"] _all_math = list(set(_math_builtins).difference(_cpp_math_builtins)) + \ _math_dolfin + _cpp_math_builtins math_header = """ // cmath functions %s const double pi = DOLFIN_PI; """ % "\n".join("using std::%s;" % mf for mf in _cpp_math_builtins) _cpp_keywords = ["auto","const","double","float","int","short","struct","unsigned", "break","continue","else","for","long","signed","switch","void", "case","default","enum","goto","register","sizeof","typedef", "char","do","extern","if","return","static","union","while", "asm","dynamic_cast","namespace","reinterpret_cast","try", "bool","explicit","new","static_cast","typeid","volatile", "catch","operator","template","typename", "class","friend","private","this","using", "const_cast","inline","public","throw","virtual", "delete","mutable","protected","wchar_t", "or","and","xor","not"] _additional_declarations = r""" %%init%%{ import_array(); %%} // Include global SWIG interface files: // Typemaps, shared_ptr declarations, exceptions, version %%include %%{ #define SWIG_SHARED_PTR_QNAMESPACE boost %%} // Global typemaps and forward declarations %%include "dolfin/swig/typemaps/includes.i" %%include "dolfin/swig/forwarddeclarations.i" // Global exceptions %%include %%include "dolfin/swig/exceptions.i" // Do not expand default arguments in C++ by generating two an extra // function in the SWIG layer. This reduces code bloat. %%feature("compactdefaultargs"); // STL SWIG string class %%include // Manually import ufc: %%shared_ptr(ufc::cell_integral) %%shared_ptr(ufc::dofmap) %%shared_ptr(ufc::finite_element) %%shared_ptr(ufc::function) %%shared_ptr(ufc::form) %%shared_ptr(ufc::exterior_facet_integral) %%shared_ptr(ufc::interior_facet_integral) %%import(module="ufc") "ufc.h" // Local shared_ptr declarations %(shared_ptr_declarations)s %(additional_declarations)s // Import statements %(dolfin_import_statement)s %%feature("autodoc", "1"); %%inline %%{ int get_swigversion() { return SWIGVERSION; } %%} %%pythoncode %%{ tmp = hex(get_swigversion()) swigversion = "%%d.%%d.%%d"%%(tuple(map(int, [tmp[-5], tmp[-3], tmp[-2:]]))) del tmp, get_swigversion %%} """ def expression_to_code_fragments(expr, arguments, generic_function_members=None): "A help function which extract a dict with code snippets from an expression" generic_function_members = generic_function_members or [] expr = list(expr) # Autodetect variables from function strings variables = set() for i, c in enumerate(expr): # Find groups of connected alphanumeric letters symbols = re.findall(r"([a-zA-Z_]*:{0,2}[\w]+)", c) assert isinstance(symbols, list) variables.update(symbols) for sym in symbols: if sym in _cpp_keywords: cpp.dolfin_error("compilemodule.py", "parse expression string", "Detected C++ keyword (%s) in C++ expression" % sym) # FIXME: Remove outcommented code? # NOTE: A hack to get around an ambiguous overloading of # dolfin::pow(double,int) #if "pow" in symbols: # c = c.replace("pow","std::pow") expr[i] = c # Remove any variables defined in the arguments list variables.difference_update(arguments) # Remove the builtin math functions from the variables variables.difference_update(_all_math) # Remove the numerals from the variables numerals = [v for v in variables if v[0] in "0123456789"] variables.difference_update(numerals) # Remove any exponential representation exponentials = [v for v in variables if bool(re.search("e[0-9,\-,\.,\+]+", v))] variables.difference_update(exponentials+["e"]) # Remove namespace-specified variables namespacevars = [v for v in variables if "::" in v] variables.difference_update(namespacevars) # Generate code for member variables members_code = [" double %s;" % name for name in variables \ if name not in generic_function_members] members_code.extend(" boost::shared_ptr shared_%s;" % name \ for name in generic_function_members) members_code = "\n".join(members_code) # Generate constructor code for initialization of member variables constructor_code = "\n".join(" %s = 0;" % name for name in variables\ if name not in generic_function_members) # Connect the code fragments using the function template code fragments = {} fragments["members"] = members_code fragments["constructor"] = constructor_code # Return the code fragments return fragments, variables def expect_list_of(argtype, arg, argname): if arg is None: return [] if isinstance(arg, (types.NoneType, list, tuple)): if all(isinstance(s, argtype) for s in arg): return arg cpp.dolfin_error("compilemodule.py", "ensure correct argument for compile_extension_module", "Provide a 'tuple' or 'list' with '%s', for the "\ "'%s' argument" % (argtype.__name__, argname)) def expect_arg(argtype, arg, argname): # Check the type of the argument if isinstance(arg, argtype): return cpp.dolfin_error("compilemodule.py", "ensure correct argument for compile_extension_module", "Provide a '%s', for the '%s' argument" % \ (argtype.__name__, argname)) def check_swig_version(compiled_module): # Check swig version of compiled module if compiled_module and compiled_module.swigversion != cpp.__swigversion__: cpp.dolfin_error("compilemodule.py", "compiling extension module", "Incompatible swig versions detected. DOLFIN swig "\ "version is not the same as extension module swig "\ "version: '%s' != '%s' " % \ (cpp.__swigversion__, compiled_module.swigversion)) @mpi_jit_decorator def compile_extension_module(code, module_name="", additional_declarations="", additional_system_headers=None, **instant_kwargs): """ Just In Time compile DOLFIN C++ code into a Python module. *Arguments* code C++ code which implements any function or C++ class. Any function or class available in the C++ DOLFIN namespace can be used and/or subclassed. All typemaps from the original Python interface are available, making it possible to interface with for example NumPy for Array arguments. Source which is not wrapped in a dolfin namespace will be automatically wrapped. module_name Force a name of the module. If not set a name based on the hex representation of the code will be used. additional_declarations Additional SWIG declarations can be passed using this argument. additional_system_headers : System headers needed to compile the generated can be included using this argument. The headers are passed using a list of 'str' *Returns* The JIT compiled extension module *Examples of usage* The following toy example shows how one can use compiled extension modules to access low level PETSc routines: .. code-block:: python from numpy import arange code = ''' namespace dolfin { void PETSc_exp(boost::shared_ptr vec) { boost::shared_ptr x = vec->vec(); assert(x); VecExp(*x); } } ''' ext_module = compile_extension_module(code, additional_system_headers=["petscvec.h"]) vec = PETScVector(10) vec[:] = arange(10) print vec[-1] ext_module.PETSc_exp(vec) print vec[-1] """ # Check the provided arguments expect_arg(str, code, "first") expect_arg(str, module_name, "module_name") expect_arg(str, additional_declarations, "additional_declarations") additional_system_headers = \ expect_list_of(str, additional_system_headers, "additional_system_headers") # Check that the code does not use 'using namespace dolfin' if re.search("using\s+namespace\s+dolfin",code): cpp.dolfin_error("compilemodule.py", "ensure correct argument to compile_extension_module", "Do not use 'using namespace dolfin'. "\ "Include the code in namespace dolfin {...} instead") # Check if the code does not use namespace dolfin {...} if not re.search("namespace\s+dolfin\s*\{[\s\S]+\}", code): # Wrap and indet code in namespace dolfin codelines = ["namespace dolfin","{"] codelines += [" " + line for line in code.split("\n")] codelines += ["}"] code = "\n".join(codelines) # Create unique module name for this application run if module_name is "": module_name = "dolfin_compile_code_%s" % \ hashlib.md5(repr(code) + dolfin.__version__ + \ str(_interface_version)+\ additional_declarations +\ str(additional_system_headers)).hexdigest() # Extract dolfin dependencies and class names used_types, declared_types = parse_and_extract_type_info(code) # Add any bases of the declared types to used_types for declared_type, bases in declared_types.items(): used_types.update(bases) # Filter out dolfin types and add derived and bases for each type used_dolfin_types = [] for dolfin_type in dolfin_type_def: for used_type in used_types: if dolfin_type in used_type: # Add bases and derived types used_dolfin_types.extend(\ dolfin_type_def[dolfin_type]["bases"]) # Add dolfin type used_dolfin_types.append(dolfin_type) break # Generate dependency info dependencies = {} for dolfin_type in used_dolfin_types: if dolfin_type_def[dolfin_type]["submodule"] not in dependencies: dependencies[dolfin_type_def[dolfin_type]["submodule"]] = [] dependencies[dolfin_type_def[dolfin_type]["submodule"]].append(\ dolfin_type_def[dolfin_type]["header"]) # Need special treatment for template definitions in function/pre.i if "function" in dependencies: for dolfin_type in ["FunctionSpace", "Function"]: dependencies["function"].append(dolfin_type_def[dolfin_type]["header"]) # Add uint type if "common" in dependencies: dependencies["common"].append("dolfin/common/types.h") else: dependencies["common"] = ["dolfin/common/types.h"] # Sort the dependencies dependencies = sort_submodule_dependencies(dependencies, submodule_info) import_lines, headers_includes, file_dependencies = \ build_swig_import_info(dependencies, submodule_info, "dolfin.cpp.") # Extract header info dolfin_system_headers = [header for header in file_dependencies \ if not "pre.i" in header] # Check the handed import files interface_import_files = [] # Check cache compiled_module = instant.import_module(module_name) if compiled_module: # Check that the swig version of the compiled module is the same as # dolfin was compiled with check_swig_version(compiled_module) return compiled_module sys.stdout.flush() dolfin.info("Calling DOLFIN just-in-time (JIT) compiler, this may take some time.") # Configure instant and add additional system headers # Add dolfin system headers instant_kwargs["system_headers"] = ["cmath", "iostream","complex", "stdexcept","numpy/arrayobject.h", "boost/shared_ptr.hpp", "dolfin/common/types.h", "dolfin/math/basic.h"] + \ instant_kwargs.get("system_headers", []) instant_kwargs["system_headers"] += dolfin_system_headers # Add user specified system headers instant_kwargs["system_headers"] += additional_system_headers # Add cmake packages instant_kwargs["cmake_packages"] = ["DOLFIN"] + \ instant_kwargs.get("cmake_packages", []) instant_kwargs["signature"] = module_name declaration_strs = {"additional_declarations":""} declaration_strs["dolfin_import_statement"] = \ "\n".join(import_lines) # Add any provided additional declarations if additional_declarations is not None: declaration_strs["additional_declarations"] += additional_declarations # Add any shared_ptr declarations declaration_strs["shared_ptr_declarations"] = \ extract_shared_ptr_declaration(declared_types, used_dolfin_types, \ shared_ptr_classes) # Compile extension module with instant compiled_module = instant.build_module(\ code = code, additional_declarations = _additional_declarations % declaration_strs, **instant_kwargs) sys.stdout.flush() # Check that the swig version of the compiled module is the same as # dolfin was compiled with check_swig_version(compiled_module) return compiled_module def extract_shared_ptr_declaration(declared_types, used_dolfin_types, shared_ptr_classes): " Extract any declaration for shared_ptr" # Check if there are any classes that is derived from any of the # shared_ptr classes in PyDOLFIN and declare if any shared_ptr_format = "%%shared_ptr(dolfin::%s)" used_shared_ptr_types = [] # Collect used types which should be shared_ptr declared for dolfin_type in used_dolfin_types: if dolfin_type in shared_ptr_classes: used_shared_ptr_types.append(dolfin_type) used_shared_ptr_types.extend(derived for derived, bases in declared_types.items() if any(base in shared_ptr_classes for base in bases)) shared_ptr_declarations = "\n".join([shared_ptr_format % derived \ for derived in used_shared_ptr_types]) return shared_ptr_declarations dolfin-1.3.0/site-packages/dolfin/functions/0000755000175000017500000000000012263014601020644 5ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin/functions/specialfunctions.py0000644000175000017500000000666312263014601024602 0ustar johannrjohannr# -*- coding: utf-8 -*- """This module defines some special functions (originally defined in SpecialFunctions.h).""" # Copyright (C) 2008-2011 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Johan Hake 2008-2009 # Modified by Garth N. Wells 2010 # # First added: 2008-12-08 # Last changed: 2011-11-15 __all__ = ["MeshCoordinates", "FacetArea", "FacetNormal", "CellSize", "CellVolume"] # Import UFL and SWIG-generated extension module (DOLFIN C++) import ufl import dolfin.cpp as cpp # Local imports from dolfin.functions.expression import Expression class MeshCoordinates(Expression, ufl.Coefficient, cpp.MeshCoordinates): def __init__(self, mesh): "Create function that evaluates to the mesh coordinates at each vertex." domain = mesh.ufl_cell() self._ufl_element = ufl.VectorElement("Lagrange", domain, 1) ufl.Coefficient.__init__(self, self._ufl_element) cpp.MeshCoordinates.__init__(self, mesh) MeshCoordinates.__doc__ = cpp.MeshCoordinates.__doc__ class FacetArea(Expression, ufl.Coefficient, cpp.FacetArea): def __init__(self, mesh): """ Create function that evaluates to the facet area/length on each facet. *Arguments* mesh a :py:class:`Mesh `. *Example of usage* .. code-block:: python mesh = UnitSquare(4,4) fa = FacetArea(mesh) """ domain = mesh.ufl_cell() self._ufl_element = ufl.FiniteElement("Discontinuous Lagrange", domain, 0) ufl.Coefficient.__init__(self, self._ufl_element) cpp.FacetArea.__init__(self, mesh) FacetArea.__doc__ = cpp.FacetArea.__doc__ # Simple definition of FacetNormal via UFL def FacetNormal(mesh): """ Return facet normal function for given mesh. *Arguments* mesh a :py:class:`Mesh `. *Example of usage* .. code-block:: python mesh = UnitSquare(4,4) n = FacetNormal(mesh) """ cell = mesh.ufl_cell() return cell.n # Simple definition of CellSize via UFL def CellSize(mesh): """ Return cell size function for given mesh. *Arguments* mesh a :py:class:`Mesh `. *Example of usage* .. code-block:: python mesh = UnitSquare(4,4) h = CellSize(mesh) """ cell = mesh.ufl_cell() return 2.0*cell.circumradius # Simple definition of CellVolume via UFL def CellVolume(mesh): """ Return cell volume function for given mesh. *Arguments* mesh a :py:class:`Mesh `. *Example of usage* .. code-block:: python mesh = UnitSquare(4,4) vol = CellVolume(mesh) """ cell = mesh.ufl_cell() return cell.volume dolfin-1.3.0/site-packages/dolfin/functions/functionspace.py0000644000175000017500000005474312263014601024074 0ustar johannrjohannr""" This module contains functionality for function spaces in particular discrete function spaces defined over meshes in terms of finite elements. """ # Copyright (C) 2008 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Anders Logg 2008 # Modified by Martin Alnes 2008 # Modified by Kent-Andre Mardal 2009 # Modified by Marie E. Rognes 2012 # # First added: 2008-11-03 # Last changed: 2012-12-04 __all__ = ["FunctionSpace", "MixedFunctionSpace", "VectorFunctionSpace", "TensorFunctionSpace", "FunctionSpaceBase","FunctionSpaceFromCpp", "create_ufc_function_spaces"] import copy import numpy # Import UFL and SWIG-generated extension module (DOLFIN C++) import ufl import dolfin.cpp as cpp from dolfin.compilemodules.jit import jit # Mapping from dimension to domain #dim2domain = {1: "interval", 2: "triangle", 3: "tetrahedron"} class FunctionSpaceBase(cpp.FunctionSpace): "Base class for all function spaces." def __init__(self, mesh, element, constrained_domain=None): """Create function space on given mesh for given finite element. *Arguments* mesh A :py:class:`Mesh ` element A :py:class:`(UFL) FiniteElement ` """ # Check arguments if not isinstance(mesh, (cpp.Mesh, cpp.Restriction)): cpp.dolfin_error("functionspace.py", "create function space", "Illegal argument, not a mesh or restriction: " + str(mesh)) if not isinstance(element, (ufl.FiniteElementBase)): cpp.dolfin_error("functionspace.py", "create function space", "Illegal argument, not a finite element: " + str(element)) if constrained_domain is not None: if not isinstance(constrained_domain, cpp.SubDomain): cpp.dolfin_error("functionspace.py", "create function space", "Illegal argument, not a subdomain: " + str(constrained_domain)) # Store element # Note: self._element cannot be a private attribute as we want to be able to # set the element from a derived class. self._ufl_element = element # JIT-compile element to get ufc_element and ufc_dofmap ufc_element, ufc_dofmap = jit(self._ufl_element) # Instantiate DOLFIN FiniteElement and DofMap self._dolfin_element = cpp.FiniteElement(ufc_element) if constrained_domain is not None: if isinstance(mesh, cpp.Restriction): cpp.dolfin_error("functionspace.py", "create function space", "Cannot use constrained domains together with restrictions.") dolfin_dofmap = cpp.DofMap(ufc_dofmap, mesh, constrained_domain) else: if isinstance(mesh, cpp.Restriction): dolfin_dofmap = cpp.DofMap(ufc_dofmap, mesh) mesh = mesh.mesh() else: dolfin_dofmap = cpp.DofMap(ufc_dofmap, mesh) # Initialize the cpp_FunctionSpace cpp.FunctionSpace.__init__(self, mesh, self._dolfin_element, dolfin_dofmap) # FIXME: Sort out consistent interface for access to DOLFIN, UFL and UFC objects... def cell(self): "Return the ufl cell." return self._ufl_element.cell() def ufl_element(self): "Return the UFL element." return self._ufl_element def dolfin_element(self): "Return the DOLFIN element." return self._dolfin_element def __add__(self, other): "Create enriched function space." return EnrichedFunctionSpace((self, other)) def __mul__(self, other): "Create mixed function space." return MixedFunctionSpace((self, other)) def __str__(self): "Pretty-print." return "" % \ (self.dofmap().global_dimension(), str(self._ufl_element)) def num_sub_spaces(self): "Return the number of sub spaces" return self._dolfin_element.num_sub_elements() def sub(self, i): "Return the i:th cpp.SubSpace" # Fixme: Should we have a more extensive check other than whats included in # the cpp code? #if i not in self._cpp_sub_spaces.keys(): # Store the created subspace to prevent swig garbage collection # Should not be needed as SubSpace is shared_ptr stored # self._cpp_sub_spaces[i] = FunctionSpaceFromCpp(cpp.SubSpace(self,i)) if not isinstance(i, int): raise TypeError, "expected an int for 'i'" if self.num_sub_spaces() == 1: raise ValueError, "no SubSpaces to extract" if i >= self.num_sub_spaces(): raise ValueError, "Can only extract SubSpaces with i = 0 ... %d" % \ (self.num_sub_spaces() - 1) assert(hasattr(self._ufl_element,"sub_elements")) element = self._ufl_element.sub_elements()[i] return FunctionSpaceFromCpp(cpp.SubSpace(self, i), element) def extract_sub_space(self, component): """ Extract subspace for component *Arguments* component (numpy.array(uint)) The component. *Returns* _FunctionSpace_ The subspace. """ # Transform the argument to a NumPy array if not hasattr(component, "__len__"): cpp.dolfin_error("functionspace.py", "extracting sub spaces", "Expected a component which is iterable") component = numpy.asarray(component, dtype=numpy.uintp) # Get the cpp version of the FunctionSpace cpp_space = cpp.FunctionSpace.extract_sub_space(self, component) # Instantiate a ufl finite element based on the dolfin element signature element = eval(cpp_space.element().signature(), ufl.__dict__) return FunctionSpaceFromCpp(cpp_space, element) def split(self): """ Split a mixed functionspace into its sub spaces """ S = [] for i in range(self.num_sub_spaces()): S.append(self.sub(i)) return S def collapse(self, collapsed_dofs=False): """ Collapse a subspace and return a new function space and a map from new to old dofs *Arguments* collapsed_dofs (bool) Return the map from new to old dofs *Returns* _FunctionSpace_ The new function space. dict The map from new to old dofs (optional) """ cpp_space, dofs = cpp.FunctionSpace.collapse(self) if collapsed_dofs: return FunctionSpaceFromCpp(cpp_space), dofs return FunctionSpaceFromCpp(cpp_space) class FunctionSpaceFromCpp(FunctionSpaceBase): "FunctionSpace represents a finite element function space." def __init__(self, cppV, element=None): """ Initialize a FunctionSpace from an already excisting cpp.FunctionSpace. """ if not isinstance(cppV, (cpp.FunctionSpace)): cpp.dolfin_error("functionspace.py", "create function space", "Illegal argument, not a cpp.FunctionSpace: " + str(cppV)) if element is None: # Get the ufl.FiniteElement from the compiled element sigature self._ufl_element = eval(cppV.element().signature(), ufl.__dict__) else: if not isinstance(element, ufl.FiniteElementBase): raise TypeError, "expected a ufl.FiniteElementBase" self._ufl_element = element # Init the cpp.FunctionSpace with the provided cppV cpp.FunctionSpace.__init__(self, cppV) # Assign the dolfin element self._dolfin_element = cpp.FunctionSpace.element(self) def create_ufc_function_spaces(mesh, ufc_form, cache=None): """ Instantiate cpp.FunctionSpaces from compiled ufc form. *Arguments* mesh a :py:class:`Mesh `. ufc_form compiled ufc form cache a 'dict' with already instantiated :py:class:`cpp.FunctionSpaces `. *Examples of usage* .. code-block:: python fs0, c = create_ufc_function_spaces(mesh, ufc_form0) fs1, c = create_ufc_function_spaces(mesh, ufc_form1, c) """ # Initialize return arguments functionspaces = [] if cache is None: cache = {} # Iterate over all known ufc_finite_elements for i in range(ufc_form.rank() + ufc_form.num_coefficients()): # Create a ufc_finite_elements fe = ufc_form.create_finite_element(i) # Use the signature of the element as key in the cache dict fesig = fe.signature() # Try to access the cache V = cache.get(fesig) # If the cpp.FunctionSpace does not excists in the cache if V is None: # Instantiate a dofmap dm = ufc_form.create_dofmap(i) # Instantiate the UFCFunctionSpace V = UFCFunctionSpace(mesh, fe, dm) cache[fesig] = V functionspaces.append(V) return functionspaces, cache class UFCFunctionSpace(cpp.FunctionSpace): "FunctionSpace represents a finite element function space." def __init__(self, mesh, ufc_finite_element, ufc_dofmap, constrained_domain=None): " Initialize a FunctionSpace from ufc data " self._mesh = mesh self._finite_element = cpp.FiniteElement(ufc_finite_element) if constrained_domain is None: self._dofmap = cpp.DofMap(ufc_dofmap, mesh) else: self._dofmap = cpp.DofMap(ufc_dofmap, mesh, constrained_domain) self._ufc_finite_element = ufc_finite_element self._ufc_dofmap = ufc_dofmap cpp.FunctionSpace.__init__(self, self._mesh, self._finite_element, \ self._dofmap) class FunctionSpace(FunctionSpaceBase): "FunctionSpace represents a finite element function space." def __init__(self, mesh, family, degree, form_degree=None, constrained_domain=None, restriction=None): """ Create finite element function space. *Arguments* mesh (:py:class:`Mesh `) the mesh family (string) specification of the element family, see below for alternatives. degree (int) the degree of the element. form_degree (int) the form degree (FEEC notation, used when field is viewed as k-form) constrained_domain constrained subdomain with map function. restriction restriction of the element (e.g. to cell facets). Which families and degrees that are supported is determined by the form compiler used to generate the element, but typical families include ================================= ========= Name Usage ================================= ========= Argyris* "ARG" Arnold-Winther* "AW" Brezzi-Douglas-Fortin-Marini* "BDFM" Brezzi-Douglas-Marini "BDM" Bubble "B" Crouzeix-Raviart "CR" Discontinuous Lagrange "DG" Hermite* "HER" Lagrange "CG" Mardal-Tai-Winther* "MTW" Morley* "MOR" Nedelec 1st kind H(curl) "N1curl" Nedelec 2nd kind H(curl) "N2curl" Quadrature "Q" Raviart-Thomas "RT" Real "R" ================================= ========= *only partly supported. *Examples of usage* To define a discrete function space over e.g. the unit square: .. code-block:: python mesh = UnitSquare(32,32) V = FunctionSpace(mesh, "CG", 1) Here, ``"CG"`` stands for Continuous Galerkin, implying the standard Lagrange family of elements. Instead of ``"CG"``, we could have written ``"Lagrange"``. With degree 1, we get the linear Lagrange element. Other examples include: .. code-block:: python # Discontinuous element of degree 0 V = FunctionSpace(mesh, "DG", 0) # Brezzi-Douglas-Marini element of degree 2 W = FunctionSpace(mesh, "BDM", 2) # Real element with one global degree of freedom R = FunctionSpace(mesh, "R", 0) """ # Check arguments if not isinstance(mesh, (cpp.Mesh, cpp.Restriction)): cpp.dolfin_error("functionspace.py", "create function space", "Illegal argument, not a mesh or restriction: " + str(mesh)) if not isinstance(family, str): cpp.dolfin_error("functionspace.py", "create function space", "Illegal argument for finite element family, not a string: " + str(family)) if not isinstance(degree, int): cpp.dolfin_error("functionspace.py", "create function space", "Illegal argument for degree, not an integer: " + str(degree)) # Create element # FIXME: Get a ufl.Domain instead of cell somehow. cell = mesh.ufl_cell() if isinstance(mesh, cpp.Mesh) else mesh.mesh().ufl_cell() element = ufl.FiniteElement(family, cell, degree, form_degree=form_degree) if restriction is not None: element = element[restriction] # Initialize base class FunctionSpaceBase.__init__(self, mesh, element, constrained_domain) self.___degree = degree self.___family = family self.___mesh = mesh if isinstance(mesh, cpp.Mesh) else mesh.mesh() self.___form_degree = form_degree def restriction(self, meshfunction): space = FunctionSpace(self.___mesh, self.___family, self.___degree, form_degree=self.___form_degree) space.attach(meshfunction) return space class EnrichedFunctionSpace(FunctionSpaceBase): "EnrichedFunctionSpace represents an enriched finite element function space." def __init__(self, spaces): """ Create enriched finite element function space. *Arguments* spaces a list (or tuple) of :py:class:`FunctionSpaces `. *Usage* The function space may be created by .. code-block:: python V = EnrichedFunctionSpace(spaces) """ # Check arguments if not len(spaces) > 0: cpp.dolfin_error("functionspace.py", "create enriched function space", "Need at least one subspace") if not all(isinstance(V, FunctionSpaceBase) for V in spaces): cpp.dolfin_error("functionspace.py", "create enriched function space", "Invalid subspaces: " + str(spaces)) #if not all(V.mesh() == spaces[0].mesh() for V in spaces): # cpp.dolfin_error("functionspace.py", # "Nonmatching meshes for mixed function space: " + str([V.mesh() for V in spaces])) # Create element element = ufl.EnrichedElement(*[V.ufl_element() for V in spaces]) # Initialize base class FunctionSpaceBase.__init__(self, spaces[0].mesh(), element, constrained_domain=spaces[0].dofmap().constrained_domain) class MixedFunctionSpace(FunctionSpaceBase): "MixedFunctionSpace represents a mixed finite element function space." def __init__(self, spaces): """ Create mixed finite element function space. *Arguments* spaces a list (or tuple) of :py:class:`FunctionSpaces `. *Examples of usage* The function space may be created by .. code-block:: python V = MixedFunctionSpace(spaces) ``spaces`` may consist of multiple occurances of the same space: .. code-block:: python P1 = FunctionSpace(mesh, "CG", 1) P2v = VectorFunctionSpace(mesh, "Lagrange", 2) ME = MixedFunctionSpace([P2v, P1, P1, P1]) """ # Check arguments if not len(spaces) > 0: cpp.dolfin_error("functionspace.py", "create mixed function space", "Need at least one subspace") if not all(isinstance(V, FunctionSpaceBase) for V in spaces): cpp.dolfin_error("functionspace.py", "create mixed function space", "Invalid subspaces: " + str(spaces)) #if not all(V.mesh() == spaces[0].mesh() for V in spaces): # cpp.dolfin_error("functionspace.py", "Nonmatching meshes for mixed function space: " \ # + str([V.mesh() for V in spaces])) # Check that all spaces share same constrained_domain map # Create UFL element element = ufl.MixedElement(*[V.ufl_element() for V in spaces]) # Initialize base class using mesh from first space FunctionSpaceBase.__init__(self, spaces[0].mesh(), element, constrained_domain=spaces[0].dofmap().constrained_domain) class VectorFunctionSpace(MixedFunctionSpace): "VectorFunctionSpace represents a vector-valued finite element function space." def __init__(self, mesh, family, degree, dim=None, form_degree=None, constrained_domain=None, restriction=None): """ Create vector-valued finite element function space. Use VectorFunctionSpace if the unknown is a vector field, instead of a :py:class:`FunctionSpace ` object for scalar fields. *Arguments* mesh (:py:class:`Mesh `) the mesh family (string) a string specifying the element family, see :py:class:`FunctionSpace ` for alternatives. degree (int) the (polynomial) degree of the element. dim (int) an optional argument specifying the number of components. form_degree (int) an optional argument specifying the degree of the k-form (used for FEEC notation) If the dim argument is not provided, the dimension will be deduced from the dimension of the mesh. *Example of usage* .. code-block:: python V = VectorFunctionSpace(mesh, "CG", 1) """ # Get ufl cell from Mesh or Restriction # FIXME: Get a ufl.Domain instead of cell somehow. cell = mesh.ufl_cell() if isinstance(mesh, cpp.Mesh) else mesh.mesh().ufl_cell() # TODO: Is this necessary? Doesn't ufl handle dim=None the same way? if dim is None: dim = cell.geometric_dimension() # Create element element = ufl.VectorElement(family, cell, degree, dim=dim, form_degree=form_degree) if restriction is not None: element = element[restriction] # Initialize base class FunctionSpaceBase.__init__(self, mesh, element, constrained_domain=constrained_domain) class TensorFunctionSpace(FunctionSpaceBase): "TensorFunctionSpace represents a tensor-valued finite element function space." def __init__(self, mesh, family, degree, shape=None, symmetry=None, \ constrained_domain=None, restriction=None): """ Create tensor-valued finite element function space. *Arguments* mesh a :py:class:`Mesh `. family a string specifying the element family, see :py:class:`FunctionSpace ` for alternatives. degree the degree of the element. shape an optional argument specifying the shape of the tensor. symmetry optional argument specifying whether the tensor is symmetric. If the shape argument is not provided, the dimension will be deduced from the dimension of the mesh. *Example of usage* .. code-block:: python V = TensorFunctionSpace(mesh, "CG", 1) """ # Get ufl cell from Mesh or Restriction # FIXME: Get a ufl.Domain instead of cell somehow. cell = mesh.ufl_cell() if isinstance(mesh, cpp.Mesh) else mesh.mesh().ufl_cell() # TODO: Is this necessary? Doesn't ufl handle dim=None the same way? if shape is None: dim = cell.geometric_dimension() shape = (dim, dim) # Create element element = ufl.TensorElement(family, cell, degree, shape, symmetry) if restriction is not None: element = element[restriction] # Initialize base class FunctionSpaceBase.__init__(self, mesh, element, constrained_domain=constrained_domain) dolfin-1.3.0/site-packages/dolfin/functions/__init__.py0000644000175000017500000000124612263014601022760 0ustar johannrjohannr"""The function module of dolfin""" from dolfin.functions import functionspace from dolfin.functions import function from dolfin.functions import constant from dolfin.functions import expression from dolfin.functions import specialfunctions from functionspace import * from function import * from constant import * from expression import * from specialfunctions import * # NOTE: The automatic documentation system in DOLFIN requires to _not_ define # NOTE: classes or functions within this file. Use separate modules for that # NOTE: purpose. __all__ = functionspace.__all__ + function.__all__ + constant.__all__ + \ expression.__all__ + specialfunctions.__all__ dolfin-1.3.0/site-packages/dolfin/functions/constant.py0000644000175000017500000000742012263014601023052 0ustar johannrjohannr"""Create a constant-valued function with given value.""" # Copyright (C) 2008-2009 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Johan Hake, 2008. # # First added: 2008-12-02 # Last changed: 2010-08-16 __all__ = ["Constant"] # Import UFL and SWIG-generated extension module (DOLFIN C++) import ufl import ufl.domains import dolfin.cpp as cpp import numpy class Constant(ufl.Coefficient, cpp.Constant): # TODO: [martinal] I want to change cell to domain, but that will break user code... def __init__(self, value, cell=None, name=None): """ Create constant-valued function with given value. *Arguments* value The value may be either a single scalar value, or a tuple/list of values for vector-valued functions, or nested lists or a numpy array for tensor-valued functions. cell Optional argument. A :py:class:`Cell ` which defines the geometrical dimensions the Constant is defined for. name Optional argument. A str which overrules the default name of the Constant. The data type Constant represents a constant value that is unknown at compile-time. Its values can thus be changed without requiring re-generation and re-compilation of C++ code. *Examples of usage* .. code-block:: python p = Constant(pi/4) # scalar C = Constant((0.0, -1.0, 0.0)) # constant vector """ # Check that the type of the cell is ufl.Cell if given if cell is not None: if not isinstance(cell, (ufl.Cell, ufl.domains.DomainDescription)): raise TypeError("Expected an ufl.Cell as the second argument") array = numpy.array(value) dim = len(array.shape) floats = map(float, array.flat) # Create UFL element and initialize constant if dim == 0: self._ufl_element = ufl.FiniteElement("Real", \ cell, 0) cpp.Constant.__init__(self, floats[0]) elif dim == 1: self._ufl_element = ufl.VectorElement("Real", \ cell, 0, len(floats)) cpp.Constant.__init__(self, floats) else: self._ufl_element = ufl.TensorElement("Real", \ cell, 0, shape=array.shape) cpp.Constant.__init__(self, list(array.shape), floats) # Initialize base classes ufl.Coefficient.__init__(self, self._ufl_element) # Set name as given or automatic name = name or "f_%d" % self.count() self.rename(name, "a Constant") def __float__(self): # Overriding UFL operator in this particular case. if self.shape() != (): raise TypeError("Cannot convert nonscalar constant to float.") return cpp.Constant.__float__(self) def __str__(self): "x.__str__() <==> print(x)" return self.name() dolfin-1.3.0/site-packages/dolfin/functions/function.py0000644000175000017500000005600312263014601023047 0ustar johannrjohannr"""This module handles the Function class in Python. """ # Copyright (C) 2009 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2009-10-06 # Last changed: 2011-04-18 __all__ = ["Function", "TestFunction", "TrialFunction", "Argument", "TestFunctions", "TrialFunctions"] import types # Import UFL and SWIG-generated extension module (DOLFIN C++) import ufl import dolfin.cpp as cpp import numpy from dolfin.functions.functionspace import FunctionSpaceBase from dolfin.functions.constant import Constant def _assign_error(): cpp.dolfin_error("function.py", "assign function", "Expects only linear combinations of Functions in "\ "the same FunctionSpaces") def _check_mul_and_division(e, linear_comb, scalar_weight=1.0, multi_index=None): """ Utility func for checking division and multiplication of a Function with scalars in linear combinations of Functions """ from ufl.constantvalue import ScalarValue from ufl.classes import ComponentTensor, MultiIndex, Indexed from ufl.algebra import Division, Product, Sum #ops = e.operands() # FIXME: What should be checked!? same_multi_index = lambda x, y: len(x.free_indices()) == len(y.free_indices()) \ and x.index_dimensions().values() == y.index_dimensions().values() assert(isinstance(scalar_weight, float)) # Split passed expression into scalar and expr if isinstance(e, Product): for i, op in enumerate(e.operands()): if isinstance(op, ScalarValue) or \ (isinstance(op, Constant) and op.value_size()==1): scalar = op expr = e.operands()[1-i] break else: _assign_error() scalar_weight *= float(scalar) elif isinstance(e, Division): expr, scalar = e.operands() if not (isinstance(scalar, ScalarValue) or \ isinstance(scalar, Constant) and scalar.value_rank()==1): _assign_error() scalar_weight /= float(scalar) else: _assign_error() # If a CoefficientTensor is passed we expect the expr to be either a # Function or another ComponentTensor, where the latter wil result # in a recursive call if multi_index: assert(isinstance(multi_index, MultiIndex)) assert(isinstance(expr, Indexed)) # Unpack Indexed and check equality with passed multi_index expr, multi_index2 = expr.operands() assert(isinstance(multi_index2, MultiIndex)) if not same_multi_index(multi_index, multi_index2): _assign_error() if isinstance(expr, Function): linear_comb.append((expr, scalar_weight)) elif isinstance(expr, (ComponentTensor, Product, Division, Sum)): # If componentTensor we need to unpack the MultiIndices if isinstance(expr, ComponentTensor): expr, multi_index = expr.operands() if not same_multi_index(multi_index, multi_index2): _error() if isinstance(expr, (Product, Division)): linear_comb = _check_mul_and_division(expr, linear_comb, \ scalar_weight, multi_index) elif isinstance(expr, Sum): linear_comb = _check_and_extract_functions(expr, linear_comb, \ scalar_weight, multi_index) else: _assign_error() else: _assign_error() return linear_comb def _check_and_extract_functions(e, linear_comb=None, scalar_weight=1.0, multi_index=None): """ Utility func for extracting Functions and scalars in linear combinations of Functions """ from ufl.algebra import Sum, Product, Division from ufl.classes import ComponentTensor linear_comb = linear_comb or [] # First check u if isinstance(e, Function): linear_comb.append((e, scalar_weight)) return linear_comb # Second check a*u*b, u/a/b, a*u/b where a and b are scalars elif isinstance(e, (Product, Division)): linear_comb = _check_mul_and_division(e, linear_comb, scalar_weight, multi_index) return linear_comb # Third check a*u*b, u/a/b, a*u/b where a and b are scalars and u is a Tensor elif isinstance(e, ComponentTensor): e, multi_index = e.operands() linear_comb = _check_mul_and_division(e, linear_comb, scalar_weight, multi_index) return linear_comb # If not Product or Division we expect Sum elif isinstance(e, Sum): for op in e.operands(): linear_comb = _check_and_extract_functions(op, linear_comb, \ scalar_weight, multi_index) else: _assign_error() return linear_comb def _check_and_contract_linear_comb(expr, self, multi_index): """ Utility func for checking and contracting linear combinations of Functions """ linear_comb = _check_and_extract_functions(expr, multi_index=multi_index) funcs = [] weights = [] funcspace = None for func, weight in linear_comb: funcspace = funcspace or func.function_space() if func not in funcspace: _assign_error() try: # Check if the exact same Function is already present ind = funcs.index(func) weights[ind] += weight except: funcs.append(func) weights.append(weight) # Check that rhs does not include self for ind, func in enumerate(funcs): if func == self: # If so make a copy funcs[ind] = self.copy(deepcopy=True) break return zip(funcs, weights) class MetaNoEvalOverloading(type): def __init__(mcs, name, bases, dictionary): if "eval" in dictionary: raise TypeError("cannot overload 'eval'") class Function(ufl.Coefficient, cpp.Function): """ This class represents a function :math:`u_h` in a finite element function space :math:`V_h`, given by .. math:: u_h = \sum_{i=1}^n U_i \phi_i, where :math:`\{\phi_i\}_{i=1}^n` is a basis for :math:`V_h`, and :math:`U` is a vector of expansion coefficients for :math:`u_h`. *Arguments* There is a maximum of three arguments. The first argument must be a Function or a :py:class:`FunctionSpace `. If instantiated from another Function, the (optional) second argument must be an integer denoting the number of sub functions to extract. In addition can a name argument be passed overruling the default name *Examples* Create a Function: - from a :py:class:`FunctionSpace ` ``V`` .. code-block:: python f = Function(V) - from another Function ``f`` .. code-block:: python g = Function(f) - from a :py:class:`FunctionSpace ` ``V`` and a :py:class:`GenericVector ` ``v`` .. code-block:: python g = Function(V, v) - from a :py:class:`FunctionSpace ` and a filename containg a :py:class:`GenericVector ` .. code-block:: python g = Function(V, 'MyVectorValues.xml') """ __metaclass__ = MetaNoEvalOverloading def __init__(self, *args, **kwargs): """Initialize Function.""" # Check arguments if len(args) == 0: raise TypeError("expected 1 or more arguments") if not isinstance(args[0], (FunctionSpaceBase, cpp.Function)): raise TypeError("expected a FunctionSpace or a Function as argument 1") # If using the copy constuctor if isinstance(args[0], Function): other = args[0] # If using the copy constuctor if len(args) == 1: # Instantiate base classes cpp.Function.__init__(self, other) ufl.Coefficient.__init__(self, other._element) return # If using sub-function constructor elif len(args) == 2 and isinstance(args[1], int): i = args[1] num_sub_spaces = other.function_space().num_sub_spaces() if num_sub_spaces == 1: raise RuntimeError("No subfunctions to extract") if not i < num_sub_spaces: raise RuntimeError("Can only extract subfunctions " "with i = 0..%d"% num_sub_spaces) cpp.Function.__init__(self, other, i) ufl.Coefficient.__init__(self, self.function_space().ufl_element()) return else: raise TypeError("expected one or two arguments when " "instantiating from another Function") # If creating a dolfin.Function from a cpp.Function elif isinstance(args[0], cpp.Function): if len(args) == 1: # Lets be agressive in abusing dynamic typing shall we... self.__class__ = Function self.__dict__ = args[0].__dict__ # Instantiate base classes V = args[0].function_space() ufl.Coefficient.__init__(self, V.ufl_element()) return else: raise TypeError("expected only one argument when passing cpp.Function" "to dolfin.Function constructor") V = args[0] # Instantiate ufl base class ufl.Coefficient.__init__(self, V.ufl_element()) # Passing only the FunctionSpace if len(args) == 1: # Instantiate cpp base classes cpp.Function.__init__(self, V) elif len(args) == 2: # If passing FunctionSpace together with cpp.Function # Attached passed FunctionSpace and initialize the cpp.Function # using the passed Function if isinstance(args[1], cpp.Function): if args[1].function_space().dim() != V.dim(): raise ValueError("non matching dimensions on passed FunctionSpaces") cpp.Function.__init__(self, args[1]) else: cpp.Function.__init__(self, *args) else: raise TypeError("too many arguments") # Set name as given or automatic name = kwargs.get("name") or "f_%d" % self.count() self.rename(name, "a Function") def _sub(self, i, deepcopy = False): cpp.deprecation("Using Function._sub", "1.3.0", "Use Function.sub instead") self.sub(i, deepcopy) def sub(self, i, deepcopy = False): """ Return a sub function. The sub functions are numbered from i = 0..N-1, where N is the total number of sub spaces. *Arguments* i : int The number of the sub function """ if not isinstance(i, int): raise TypeError("expects an 'int' as first argument") num_sub_spaces = self.function_space().num_sub_spaces() if num_sub_spaces == 1: raise RuntimeError("No subfunctions to extract") if not i < num_sub_spaces: raise RuntimeError("Can only extract subfunctions with i = 0..%d"% num_sub_spaces) # Create and instantiate the Function if deepcopy: return Function(self.function_space().sub(i), cpp.Function.sub(self, i)) else: return Function(self, i) def assign(self, rhs): """ Assign either a Function or linear combination of Functions. *Arguments* rhs (_Function_) A Function or a linear combination of Functions. If a linear combination is passed all Functions need to be in the same FunctionSpaces. """ from ufl.operatorbase import AlgebraOperator from ufl.classes import ComponentTensor multi_index = None if isinstance(rhs, (cpp.Function, cpp.Expression, cpp.FunctionAXPY)): # Avoid self assignment if self == rhs: return self._assign(rhs) elif isinstance(rhs, (AlgebraOperator, ComponentTensor)): if isinstance(rhs, ComponentTensor): rhs, multi_index = rhs.operands() linear_comb = _check_and_contract_linear_comb(rhs, self, multi_index) assert(linear_comb) # If the assigned Function lives in a different FunctionSpace # we cannot operate on this function directly same_func_space = linear_comb[0][0] in self.function_space() func, weight = linear_comb.pop() # Assign values from first func if not same_func_space: self._assign(func) vector = self.vector() else: vector = self.vector() vector[:] = func.vector() # If first weight is not 1 scale if weight != 1.0: vector *= weight # AXPY the other functions for func, weight in linear_comb: if weight == 0.0: continue vector.axpy(weight, func.vector()) else: cpp.dolfin_error("function.py", "function assignment", "Expects a Function or linear combinations of "\ "Functions in the same FunctionSpaces") def split(self, deepcopy=False): """ Extract any sub functions. A sub function can be extracted from a discrete function that is in a :py:class:`MixedFunctionSpace ` or in a :py:class:`VectorFunctionSpace `. The sub function resides in the subspace of the mixed space. *Arguments* deepcopy Copy sub function vector instead of sharing """ num_sub_spaces = self.function_space().num_sub_spaces() if num_sub_spaces == 1: raise RuntimeError("No subfunctions to extract") return tuple(self.sub(i, deepcopy) for i in xrange(num_sub_spaces)) def ufl_element(self): """Return ufl element""" return self._element def __str__(self): """Return a pretty print representation of it self. """ return self.name() def __repr__(self): """Return a str repr of it self. Must use ufl.__repr__ for this""" return ufl.Coefficient.__repr__(self) def str(self, verbose=False): """Return an informative str representation of itself""" # FIXME: We might change this using rank and dimension instead return "" % str(self.function_space()) def ufl_evaluate(self, x, component, derivatives): """Function used by ufl to evaluate the Function""" import numpy import ufl assert derivatives == () # TODO: Handle derivatives if component: shape = self.shape() assert len(shape) == len(component) value_size = ufl.common.product(shape) index = ufl.common.component_to_index(component, shape) values = numpy.zeros(value_size) self(*x, values=values) return values[index] else: # Scalar evaluation return self(*x) def __float__(self): if self.shape() != (): raise RuntimeError("Cannot convert nonscalar function to float.") elm = self.ufl_element() if elm.family() != "Real": raise RuntimeError("Cannot convert spatially varying function to float.") # Gather value directly from vector in a parallell safe way vec = self.vector() indices = numpy.zeros(1, dtype='intc') values = vec.gather(indices) return float(values[0]) def __call__(self, *args, **kwargs): """ Evaluates the Function. *Examples* 1) Using an iterable as x: .. code-block:: python fs = Expression("sin(x[0])*cos(x[1])*sin(x[3])") x0 = (1.,0.5,0.5) x1 = [1.,0.5,0.5] x2 = numpy.array([1.,0.5,0.5]) v0 = fs(x0) v1 = fs(x1) v2 = fs(x2) 2) Using multiple scalar args for x, interpreted as a point coordinate .. code-block:: python v0 = f(1.,0.5,0.5) 3) Using a Point .. code-block:: python p0 = Point(1.,0.5,0.5) v0 = f(p0) 3) Passing return array .. code-block:: python fv = Expression(("sin(x[0])*cos(x[1])*sin(x[3])", "2.0","0.0")) x0 = numpy.array([1.,0.5,0.5]) v0 = numpy.zeros(3) fv(x0, values = v0) .. note:: A longer values array may be passed. In this way one can fast fill up an array with different evaluations. .. code-block:: python values = numpy.zeros(9) for i in xrange(0,10,3): fv(x[i:i+3], values = values[i:i+3]) """ if len(args)==0: raise TypeError("expected at least 1 argument") # Test for ufl restriction if len(args) == 1 and args[0] in ('+','-'): return ufl.Coefficient.__call__(self, *args) # Test for ufl mapping if len(args) == 2 and isinstance(args[1], dict) and self in args[1]: return ufl.Coefficient.__call__(self, *args) # Some help variables value_size = ufl.common.product(self.ufl_element().value_shape()) # If values (return argument) is passed, check the type and length values = kwargs.get("values", None) if values is not None: if not isinstance(values, numpy.ndarray): raise TypeError("expected a NumPy array for 'values'") if len(values) != value_size or \ not numpy.issubdtype(values.dtype, 'd'): raise TypeError("expected a double NumPy array of length"\ " %d for return values."%value_size) values_provided = True else: values_provided = False values = numpy.zeros(value_size, dtype='d') # Get the dimension of the cell dim = self.ufl_element().cell().geometric_dimension() # Assume all args are x argument x = args # If only one x argument has been provided, unpack it if it's an iterable if len(x) == 1: if isinstance(x[0], cpp.Point): x = [x[0][i] for i in xrange(dim)] elif hasattr(x[0], '__iter__'): x = x[0] # Convert it to an 1D numpy array try: x = numpy.fromiter(x, 'd') except (TypeError, ValueError, AssertionError), e: raise TypeError("expected scalar arguments for the coordinates") if len(x) == 0: raise TypeError("coordinate argument too short") if len(x) != dim: raise TypeError("expected the geometry argument to be of "\ "length %d"%dim) # The actual evaluation self.eval(values, x) # If scalar return statement, return scalar value. if value_size == 1 and not values_provided: return values[0] return values #--- Subclassing of ufl.{Basis, Trial, Test}Function --- _ufl_dolfin_difference_message = """\ When constructing an Argument, TestFunction or TrialFunction, you must to provide a FunctionSpace and not a FiniteElement. The FiniteElement class provided by ufl only represents an abstract finite element space and is only used in standalone .ufl files, while the FunctionSpace provides a full discrete function space over a given mesh and should be used in dolfin programs in Python. """ class Argument(ufl.Argument): """UFL value: Representation of an argument to a form. This is the overloaded PyDOLFIN variant. """ def __init__(self, V, index=None): if not isinstance(V, FunctionSpaceBase): if isinstance(V, ufl.FiniteElementBase): raise TypeError(_ufl_dolfin_difference_message) else: raise TypeError("Illegal argument for creation of Argument, not a FunctionSpace: " + str(V)) raise TypeError("Illegal argument for creation of Argument, not a FunctionSpace: " + str(V)) ufl.Argument.__init__(self, V.ufl_element(), index) self._V = V def function_space(self): "Return the FunctionSpace" return self._V def __eq__(self, other): """Extending UFL __eq__ here to distinguish test and trial functions in different function spaces with same ufl element.""" return (isinstance(other, Argument) and self._count == other._count and self._V == other._V) def TestFunction(V): """UFL value: Create a test function argument to a form. This is the overloaded PyDOLFIN variant. """ return Argument(V, -2) def TrialFunction(V): """UFL value: Create a trial function argument to a form. This is the overloaded PyDOLFIN variant. """ return Argument(V, -1) #--- TestFunctions and TrialFunctions --- def Arguments(V): """UFL value: Create an Argument in a mixed space, and return a tuple with the function components corresponding to the subelements. This is the overloaded PyDOLFIN variant. """ return ufl.split(Argument(V)) def TestFunctions(V): """UFL value: Create a TestFunction in a mixed space, and return a tuple with the function components corresponding to the subelements. This is the overloaded PyDOLFIN variant. """ return ufl.split(TestFunction(V)) def TrialFunctions(V): """UFL value: Create a TrialFunction in a mixed space, and return a tuple with the function components corresponding to the subelements. This is the overloaded PyDOLFIN variant. """ return ufl.split(TrialFunction(V)) dolfin-1.3.0/site-packages/dolfin/functions/ufc_functionspace.py0000644000175000017500000000201712263014601024714 0ustar johannrjohannrimport dolfin.cpp as cpp __all__ = ["UFCFunctionSpace", "create_ufc_function_spaces"] class UFCFunctionSpace(cpp.FunctionSpace): def __init__(self, mesh, ufc_finite_element, ufc_dofmap): self._mesh = mesh self._finite_element = cpp.FiniteElement(ufc_finite_element) self._dofmap = cpp.DofMap(ufc_dofmap, mesh) self._ufc_finite_element = ufc_finite_element self._ufc_dofmap = ufc_dofmap cpp.FunctionSpace.__init__(self, mesh, finite_element, dofmap) def create_ufc_function_spaces(mesh, ufc_form, cache=None): functionspaces = [] if cache is None: cache = {} for i in range(ufc_form.rank() + ufc_form.num_coefficients()): fe = ufc_form.create_finite_element(i) fesig = fe.signature() V = cache.get(fesig) if V is None: dm = ufc_form.create_dofmap(i) V = UFCFunctionSpace(mesh, fe, dm) cache[fesig] = V functionspaces.append(V) return functionspaces, cache dolfin-1.3.0/site-packages/dolfin/functions/expression.py0000644000175000017500000007160212263014601023423 0ustar johannrjohannr"""This module handles the Expression class in Python. The Expression class needs special handling and is not mapped directly by SWIG from the C++ interface. Instead, a new Expression class is created which inherits both from the DOLFIN C++ Expression class and the ufl Coefficient class. The resulting Expression class may thus act both as a variable in a UFL form expression and as a DOLFIN C++ Expression. This module make heavy use of creation of Expression classes and instantiation of these dynamically at runtime. The whole logic behind this somewhat magic behaviour is handle by: 1) function __new__ in the Expression class 2) meta class ExpressionMetaClass 3) function compile_expressions from the compiledmodule/expression module 4) functions create_compiled_expression_class and create_python_derived_expression_class The __new__ method in the Expression class take cares of the logic when the class Expression is used to create an instance of Expression, see use cases 1-4 in the docstring of Expression. The meta class ExpressionMetaClass take care of the logic when a user subclasses Expression to create a user-defined Expression, see use cases 3 in the docstring of Expression. The function compile_expression is a JIT compiler. It compiles and returns different kinds of cpp.Expression classes, depending on the arguments. These classes are sent to the create_compiled_expression_class. """ # Copyright (C) 2008-2011 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Anders Logg, 2008-2009. # # First added: 2008-11-03 # Last changed: 2009-12-16 __all__ = ["Expression"] # FIXME: Make all error messages uniform according to the following template: # # if not isinstance(foo, Foo): # raise TypeError, "Illegal argument for creation of Bar, not a Foo: " + str(foo) # Python imports import types # Import UFL and SWIG-generated extension module (DOLFIN C++) import ufl import dolfin.cpp as cpp import numpy from dolfin import warning, error # Local imports from dolfin.compilemodules.expressions import compile_expressions # Local help class class UserDefinedParameters(dict): """ Help class to set user defined parameters in Expressions """ def __init__(self, expr, **kwargs): assert(isinstance(expr, cpp.Expression)) self._expr = expr dict.__init__(self, **kwargs) def __setitem__(self, name, value): __doc__ = dict.__setitem__.__doc__ if name not in self: raise KeyError("'%s' is not a parameter name" % name) setattr(self._expr, name, value) dict.__setattr__(self, name, value) def update(self, other): __doc__ = dict.update.__doc__ if hasattr(other, "keys"): for name in other.keys(): self[name] = other[name] else: for name, value in other: self[name] = value def create_compiled_expression_class(cpp_base): # Check the cpp_base assert(isinstance(cpp_base, (types.ClassType, type))) def __init__(self, cppcode, element=None, cell=None, \ degree=None, name=None, label=None, **kwargs): """Initialize the Expression """ # Initialize the cpp base class first and extract value_shape cpp_base.__init__(self) value_shape = tuple(self.value_dimension(i) \ for i in range(self.value_rank())) # Store the value_shape self._value_shape = value_shape # Select an appropriate element if not specified if element is None: element = _auto_select_element_from_shape(value_shape, degree, cell) else: # Check that we have an element if not isinstance(element, ufl.FiniteElementBase): raise TypeError, "The 'element' argument must be a UFL"\ " finite element." # Check same value shape of compiled expression and passed element if not element.value_shape() == value_shape: raise ValueError, "The value shape of the passed 'element',"\ " is not equal to the value shape of the compiled "\ "expression." # Initialize UFL base class self._ufl_element = element ufl.Coefficient.__init__(self, self._ufl_element) # Set default variables for member, value in kwargs.items(): setattr(self, member, value) name = name or "f_" + str(ufl.Coefficient.count(self)) label = label or "User defined expression" self.rename(name, label) # Store the rest of the kwargs (parameters) self.user_parameters = UserDefinedParameters(self, **kwargs) # Create and return the class return type("CompiledExpression", (Expression, ufl.Coefficient, cpp_base),\ {"__init__":__init__}) def create_python_derived_expression_class(class_name, user_bases, user_dict): """Return Expression class This function is used to create all the dynamically created Expression classes. It takes a class_name, and a compiled cpp.Expression and returns a class that inherits the compiled class together with dolfin.Expression and ufl.Coefficient. *Arguments* class_name The name of the class user_bases User defined bases user_dict Dict with user specified function or attributes """ # Check args assert(isinstance(class_name, str)) assert(isinstance(user_bases, list)) assert(isinstance(user_dict, dict)) # Define the bases assert(all([isinstance(t, (types.ClassType, type)) for t in user_bases])) bases = tuple([Expression, ufl.Coefficient, cpp.Expression] + user_bases) user_init = user_dict.pop("__init__", None) # Check for deprecated dim and rank methods if "dim" in user_dict or "rank" in user_dict: raise DeprecationWarning, "'rank' and 'dim' are depcrecated, overload"\ " 'value_shape' instead" def __init__(self, *args, **kwargs): """Initialize the Expression""" # Get element, cell and degree element = kwargs.get("element", None) degree = kwargs.get("degree", None) cell = kwargs.get("cell", None) name = kwargs.get("name", None) label = kwargs.get("label", None) # Check if user has passed too many arguments if no # user_init is provided if user_init is None: from operator import add # First count how many valid kwargs is passed num_valid_kwargs = reduce(add, [kwarg is not None \ for kwarg in [element, degree, cell, name, label]]) if len(kwargs) != num_valid_kwargs: raise TypeError, "expected only 'kwargs' from one of "\ "'element', 'degree', 'cell', 'name' or 'label'" if len(args) != 0: raise TypeError, "expected no 'args'" # Select an appropriate element if not specified if element is None: element = _auto_select_element_from_shape(self.value_shape(), degree, cell) elif isinstance(element, ufl.FiniteElementBase): pass else: raise TypeError, "The 'element' argument must be a UFL finite"\ " element." # Initialize UFL base class self._ufl_element = element ufl.Coefficient.__init__(self, element) # Initialize cpp_base class cpp.Expression.__init__(self, list(element.value_shape())) # Calling the user defined_init if user_init is not None: user_init(self, *args, **kwargs) name = name or "f_" + str(ufl.Coefficient.count(self)) label = label or "User defined expression" self.rename(name, label) # NOTE: Do not prevent the user to overload attributes "reserved" by PyDOLFIN # NOTE: Why not? ## Collect reserved attributes from both cpp.Function and ufl.Coefficient #reserved_attr = dir(ufl.Coefficient) #reserved_attr.extend(dir(cpp.Function)) # ## Remove attributes that will be set by python #for attr in ["__module__"]: # while attr in reserved_attr: # reserved_attr.remove(attr) # ## Check the dict_ for reserved attributes #for attr in reserved_attr: # if attr in dict_: # raise TypeError, "The Function attribute '%s' is reserved by PyDOLFIN."%attr # Add __init__ to the user_dict user_dict["__init__"] = __init__ # Create the class and return it return type(class_name, bases, user_dict) class ExpressionMetaClass(type): """Meta Class for Expression""" def __new__(mcs, class_name, bases, dict_): """Returns a new Expression class""" assert(isinstance(class_name, str)), "Expecting a 'str'" assert(isinstance(bases, tuple)), "Expecting a 'tuple'" assert(isinstance(dict_, dict)), "Expecting a 'dict'" # First check if we are creating the Expression class if class_name == "Expression": # Assert that the class is _not_ a subclass of Expression, # i.e., a user have tried to: # # class Expression(Expression): # ... if len(bases) > 1 and bases[0] != object: raise TypeError, "Cannot name a subclass of Expression:"\ " 'Expression'" # Return the new class, which just is the original Expression defined in # this module return type.__new__(mcs, class_name, bases, dict_) # If creating a fullfledged derived expression class, i.e, inheriting # dolfin.Expression, ufl.Coefficient and cpp.Expression (or a subclass) # then just return the new class. if len(bases) >= 3 and bases[0] == Expression and \ bases[1] == ufl.Coefficient and issubclass(bases[2], \ cpp.Expression): # Return the instantiated class return type.__new__(mcs, class_name, bases, dict_) # Handle any user provided base classes user_bases = list(bases) # remove Expression, to be added later user_bases.remove(Expression) # Check the user has provided either an eval or eval_cell method if not ('eval' in dict_ or 'eval_cell' in dict_): raise TypeError, "expected an overload 'eval' or 'eval_cell' method" # Get name of eval function eval_name = 'eval' if 'eval' in dict_ else 'eval_cell' user_eval = dict_[eval_name] # Check type and number of arguments of user_eval function if not isinstance(user_eval, types.FunctionType): raise TypeError, "'%s' attribute must be a 'function'"%eval_name if eval_name == "eval" and not user_eval.func_code.co_argcount == 3: raise TypeError, "The overloaded '%s' function must use "\ "three arguments"%eval_name if eval_name == "eval_cell" and \ not user_eval.func_code.co_argcount == 4: raise TypeError, "The overloaded '%s' function must "\ "use three arguments"%eval_name return create_python_derived_expression_class(class_name, user_bases, dict_) #--- The user interface --- # Places here so it can be reused in Function class Expression(object): """ This class represents a user-defined expression. Expressions can be used as coefficients in variational forms or interpolated into finite element spaces. *Arguments* cppcode C++ argument, see below element Optional element argument degree Optional element degree when element is not given. *1. Simple user-defined JIT-compiled expressions* One may alternatively specify a C++ code for evaluation of the Expression as follows: .. code-block:: python f0 = Expression('sin(x[0]) + cos(x[1])') f1 = Expression(('cos(x[0])', 'sin(x[1])'), element = V.ufl_element()) Here, f0 is is scalar and f1 is vector-valued. Tensor expressions of rank 2 (matrices) may also be created: .. code-block:: python f2 = Expression((('exp(x[0])','sin(x[1])'), ('sin(x[0])','tan(x[1])'))) In general, a single string expression will be interpreted as a scalar, a tuple of strings as a tensor of rank 1 (a vector) and a tuple of tuples of strings as a tensor of rank 2 (a matrix). The expressions may depend on x[0], x[1], and x[2] which carry information about the coordinates where the expression is evaluated. All math functions defined in are available to the user. User defined parameters can be included as follows: .. code-block:: python f = Expression('A*sin(x[0]) + B*cos(x[1])', A=2.0, B=Constant(4.0)) The parameters can be scalars and any scalar valued GenericFunction and are all initialized to the passed default value. The user defined parameters can be accessed and set as attributes or via the dict-like user_parameters attribute: .. code-block:: python f.A = 5.0 f.B = Expression("value", value=6.0) f.user_parameters["A"] = 1.0 f.user_parameters["B"] = Constant(5.0) A parameter can only be updated with its original value-type. So if a parameter is a float, it can only be updated with float. *2. Complex user-defined JIT-compiled Expressions* One may also define an Expression using more complicated logic with the 'cppcode' argument. This argument should be a string of C++ code that implements a class that inherits from dolfin::Expression. The following code illustrates how to define an Expression that depends on material properties of the cells in a Mesh. A MeshFunction is used to mark cells with different properties. Note the use of the 'cell' parameter. .. code-block:: python code = ''' class MyFunc : public Expression { public: boost::shared_ptr > cell_data; MyFunc() : Expression() { } void eval(Array& values, const Array& x, const ufc::cell& c) const { assert(cell_data); const Cell cell(cell_data->mesh(), c.index); switch ((*cell_data)[cell.index()]) { case 0: values[0] = exp(-x[0]); break; case 1: values[0] = exp(-x[2]); break; default: values[0] = 0.0; } } };''' cell_data = CellFunction('uint', V.mesh()) f = Expression(code) f.cell_data = cell_data While JIT compiling an Expression the public interface is scanned for dependencies. A user therefore need to include header files (also dolfin header files) declaring types that is used inside a method. The following example illustrates this. Note the inclusion of the dolfin namespace. ... code-block:: python code = ''' #include "dolfin/fem/GenericDofMap.h" namespace dolfin { class Delta : public Expression { public: Delta() : Expression() {} void eval(Array& values, const Array& data, const ufc::cell& cell) const { } void update(const boost::shared_ptr u, double nu, double dt, double C1, double U_infty, double chord) { const boost::shared_ptr mesh = u->function_space()->mesh(); const boost::shared_ptr dofmap = u->function_space()->dofmap(); const uint ncells = mesh->num_cells(); uint ndofs_per_cell; if (ncells > 0) { CellIterator cell(*mesh); ndofs_per_cell = dofmap->cell_dimension(cell->index()); } else { return; } } }; }''' e = Expression(code) *3. User-defined expressions by subclassing* The user can subclass Expression and overload the 'eval' function. The value_shape of such an Expression will default to 0. If a user wants a vector or tensor Expression, the value_shape method needs to be overloaded. .. code-block:: python class MyExpression0(Expression): def eval(self, value, x): dx = x[0] - 0.5 dy = x[1] - 0.5 value[0] = 500.0*exp(-(dx*dx + dy*dy)/0.02) value[1] = 250.0*exp(-(dx*dx + dy*dy)/0.01) def value_shape(self): return (2,) f0 = MyExpression0() If a user wants to use the Expression in a UFL form and have more controll in which finite element should be used to interpolate the expression in, the user can pass this information using the element kwarg: .. code-block:: python V = FunctionSpace(mesh, "BDM", 1) f1 = MyExpression0(element=V.ufl_element()) The user can also subclass Expression by overloading the eval_cell function. By this the user gets access to more powerful data structures, such as cell, facet and normal information, during assembly. .. code-block:: python class MyExpression1(Expression): def eval_cell(self, value, x, ufc_cell): if ufc_cell.index > 10: value[0] = 1.0 else: value[0] = -1.0 f2 = MyExpression1() The ufc_cell object can be queried for the following data: .. code-block:: python ufc_cell.cell_shape ufc_cell.index ufc_cell.topological_dimension ufc_cell.geometric_dimension ufc_cell.local_facet # only available on boundaries, otherwise -1 ufc_cell.mesh_identifier The user can customize initialization of derived Expressions. However, because of magic behind the scenes, a user needs to pass optional arguments to __init__ using ``**kwargs``, and _not_ calling the base class __init__: .. code-block:: python class MyExpression1(Expression): def __init__(self, mesh, domain): self._mesh = mesh self._domain = domain def eval(self, values, x): ... f3 = MyExpression1(mesh=mesh, domain=domain) Note that subclassing may be significantly slower than using JIT-compiled expressions. This is because a callback from C++ to Python will be involved each time a Expression needs to be evaluated during assembly. """ # Set the meta class __metaclass__ = ExpressionMetaClass def __new__(cls, cppcode=None, element=None, cell=None, degree=None, \ name=None, label=None, **kwargs): # If the __new__ function is called because we are instantiating # a python sub class of Expression, then just return a new instant # of the passed class if cls.__name__ != "Expression": return object.__new__(cls) # Check arguments _check_cppcode(cppcode) # Extract any Constants from the kwargs generic_function_members = [arg_name for arg_name, value in kwargs.items() \ if isinstance(value, cpp.GenericFunction)] # Compile module and get the cpp.Expression class cpp_base, members = compile_expressions([cppcode], [generic_function_members]) cpp_base, members = cpp_base[0], members[0] # Check passed default arguments not_allowed = [n for n in dir(cls) if n[0] !="_"] not_allowed += ["cppcode", "user_parameters"] _check_kwargs(members, kwargs, not_allowed) # Store compile arguments for later use cpp_base.cppcode = cppcode # Create and instantiate the new class return object.__new__(create_compiled_expression_class(cpp_base)) # This method is only included so a user can check what arguments # one should use in IPython using tab completion def __init__(self, cppcode=None, element=None, cell=None, degree=None, \ name=None, label=None, **kwargs): pass # Reuse the docstring from __new__ __init__.__doc__ = __new__.__doc__ def ufl_element(self): "Return the ufl FiniteElement." return self._ufl_element def __str__(self): "x.__str__() <==> print(x)" return self.name() def str(self, verbose=False): "x.str() <==> info(x)" return "" % str(self._value_shape) def __repr__(self): "x.__repr__() <==> repr(x)" return ufl.Coefficient.__repr__(self) # Default value for the value shape _value_shape = () def value_shape(self): """Returns the value shape of the expression""" return self._value_shape def ufl_evaluate(self, x, component, derivatives): """Function used by ufl to evaluate the Expression""" import numpy import ufl assert derivatives == () # TODO: Handle derivatives if component: shape = self.shape() assert len(shape) == len(component) value_size = ufl.common.product(shape) index = ufl.common.component_to_index(component, shape) values = numpy.zeros(value_size) self(*x, values=values) return values[index] else: # Scalar evaluation return self(*x) def __call__(self, *args, **kwargs): """ Evaluates the Expression *Example* 1) Using an iterable as x: .. code-block:: python fs = Expression("sin(x[0])*cos(x[1])*sin(x[3])") x0 = (1.,0.5,0.5) x1 = [1.,0.5,0.5] x2 = numpy.array([1.,0.5,0.5]) v0 = fs(x0) v1 = fs(x1) v2 = fs(x2) 2) Using multiple scalar args for x, interpreted as a point coordinate .. code-block:: python v0 = f(1.,0.5,0.5) 3) Using a Point .. code-block:: python p0 = Point(1.,0.5,0.5) v0 = f(p0) 3) Passing return array .. code-block:: python fv = Expression(("sin(x[0])*cos(x[1])*sin(x[3])", "2.0","0.0")) x0 = numpy.array([1.,0.5,0.5]) v0 = numpy.zeros(3) fv(x0, values = v0) .. note:: A longer values array may be passed. In this way one can fast fill up an array with different evaluations. .. code-block:: python values = numpy.zeros(9) for i in xrange(0,10,3): fv(x[i:i+3], values = values[i:i+3]) """ if len(args)==0: raise TypeError, "expected at least 1 argument" # Test for ufl restriction if len(args) == 1 and args[0] in ('+','-'): return ufl.Coefficient.__call__(self, *args) # Test for ufl mapping if len(args) == 2 and isinstance(args[1], dict) and self in args[1]: return ufl.Coefficient.__call__(self, *args) # Some help variables value_size = ufl.common.product(self.ufl_element().value_shape()) # If values (return argument) is passed, check the type and length values = kwargs.get("values", None) if values is not None: if not isinstance(values, numpy.ndarray): raise TypeError, "expected a NumPy array for 'values'" if len(values) != value_size or \ not numpy.issubdtype(values.dtype, 'd'): raise TypeError, "expected a double NumPy array of length"\ " %d for return values."%value_size values_provided = True else: values_provided = False values = numpy.zeros(value_size, dtype='d') # Check if a cell is defined cell = self.ufl_element().cell() cell_defined = cell is not None if cell_defined: dim = cell.geometric_dimension() # Assume all args are x argument x = args # If only one x argument has been provided, unpack it if it's an iterable if len(x) == 1: if isinstance(x[0], cpp.Point): if cell_defined: x = [x[0][i] for i in xrange(dim)] else: x = [x[0][i] for i in xrange(3)] elif hasattr(x[0], '__iter__'): x = x[0] # Convert it to an 1D numpy array try: x = numpy.fromiter(x, 'd') except (TypeError, ValueError, AssertionError), e: print e raise TypeError, "expected scalar arguments for the coordinates" if len(x) == 0: raise TypeError, "coordinate argument too short" if cell_defined: if len(x) != dim: raise TypeError, "expected the geometry argument to be of "\ "length %d"%dim # The actual evaluation self.eval(values, x) # If scalar return statement, return scalar value. if value_size == 1 and not values_provided: return values[0] return values #--- Utility functions --- def _check_cppcode(cppcode): "Check that cppcode makes sense" # Check that we get a string expression or nested expression if not isinstance(cppcode, (str, tuple, list)): raise TypeError, "Please provide a 'str', 'tuple' or 'list' for "\ "the 'cppcode' argument." def _auto_select_element_from_shape(shape, degree=None, cell=None): "Automatically select an appropriate element from cppcode." # Default element, change to quadrature when working Family = "Lagrange" # Check if scalar, vector or tensor valued if len(shape) == 0: element = ufl.FiniteElement(Family, cell, degree) elif len(shape) == 1: element = ufl.VectorElement(Family, cell, degree, dim=shape[0]) else: element = ufl.TensorElement(Family, cell, degree, shape=shape) cpp.debug("Automatic selection of expression element: " + str(element)) return element def _check_kwargs(members, kwargs, not_allowed): """ Check that all kwargs passed is either scalars or scalar Constants, and that the name is allowed """ # Check passed default values if not all(member in kwargs for member in members): missing = [] for member in members: if member not in kwargs: missing.append(member) missing = ", ".join("'%s'" % miss for miss in missing) raise RuntimeError("expected a default value to all member "\ "variables in the Expression. Missing: %s." % missing) for name in kwargs.keys(): if name in not_allowed: raise RuntimeError("Parameter name: '%s' is not allowed. It is "\ "part of the interface of Expression" % name) if not (all(isinstance(value, (int, float)) or \ (isinstance(value, cpp.GenericFunction) and value.value_size()==1) \ for value in kwargs.values())): raise TypeError, "expected default arguments for member variables "\ "to be scalars or a scalar GenericFunctions." dolfin-1.3.0/site-packages/dolfin/importhandler/0000755000175000017500000000000012263014601021504 5ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin/importhandler/__init__.py0000644000175000017500000000325412263014601023621 0ustar johannrjohannr"""The importhandler module of dolfin""" # NOTE: The automatic documentation system in DOLFIN requires to _not_ define # NOTE: classes or functions within this file. Use separate modules for that # NOTE: purpose. # System imports import sys # Import NumPy so it will not be screwed by imports after RTLD_GLOBAL is set # Work around for lp:1085986 import numpy # Work around lp:956939 and lp:961946 import io # Store dl open flags to restore them after import stored_dlopen_flags = sys.getdlopenflags() # A try to get rid of problems with dynamic_cast of types defined in different # SWIG modules. The problem rises from the dynamic loader not making all types # available for all shared modules. The key is the RTLD_GLOBAL. RTLD_NOW is set # by default. This seems to be similar to the dynamicloadmpi problem above. # See: for references: http://gcc.gnu.org/faq.html#dso if "linux" in sys.platform: # FIXME: What with other platforms? try: from ctypes import RTLD_NOW, RTLD_GLOBAL except ImportError: RTLD_NOW = 2 RTLD_GLOBAL = 256 sys.setdlopenflags(RTLD_NOW | RTLD_GLOBAL) # Check for runtime dependencies runtime_dependencies = ["ufl", "ffc", "ufc", "ply.lex"] for dep in runtime_dependencies: try: __import__(dep) except ImportError, e: import sys message = ["DOLFIN runtime dependency is not met.", "Install the following python module: '%s' " % dep, "and make sure its location is listed in PYTHONPATH."] wrap = "-"*len(max(message, key=len)) print print wrap for s in message: print s print wrap print sys.exit(1) dolfin-1.3.0/site-packages/dolfin/common/0000755000175000017500000000000012263014601020124 5ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin/common/__init__.py0000644000175000017500000000130712263014601022236 0ustar johannrjohannr"""The common module of dolfin""" from dolfin.common import globalparameters from dolfin.common import constants from dolfin.common import plotting from dolfin.common import time from dolfin.common import memory from dolfin.common import math from globalparameters import * from constants import * from plotting import * from time import * from memory import * from math import * # NOTE: The automatic documentation system in DOLFIN requires to _not_ define # NOTE: classes or functions within this file. Use separate modules for that # NOTE: purpose. __all__ = globalparameters.__all__ + constants.__all__ + \ time.__all__ + memory.__all__ + math.__all__ + plotting.__all__ dolfin-1.3.0/site-packages/dolfin/common/time.py0000644000175000017500000000324712263014601021442 0ustar johannrjohannr"""This module provides a time class in Python. It is typically used for problems involving time stepping .""" # Copyright (C) 2008-2010 Garth N. Wells # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2008-08-29 # Last changed: 2010-04-30 __all__ = ["Time"] class Time: def __init__(self, value): self.value = value def __iadd__(self, value): self.value += value return self def __isub__(self, value): self.value -= value return self def __idiv__(self, value): self.value /= value return self def __imul__(self, value): self.value *= value return self def __mul__(self, value): return self.value*value def __div__(self, value): return self.value/value def __lt__(self, value): return self.value < value def __gt__(self, value): return self.value > value def __call__(self): return self.value def __float__(self): return self.value def __str__(self): return str(self.value) dolfin-1.3.0/site-packages/dolfin/common/plotting.py0000644000175000017500000001160512263014601022341 0ustar johannrjohannr# Copyright (C) 2008-2012 Joachim B. Haga and Fredrik Valdmanis # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Martin Sandve Alnaes, 2008. # Modified by Anders Logg, 2008-2010. # # First added: 2008-03-05 # Last changed: 2013-05-29 import os import dolfin.cpp as cpp import ufl __all__ = ['plot'] # Compatibility with book def _VTKPlotter_write_ps(self, *args, **kwargs) : print "*** Warning: VTKPlotter::write_ps() is not implemented -- use write_pdf instead" def plot(object, *args, **kwargs): """ Plot given object. *Arguments* object a :py:class:`Mesh `, a :py:class:`MeshFunction `, a :py:class:`Function `, a :py:class:`Expression` , a :py:class:`DirichletBC` or a :py:class:`FiniteElement `. *Examples of usage* In the simplest case, to plot only e.g. a mesh, simply use .. code-block:: python mesh = UnitSquare(4,4) plot(mesh) Use the ``title`` argument to specify title of the plot .. code-block:: python plot(mesh, tite="Finite element mesh") It is also possible to plot an element .. code-block:: python element = FiniteElement("BDM", tetrahedron, 3) plot(element) Vector valued functions can be visualized with an alternative mode .. code-block:: python plot(u, mode = "glyphs") A more advanced example .. code-block:: python plot(u, wireframe = True, # use wireframe rendering interactive = False, # do not hold plot on screen scalarbar = False, # hide the color mapping bar hardcopy_prefix = "myplot", # default plotfile name scale = 2.0 # scale the warping/glyphs title = "Fancy plot" # Set your own title ) """ mesh = kwargs.get('mesh') p = cpp.Parameters() for key in kwargs: # If there is a "mesh" kwarg it should not be added to the parameters if key != "mesh": try: p.add(key, kwargs[key]) except TypeError: cpp.warning("Incompatible type for keyword argument \"%s\". Ignoring." % key) # Plot element if isinstance(object, ufl.FiniteElementBase): if os.environ.get("DOLFIN_NOPLOT", "0") != "0": return import ffc return ffc.plot(object, *args, **kwargs) if mesh is None and len(args) == 1 and isinstance(args[0], cpp.Mesh): mesh = args[0] # Plot expression if isinstance(object, cpp.Expression): if mesh is None: raise TypeError, "expected a mesh when plotting an expression." return cpp.plot(object, mesh, p) # Try to project if object is not a standard plottable type if not isinstance(object, (cpp.Function, cpp.Expression, cpp.Mesh, cpp.DirichletBC, cpp.MeshFunction, cpp.MeshFunctionBool, cpp.MeshFunctionInt, cpp.MeshFunctionDouble, cpp.MeshFunctionSizet, cpp.DirichletBC, cpp.CSGGeometry)): from dolfin.fem.projection import project try: cpp.info("Object cannot be plotted directly, projecting to"\ " piecewise linears.") object = project(object, mesh=mesh) except Exception as e: raise RuntimeError(("Don't know how to plot given object:\n %s\n"\ "and projection failed:\n %s") % (str(object), str(e))) plot_object = cpp.plot(object, p) plot_object.write_ps = _VTKPlotter_write_ps # Avoid premature deletion of plotted objects if they go out of scope # before the plot window is closed. The plotter itself is safe, since it's # created in the plot() C++ function, not directly from Python. But the # Python plotter proxy may disappear, so we can't store the references # there. global _objects_referenced_from_plot_windows _objects_referenced_from_plot_windows[plot_object.key()] = (object, mesh, p) return plot_object _objects_referenced_from_plot_windows = {} dolfin-1.3.0/site-packages/dolfin/common/math.py0000644000175000017500000000101012263014601021417 0ustar johannrjohannr"""Convenience functions that are useful in subdomains and expressions. Matches some of the functions in dolfin/math/basic.h.""" __all__ = ["sqr"] from constants import DOLFIN_EPS # The cpp version of these functions are about 3 times faster #def between(x0, x, x1): # """Returns true if x0-epsilon < x < x1+epsilon""" # return x0-DOLFIN_EPS < x < x1+DOLFIN_EPS # #def near(x, x0): # """Returns true if x0-epsilon < x < x0+epsilon""" # return x0-DOLFIN_EPS < x < x0+DOLFIN_EPS def sqr(x): return x*x dolfin-1.3.0/site-packages/dolfin/common/globalparameters.py.in0000644000175000017500000000433312263014601024432 0ustar johannrjohannr"""This module defines Python-specific global parameters for DOLFIN by adding to the global parameter set defined in C++.""" # Copyright (C) 2009-2010 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2009-09-21 # Last changed: 2011-03-14 __all__ = ["parameters"] import ufl from dolfin.cpp import parameters, Parameters, MPI # Set default form compiler form_compiler_name = "ffc" # Import form compiler try: form_compiler = __import__(form_compiler_name) except ImportError, message: print message raise RuntimeError, "Could not import %s form compiler." % form_compiler_name # Initialize form compiler parameters form_compiler_parameters = Parameters("form_compiler") for key, value in form_compiler.default_parameters().iteritems(): if key in ["swig_binary", "swig_path"]: continue form_compiler_parameters.add(key, value) form_compiler_parameters.add("name", form_compiler_name) # Special case: handling -1 as "auto" for quadrature_degree in FFC if form_compiler_name == "ffc": form_compiler_parameters.remove("quadrature_degree") form_compiler_parameters.add("quadrature_degree", -1) form_compiler_parameters.add("no-evaluate_basis_derivatives", True) # Increase log level for form compiler to hide output form_compiler_parameters["log_level"] = ufl.INFO + 5 # Set prefix when running in parallel if MPI.num_processes() > 1: form_compiler_parameters["log_prefix"] = "Process %d: " % MPI.process_number() # Add form compiler parameters to global parameter set if not parameters.has_parameter_set("form_compiler"): parameters.add(form_compiler_parameters) dolfin-1.3.0/site-packages/dolfin/common/memory.py0000644000175000017500000000315312263014601022010 0ustar johannrjohannr# Copyright (C) 2010 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2010-02-14 # Last changed: 2010-02-14 import os __all__ = ["memory_usage"] def memory_usage(as_string=True): """ Return memory usage of current process. Note that this function only works on Linux systems. If the flag as_string is true, memory usage is returned as a string. Otherwise, a tuple of integers is returned with current memory usage and maximum memory usage in kB. """ # Try reading /proc try: pid = os.getpid() status = open("/proc/%d/status" % pid).read() except: return "Failed to get memory usage, chances are you are not running GNU/Linux." # Parse values vmsize = int(status.split("VmSize:")[1].split("kB")[0]) vmpeak = int(status.split("VmPeak:")[1].split("kB")[0]) # Return values if as_string: return "Memory usage is %d kB (peak usage is %d kB)" % (vmsize, vmpeak) else: return (vmsize, vmpeak) dolfin-1.3.0/site-packages/dolfin/common/constants.py0000644000175000017500000000043112263014601022510 0ustar johannrjohannr"""This module allows the user to import the following constants: * DOLFIN_PI = 3.141592653589793238462 * DOLFIN_EPS = 3.0e-16 * DOLFIN_SQRT_EPS = 1.0e-8 """ __all__ = ['DOLFIN_EPS', 'DOLFIN_PI', 'DOLFIN_SQRT_EPS'] from dolfin.cpp import DOLFIN_EPS, DOLFIN_PI, DOLFIN_SQRT_EPS dolfin-1.3.0/site-packages/dolfin/cpp/0000755000175000017500000000000012263014601017416 5ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin/cpp/__init__.py0000644000175000017500000000505612263014601021535 0ustar johannrjohannr"""Expose names from the compiled cpp modules to the dolfin.cpp namespace""" # Copyright (C) 2012 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Garth N. Wells, 2013 # # First added: 2012-01-29 # Last changed: 2013-11-01 __all__ = [] #--- Imports the SWIG-generated Python code (C++ interface) --- # NOTE: Order of these imports need to be preserved _compiled_modules = ["common", "la", "function", "io", "mesh", "fem"] # Prohibit includes with these names _not_includes = _compiled_modules[:] _not_includes.extend(["ufc", "new_instancemethod", "SHARED_PTR_DISOWN", \ "weakref", "weakref_proxy", "cvar"]) # Import all compiled modules for module_name in _compiled_modules: # Import the module exec("import %s" % module_name) module = globals()[module_name] # Add the module to the global namespace __all__.append(module_name) # Collect all classes to outrule static class methods _all_classes = [] # Iterate over the modules attributes and add names to global namespace for name in sorted(module.__dict__.keys()): # Skip some includes if name in _not_includes: continue # Do not add an attrbute name which contains "swigregister" or # starts with "_" if "swigregister" in name or name[0] == "_": continue # Get attr attr = getattr(module, name) # Check for class if isinstance(attr, type): _all_classes.append(name) else: # If not a class, check if first part of function name is # the same as a class name if name.split("_")[0] in _all_classes: continue # Add the attribute to the global namespace globals()[name] = attr __all__.append(name) # Add versions # ----------- globals()["__swigversion__"] = getattr(module, "__swigversion__") globals()["__version__"] = common.dolfin_version() dolfin-1.3.0/site-packages/dolfin/fem/0000755000175000017500000000000012263014601017403 5ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin/fem/errorcontrolgenerator.py0000644000175000017500000000663012263014601024423 0ustar johannrjohannr""" This module provides a DOLFINErrorControlGenerator for handling UFL forms defined over DOLFIN objects. """ # Copyright (C) 2011 Marie E. Rognes # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2011-06-28 # Last changed: 2011-06-29 from ufl.algorithms.analysis import extract_arguments from ffc.errorcontrol.errorcontrolgenerators import ErrorControlGenerator from dolfin import Function, FunctionSpace from dolfin.fem.formmanipulations import tear, increase_order class DOLFINErrorControlGenerator(ErrorControlGenerator): """ This class provides a realization of ffc.errorcontrol.errorcontrolgenerators.ErrorControlGenerator for use with UFL forms defined over DOLFIN objects """ def __init__(self, F, M, u): """ *Arguments* F (tuple or Form) tuple of (bilinear, linear) forms or linear form M (Form) functional or linear form u (Coefficient) The coefficient considered as the unknown. """ ErrorControlGenerator.__init__(self, __import__("dolfin"), F, M, u) def initialize_data(self): """ Extract required objects for defining error control forms. This will be stored and reused. """ # Developer's note: The UFL-FFC-DOLFIN--PyDOLFIN toolchain for # error control is quite fine-tuned. In particular, the order # of coefficients in forms is (and almost must be) used for # their assignment. This means that the order in which these # coefficients are defined matters and should be considered # fixed. # Primal trial element space self._V = self.u.function_space() # Primal test space == Dual trial space Vhat = extract_arguments(self.weak_residual)[0].function_space() # Discontinuous version of primal trial element space self._dV = tear(self._V) # Extract cell and geometric dimension mesh = self._V.mesh() dim = mesh.topology().dim() # Function representing improved dual E = increase_order(Vhat) self._Ez_h = Function(E) # Function representing cell bubble function B = FunctionSpace(mesh, "B", dim + 1) self._b_T = Function(B) self._b_T.vector()[:] = 1.0 # Function representing strong cell residual self._R_T = Function(self._dV) # Function representing cell cone function C = FunctionSpace(mesh, "DG", dim) self._b_e = Function(C) # Function representing strong facet residual self._R_dT = Function(self._dV) # Function for discrete dual on primal test space self._z_h = Function(Vhat) # Piecewise constants for assembling indicators self._DG0 = FunctionSpace(mesh, "DG", 0) dolfin-1.3.0/site-packages/dolfin/fem/assembling.py0000644000175000017500000004157212263014601022112 0ustar johannrjohannr"""This module provides functionality for form assembly in Python, corresponding to the C++ assembly and PDE classes. The C++ :py:class:`assemble ` function (renamed to cpp_assemble) is wrapped with an additional preprocessing step where code is generated using the FFC JIT compiler. The C++ PDE classes are reimplemented in Python since the C++ classes rely on the dolfin::Form class which is not used on the Python side.""" # Copyright (C) 2007-2008 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Martin Sandve Alnaes, 2008. # Modified by Johan Hake, 2008-2009. # Modified by Garth N. Wells, 2008-2013. # Modified by Joachim B. Haga, 2012. # # First added: 2007-08-15 # Last changed: 2013-02-18 __all__ = ["assemble", "assemble_system", "SystemAssembler"] import types # UFL modules from ufl import interval, triangle, tetrahedron # Import SWIG-generated extension module (DOLFIN C++) import dolfin.cpp as cpp # Local imports from dolfin.fem.form import * # JIT assembler def assemble(form, tensor=None, mesh=None, coefficients=None, function_spaces=None, cell_domains=None, exterior_facet_domains=None, interior_facet_domains=None, reset_sparsity=True, add_values=False, finalize_tensor=True, keep_diagonal=False, backend=None, form_compiler_parameters=None, bcs=None): """ Assemble the given form and return the corresponding tensor. *Arguments* Depending on the input form, which may be a functional, linear form, bilinear form or higher rank form, a scalar value, a vector, a matrix or a higher rank tensor is returned. In the simplest case, no additional arguments are needed. However, additional arguments may and must in some cases be provided as outlined below. The ``form`` can be either an FFC form or a precompiled UFC form. If a precompiled or 'pure' UFC form is given, then ``coefficients`` and ``function_spaces`` have to be provided too. The coefficient functions should be provided as a 'dict' using the FFC functions as keys. The function spaces should be provided either as a list where the number of function spaces must correspond to the number of basis functions in the form, or as a single argument, implying that the same FunctionSpace is used for all test/trial spaces. If the form defines integrals over different subdomains, :py:class:`MeshFunctions ` over the corresponding topological entities defining the subdomains can be provided. An instance of a :py:class:`SubDomain ` can also be passed for each subdomain. The implementation of the returned tensor is determined by the default linear algebra backend. This can be overridden by specifying a different backend. Each call to assemble() will create a new tensor. If the ``tensor`` argument is provided, this will be used instead. If ``reset_sparsity`` is set to False, the provided tensor will not be reset to zero before assembling (adding) values to the tensor. If the ``keep_diagonal`` is set to True, assembler ensures that potential zeros on a matrix diagonal are kept in sparsity pattern so every diagonal entry can be changed in a future (for example by ident() or ident_zeros()). Specific form compiler parameters can be provided by the ``form_compiler_parameters`` argument. Form compiler parameters can also be controlled using the global parameters stored in parameters["form_compiler"]. *Examples of usage* The standard stiffness matrix ``A`` and a load vector ``b`` can be assembled as follows: .. code-block:: python A = assemble(inner(grad(u),grad(v))*dx()) b = assemble(f*v*dx()) It is possible to explicitly prescribe the domains over which integrals wll be evaluated using the arguments ``cell_domains``, ``exterior_facet_domains`` and ``interior_facet_domains``. For instance, using a mesh function marking parts of the boundary: .. code-block:: python # MeshFunction marking boundary parts boundary_parts = MeshFunction("size_t", mesh, mesh.topology().dim()-1) # Sample variational forms a = inner(grad(u), grad(v))*dx() + p*u*v*ds(0) L = f*v*dx() - g*v*ds(1) + p*q*v*ds(0) A = assemble(a, exterior_facet_domains=boundary_parts) b = assemble(L, exterior_facet_domains=boundary_parts) To ensure that the assembled matrix has the right type, one may use the ``tensor`` argument: .. code-block:: python A = PETScMatrix() assemble(a, tensor=A) The form ``a`` is now assembled into the PETScMatrix ``A``. """ # Extract common cell from mesh (may be missing in form definition) common_cell = None if mesh is None else mesh.ufl_cell() # First check if we got a cpp.Form which originates from cpp layer if isinstance(form, cpp.Form) and not hasattr(form, "_compiled_form"): # Then we just try to use that one dolfin_form = form else: # Wrap form dolfin_form = Form(form, function_spaces=function_spaces, coefficients=coefficients, form_compiler_parameters=form_compiler_parameters, common_cell=common_cell) # Set mesh if specified (important for functionals without a function spaces) if mesh is not None: dolfin_form.set_mesh(mesh) # Create tensor tensor = _create_tensor(form, dolfin_form.rank(), backend, tensor) # Extract domains cell_domains, exterior_facet_domains, interior_facet_domains = \ _extract_domains(dolfin_form.mesh(), cell_domains, exterior_facet_domains, interior_facet_domains) # Attach domains to form if cell_domains is not None: dolfin_form.set_cell_domains(cell_domains); if interior_facet_domains is not None: dolfin_form.set_interior_facet_domains(interior_facet_domains); if exterior_facet_domains is not None: dolfin_form.set_exterior_facet_domains(exterior_facet_domains); # Call C++ assemble function assembler = cpp.Assembler() assembler.reset_sparsity = reset_sparsity assembler.add_values = add_values assembler.finalize_tensor = finalize_tensor assembler.keep_diagonal = keep_diagonal assembler.assemble(tensor, dolfin_form) # Convert to float for scalars if dolfin_form.rank() == 0: tensor = tensor.getval() # Apply (possibly list of) boundary conditions bcs = _wrap_in_list(bcs, 'bcs', cpp.DirichletBC) if bcs: cpp.deprecation("Passing \"bcs\" to assemble", "1.3.0", "Apply DirichletBC manually after an assemble.") for bc in bcs: bc.apply(tensor) # Return value return tensor # JIT system assembler def assemble_system(A_form, b_form, bcs=None, x0=None, A_coefficients=None, b_coefficients=None, A_function_spaces=None, b_function_spaces=None, cell_domains=None, exterior_facet_domains=None, interior_facet_domains=None, reset_sparsity=True, add_values=False, finalize_tensor=True, keep_diagonal=False, A_tensor=None, b_tensor=None, backend=None, form_compiler_parameters=None): """ Assemble form(s) and apply any given boundary conditions in a symmetric fashion and return tensor(s). The standard application of boundary conditions does not necessarily preserve the symmetry of the assembled matrix. In order to perserve symmetry in a system of equations with boundary conditions, one may use the alternative assemble_system instead of multiple calls to :py:func:`assemble `. *Examples of usage* For instance, the statements .. code-block:: python A = assemble(a) b = assemble(L) bc.apply(A, b) can alternatively be carried out by .. code-block:: python A, b = assemble_system(a, L, bc) The statement above is valid even if ``bc`` is a list of :py:class:`DirichletBC ` instances. For more info and options, see :py:func:`assemble `. """ # Extract subdomains subdomains = { "cell": cell_domains, "exterior_facet": exterior_facet_domains, "interior_facet": interior_facet_domains} # Wrap forms A_dolfin_form = Form(A_form, A_function_spaces, A_coefficients, subdomains, form_compiler_parameters) b_dolfin_form = Form(b_form, b_function_spaces, b_coefficients, subdomains, form_compiler_parameters) # Create tensors A_tensor = _create_tensor(A_form, A_dolfin_form.rank(), backend, A_tensor) b_tensor = _create_tensor(b_form, b_dolfin_form.rank(), backend, b_tensor) # Extract domains cell_domains, exterior_facet_domains, interior_facet_domains = \ _extract_domains(A_dolfin_form.mesh(), cell_domains, exterior_facet_domains, interior_facet_domains) # Attach domains to form (from Mesh, in other cases form already # has domain data attached) if cell_domains is not None: A_dolfin_form.set_cell_domains(cell_domains); b_dolfin_form.set_cell_domains(cell_domains); if interior_facet_domains is not None: A_dolfin_form.set_interior_facet_domains(interior_facet_domains); b_dolfin_form.set_interior_facet_domains(interior_facet_domains); if exterior_facet_domains is not None: A_dolfin_form.set_exterior_facet_domains(exterior_facet_domains); b_dolfin_form.set_exterior_facet_domains(exterior_facet_domains); # Check bcs bcs = _wrap_in_list(bcs, 'bcs', cpp.DirichletBC) # Call C++ assemble function assembler = cpp.SystemAssembler(A_dolfin_form, b_dolfin_form, bcs) assembler.reset_sparsity = reset_sparsity assembler.add_values = add_values assembler.finalize_tensor = finalize_tensor assembler.keep_diagonal = keep_diagonal if x0 is not None: assembler.assemble(A_tensor, b_tensor, x0) else: assembler.assemble(A_tensor, b_tensor) return A_tensor, b_tensor def _wrap_in_list(obj, name, types=type): if obj is None: lst = [] elif hasattr(obj, '__iter__'): lst = list(obj) else: lst = [obj] for obj in lst: if not isinstance(obj, types): raise TypeError("expected a (list of) %s as '%s' argument" % (str(types),name)) return lst def _create_tensor(form, rank, backend, tensor): "Create tensor for form" # Check if tensor is supplied by user if tensor is not None: return tensor # Check backend argument if (not backend is None) and (not isinstance(backend, cpp.GenericLinearAlgebraFactory)): raise TypeError, "Provide a GenericLinearAlgebraFactory as 'backend'" # Create tensor if rank == 0: tensor = cpp.Scalar() elif rank == 1: if backend: tensor = backend.create_vector() else: tensor = cpp.Vector() elif rank == 2: if backend: tensor = backend.create_matrix() else: tensor = cpp.Matrix() else: raise RuntimeError, "Unable to create tensors of rank %d." % rank return tensor def _extract_domains(mesh, cell_domains, exterior_facet_domains, interior_facet_domains): def check_domain_type(domain, domain_type): if not isinstance(domain, (cpp.SubDomain,cpp.MeshFunctionSizet, types.NoneType)): raise TypeError, "expected a 'SubDomain', 'MeshFunction' of 'Sizet' or 'None', for the '%s'"%domain_type def build_mf(subdomain, dim): " Builds a MeshFunction from a SubDomain" mf = cpp.MeshFunction("size_t", mesh, dim) mf.set_all(1) subdomain.mark(mf,0) return mf # Type check of input check_domain_type(cell_domains, "cell_domains") check_domain_type(exterior_facet_domains, "exterior_facet_domains") check_domain_type(interior_facet_domains, "interior_facet_domains") # The cell dimension cell_dim = mesh.topology().dim() # Get cell_domains if isinstance(cell_domains, cpp.SubDomain): cell_domains = build_mf(cell_domains, cell_dim) # Get exterior_facet_domains (may be stored as part of the mesh) if isinstance(exterior_facet_domains, cpp.SubDomain): exterior_facet_domains = build_mf(exterior_facet_domains, cell_dim-1) # Get interior_facet_domains if isinstance(interior_facet_domains, cpp.SubDomain): interior_facet_domains = build_mf(interior_facet_domains, cell_dim-1) return cell_domains, exterior_facet_domains, interior_facet_domains class SystemAssembler(cpp.SystemAssembler): __doc__ = cpp.SystemAssembler.__doc__ def __init__(self, A_form, b_form, bcs=None, A_coefficients=None, b_coefficients=None, A_function_spaces=None, b_function_spaces=None, cell_domains=None, exterior_facet_domains=None, interior_facet_domains=None, form_compiler_parameters=None): """ Create a SystemAssembler * Arguments * a (ufl.Form, _Form_) Bilinear form L (ufl.Form, _Form_) Linear form bcs (_DirichletBC_) A list or a single DirichletBC (optional) """ # Extract subdomains subdomains = { "cell": cell_domains, "exterior_facet": exterior_facet_domains, "interior_facet": interior_facet_domains} # Wrap forms # First check if we got a cpp.Form which originates from cpp layer if isinstance(A_form, cpp.Form) and not hasattr(A_form, "_compiled_form"): # Then we just try to use that one A_dolfin_form = A_form else: A_dolfin_form = Form(A_form, A_function_spaces, A_coefficients, subdomains, form_compiler_parameters) if isinstance(b_form, cpp.Form) and not hasattr(b_form, "_compiled_form"): # Then we just try to use that one b_dolfin_form = b_form else: b_dolfin_form = Form(b_form, b_function_spaces, b_coefficients, subdomains, form_compiler_parameters) # Extract domains cell_domains, exterior_facet_domains, interior_facet_domains = \ _extract_domains(A_dolfin_form.mesh(), cell_domains, exterior_facet_domains, interior_facet_domains) # Attach domains to form (from Mesh, in other cases form already # has domain data attached) if cell_domains is not None: A_dolfin_form.set_cell_domains(cell_domains); b_dolfin_form.set_cell_domains(cell_domains); if interior_facet_domains is not None: A_dolfin_form.set_interior_facet_domains(interior_facet_domains); b_dolfin_form.set_interior_facet_domains(interior_facet_domains); if exterior_facet_domains is not None: A_dolfin_form.set_exterior_facet_domains(exterior_facet_domains); b_dolfin_form.set_exterior_facet_domains(exterior_facet_domains); # Check bcs bcs = _wrap_in_list(bcs, 'bcs', cpp.DirichletBC) # Call C++ assemble function cpp.SystemAssembler.__init__(self, A_dolfin_form, b_dolfin_form, bcs) dolfin-1.3.0/site-packages/dolfin/fem/__init__.py0000644000175000017500000000204712263014601021517 0ustar johannrjohannr"""The function module of dolfin""" from dolfin.fem import form from dolfin.fem import assembling from dolfin.fem import variationalproblem from dolfin.fem import norms from dolfin.fem import projection from dolfin.fem import interpolation from dolfin.fem import bcs from dolfin.fem import formmanipulations from form import * from assembling import * from solving import * from adaptivesolving import * from variationalproblem import * from interpolation import * from norms import * from projection import * from bcs import * from formmanipulations import * # NOTE: The automatic documentation system in DOLFIN requires to _not_ define # NOTE: classes or functions within this file. Use separate modules for that # NOTE: purpose. __all__ = form.__all__ + \ assembling.__all__ + \ solving.__all__ + \ adaptivesolving.__all__ + \ variationalproblem.__all__ + \ norms.__all__ + \ projection.__all__ + \ interpolation.__all__ + \ bcs.__all__ + \ formmanipulations.__all__ dolfin-1.3.0/site-packages/dolfin/fem/interpolation.py0000644000175000017500000000414612263014601022651 0ustar johannrjohannr"""This module provides a simple way to compute the interpolation of a :py:class:`Function ` or :py:class:`Expression ` onto a finite element space.""" # Copyright (C) 2009-2011 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2009-08-29 # Last changed: 2011-11-15 __all__ = ["interpolate"] # Local imports import dolfin.cpp as cpp from dolfin.functions.functionspace import FunctionSpaceBase from dolfin.functions.function import Function def interpolate(v, V): """ Return interpolation of a given function into a given finite element space. *Arguments* v a :py:class:`Function ` or an :py:class:`Expression ` V a :py:class:`FunctionSpace (standard, mixed, etc.) ` *Example of usage* .. code-block:: python v = Expression("sin(pi*x[0])") V = FunctionSpace(mesh, "Lagrange", 1) Iv = interpolate(v, V) """ # Check arguments if not isinstance(V, FunctionSpaceBase): cpp.dolfin_error("interpolation.py", "compute interpolation", "Illegal function space for interpolation, not a FunctionSpace (%s)" % str(v)) # Compute interpolation Pv = Function(V) Pv.interpolate(v) return Pv dolfin-1.3.0/site-packages/dolfin/fem/bcs.py0000644000175000017500000001525612263014601020535 0ustar johannrjohannr# Copyright (C) 2009-2011 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Garth N. Wells, 2012 # # First added: 2008-10-22 # Last changed: 2012-08-18 __all__ = ["AutoSubDomain", "DirichletBC", "homogenize"] import types import dolfin.cpp as cpp from dolfin.functions.constant import Constant from dolfin.compilemodules.subdomains import CompiledSubDomain import ufl from dolfin.fem.projection import project class AutoSubDomain(cpp.SubDomain): "Wrapper class for creating a SubDomain from an inside() function." def __init__(self, inside_function): "Create SubDomain subclass for given inside() function" # Check that we get a function if not isinstance(inside_function, types.FunctionType): cpp.dolfin_error("bcs.py", "auto-create subdomain", "Expecting a function (not %s)" % \ str(type(inside_function))) self.inside_function = inside_function # Check the number of arguments if not inside_function.func_code.co_argcount in (1, 2): cpp.dolfin_error("bcs.py", "auto-create subdomain", "Expecting a function of the form inside(x) or inside(x, on_boundary)") self.num_args = inside_function.func_code.co_argcount cpp.SubDomain.__init__(self) def inside(self, x, on_boundary): "Return true for points inside the subdomain" if self.num_args == 1: return self.inside_function(x) else: return self.inside_function(x, on_boundary) class DirichletBC(cpp.DirichletBC): # Reuse doc-string from cpp.DirichletBC __doc__ = cpp.DirichletBC.__doc__ def __init__(self, *args, **kwargs): "Create Dirichlet boundary condition" # Copy constructor if len(args) == 1: if not isinstance(args[0], cpp.DirichletBC): cpp.dolfin_error("bcs.py", "create DirichletBC", "Expecting a DirichleBC as only argument"\ " for copy constructor") # Initialize base class cpp.DirichletBC.__init__(self, args[0]) return # Special case for value specified as float, tuple or similar if len(args) >= 2 and not isinstance(args[1], cpp.GenericFunction): if isinstance(args[1], ufl.classes.Expr): expr = project(args[1], args[0]) else: expr = Constant(args[1]) # let Constant handle all problems args = args[:1] + (expr,) + args[2:] # Special case for sub domain specified as a function if len(args) >= 3 and isinstance(args[2], types.FunctionType): sub_domain = AutoSubDomain(args[2]) args = args[:2] + (sub_domain,) + args[3:] # Special case for sub domain specified as a string if len(args) >= 3 and isinstance(args[2], str): sub_domain = CompiledSubDomain(args[2]) args = args[:2] + (sub_domain,) + args[3:] # Store Expression to avoid scoping issue with SWIG directors if isinstance(args[1], cpp.Expression): self.function_arg = args[1] # Store SubDomain to avoid scoping issue with SWIG directors self.domain_args = args[2:] # FIXME: Handling of multiple default arguments does not # really work between Python and C++ when C++ requires them to # be ordered and cannot accept the latter without the # former... # Add keyword arguments (in correct order...) allowed_kwargs = ["method", "check_midpoint"] for key in allowed_kwargs: if key in kwargs: args = tuple(list(args) + [kwargs[key]]) # Check for other keyword arguments for key in kwargs: if not key in allowed_kwargs: cpp.dolfin_error("bcs.py", "create boundary condition", "Unknown keyword argument \"%s\"" % key) # Initialize base class cpp.DirichletBC.__init__(self, *args) # Set doc string __init__.__doc__ = cpp.DirichletBC.__init__.__doc__ def homogenize(bc): """ Return a homogeneous version of the given boundary condition. *Arguments* bc a :py:class:`DirichletBC ` instance, or a list/tuple of :py:class:`DirichletBC ` instances. Other types of boundary conditions are ignored. If the given boundary condition is a list of boundary conditions, then a list of homogeneous boundary conditions is returned. """ # Handle case when boundary condition is a list if isinstance(bc, (list, tuple)): bcs = bc return [homogenize(bc) for bc in bcs] # Only consider Dirichlet boundary conditions if not isinstance(bc, cpp.DirichletBC): cpp.dolfin_error("bcs.py", "homogenize boundary condition", "Can only homogenize DirichletBCs") # Create zero function V = bc.function_space() if V.element().value_rank() == 0: zero = Constant(0) elif V.element().value_rank() == 1: zero = Constant([0]*V.element().value_dimension(0)) else: cpp.dolfin_error("bcs.py", "homogenize boundary condition", "Unhandled value rank %d for homogenization of boundary conditions" % \ V.element().value_rank()) # Create homogeneous boundary condition if len(bc.domain_args) == 1: new_bc = cpp.DirichletBC(V, zero, bc.domain_args[0]) elif len(bc.domain_args) == 2: new_bc = cpp.DirichletBC(V, zero, bc.domain_args[0], bc.domain_args[1]) else: cpp.dolfin_error("bcs.py", "homogenize boundary condition", "Unknown type of boundary specification") new_bc.domain_args = bc.domain_args return new_bc dolfin-1.3.0/site-packages/dolfin/fem/form.py0000644000175000017500000002076012263014601020725 0ustar johannrjohannr"""This module defines a Form class that wraps FFC forms and UFC forms into a cpp.Form (dolfin::Form).""" # Copyright (C) 2008 Johan Hake # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Anders Logg, 2008-2011 # Modified by Marie E. Rognes, 2011 # # First added: 2008-12-04 # Last changed: 2009-12-11 __all__ = ["Form"] # Import SWIG-generated extension module (DOLFIN C++) import dolfin.cpp as cpp # Import ufl and ufc import ufl, ufc # Import JIT compiler from dolfin.compilemodules.jit import jit # Note that we need to store _compiled_form and _compiled_coefficients # to prevent Python from garbage-collecting these while still in use. # FIXME: Figure out how to solve this with shared_ptr class Form(cpp.Form): def __init__(self, form, function_spaces=None, coefficients=None, subdomains=None, form_compiler_parameters=None, common_cell=None): "Create JIT-compiled form from any given form (compiled or not)." # Check form argument if isinstance(form, ufl.Form): self._compiled_form, module, self.form_data, prefix \ = jit(form, form_compiler_parameters, common_cell) elif isinstance(form, ufc.form): self._compiled_form = form self.form_data = None elif isinstance(form, cpp.Form): self._compiled_form = form._compiled_form self.form_data = form.form_data else: cpp.dolfin_error("form.py", "creating dolfin.Form", "Expected a ufl.Form, ufc.form or a dolfin.Form") # Extract function spaces self.function_spaces = _extract_function_spaces(self.form_data, self._compiled_form, function_spaces) # Extract coefficients (self.coefficients, self._compiled_coefficients) = \ _extract_coefficients(self.form_data, coefficients) # Initialize base class cpp.Form.__init__(self, self._compiled_form, self.function_spaces, self.coefficients) # Extract subdomains from form_data, override if given explicitly self.subdomains = _extract_subdomains(self.form_data, subdomains) # Attach subdomains if we have them subdomains = self.subdomains.get("cell") if subdomains is not None: self.set_cell_domains(subdomains) subdomains = self.subdomains.get("exterior_facet") if subdomains is not None: self.set_exterior_facet_domains(subdomains) subdomains = self.subdomains.get("interior_facet") if subdomains is not None: self.set_interior_facet_domains(subdomains) def _extract_function_spaces(form_data, compiled_form, given_function_spaces): "Extract list of test spaces." # Note: Most of this function is error checking, # look for 'function_spaces' to see where stuff happens function_space_error = "Error while extracting test and/or trial spaces. " function_spaces = [] r = compiled_form.rank() if given_function_spaces: # Given function spaces are necessary for assembling pure UFC forms, # and possibly also convenient for other rare scenarios. if isinstance(given_function_spaces, cpp.FunctionSpace): if r > 0: # Repeat a single given space function_spaces = [given_function_spaces]*r else: raise ValueError(function_space_error + "Superfluous test spaces given for a functional.") elif isinstance(given_function_spaces, (list,tuple)): if all(isinstance(fs, cpp.FunctionSpace) for fs in given_function_spaces): # Take given list of spaces function_spaces = list(given_function_spaces) else: raise ValueError(function_space_error + "Invalid given test spaces.") else: raise ValueError(function_space_error + "Expecting given_function_spaces to be one or more function spaces.") else: # No given function spaces is the norm in pydolfin, which means # they are to be extracted from the ufl form if hasattr(form_data, 'original_arguments'): # Get spaces from Arguments found in ufl form function_spaces = [func.function_space() for func in form_data.original_arguments] elif r == 0: # No given spaces, no form_data, but this is a functional, so no spaces needed function_spaces = [] else: raise ValueError(function_space_error + "Missing data about basis functions in form data.") # Consistency checks if len(function_spaces) != r: raise ValueError(function_space_error + " Wrong number of test spaces (should be %d)." % r) if not all(isinstance(fs, cpp.FunctionSpace) for fs in function_spaces): raise ValueError(function_space_error + " Invalid type of test spaces.") return function_spaces def _extract_coefficients(form_data, given_coefficients): "Extract list of coefficients." # Note: Most of this function is error checking, # look for 'coefficients' and '_compiled_coefficients' to see where stuff happens coefficient_error = "Error while extracting coefficients. " coefficients = [] _compiled_coefficients = [] if given_coefficients: # Type checking given coefficients error_info = "Provide a 'list' with cpp.GenericFunctions" if not isinstance(given_coefficients, list): raise TypeError(coefficient_error + error_info) if not all(isinstance(c, cpp.GenericFunction) for c in given_coefficients): raise TypeError(coefficient_error) # Just use the given list coefficients = list(given_coefficients) _compiled_coefficients = list(given_coefficients) elif form_data is None: # Nothing to extract coefficients = [] _compiled_coefficients = [] else: # Type checking form data if not hasattr(form_data, "original_coefficients"): raise TypeError(coefficient_error + "Missing data about coefficients in form data.") if not all(isinstance(c, cpp.GenericFunction) for c in form_data.original_coefficients): raise TypeError(coefficient_error + "Either provide a dict of cpp.GenericFunctions, " + "or use Function to define your form.") # Just use the list from form data coefficients = list(form_data.original_coefficients) _compiled_coefficients = [] # Is this correct? No need to store double references. return (coefficients, _compiled_coefficients) def _extract_subdomains(form_data, override_subdomains): "Extract list of subdomains." override_subdomains = override_subdomains or {} if form_data is None: return override_subdomains domain_types = ("cell", "exterior_facet", "interior_facet") additional_keys = set(override_subdomains.keys()) - set(domain_types) if additional_keys: raise TypeError, "Invalid keys in domain_types: %s" % additional_keys subdomains = {} for domain in domain_types: domains = override_subdomains.get(domain) if domains is None: domains = form_data.domain_data.get(domain) # FIXME: Add test for MeshFunctions here. # Like this? #if (domains is not None) and (not isinstance(domains, MeshFunction)): # raise TypeError, "Invalid subdomains type %s" % type(domains) subdomains[domain] = domains return subdomains dolfin-1.3.0/site-packages/dolfin/fem/solving.py0000644000175000017500000003656612263014601021456 0ustar johannrjohannr"""This module provides a small Python layer on top of the C++ VariationalProblem/Solver classes as well as the solve function.""" # Copyright (C) 2011 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Marie E. Rognes, 2011. # Modified by Johan Hake, 2011. # # First added: 2011-06-22 # Last changed: 2011-11-10 __all__ = ["LinearVariationalProblem", "LinearVariationalSolver", "NonlinearVariationalProblem", "NonlinearVariationalSolver", "solve"] # Import SWIG-generated extension module (DOLFIN C++) import dolfin.cpp as cpp # Import UFL import ufl # Local imports from dolfin.fem.form import Form from dolfin.fem.formmanipulations import derivative # Problem classes need special handling since they involve JIT compilation class LinearVariationalProblem(cpp.LinearVariationalProblem): # Reuse C++ doc-string __doc__ = cpp.LinearVariationalProblem.__doc__ def __init__(self, a, L, u, bcs=None, form_compiler_parameters=None): """ Create linear variational problem a(u, v) = L(v). An optional argument bcs may be passed to specify boundary conditions. Another optional argument form_compiler_parameters may be specified to pass parameters to the form compiler. """ # Extract and check arguments u = _extract_u(u) bcs = _extract_bcs(bcs) # Store input UFL forms and solution Function self.a_ufl = a self.L_ufl = L self.u_ufl = u # Store form compiler parameters form_compiler_parameters = form_compiler_parameters or {} self.form_compiler_parameters = form_compiler_parameters # Wrap forms (and check if linear form L is empty) if L.integrals() == (): L = cpp.Form(1, 0) else: L = Form(L, form_compiler_parameters=form_compiler_parameters) a = Form(a, form_compiler_parameters=form_compiler_parameters) # Initialize C++ base class cpp.LinearVariationalProblem.__init__(self, a, L, u, bcs) class NonlinearVariationalProblem(cpp.NonlinearVariationalProblem): # Reuse C++ doc-string __doc__ = cpp.NonlinearVariationalProblem.__doc__ def __init__(self, F, u, bcs=None, J=None, form_compiler_parameters=None): """ Create nonlinear variational problem F(u; v) = 0. Optional arguments bcs and J may be passed to specify boundary conditions and the Jacobian J = dF/du. Another optional argument form_compiler_parameters may be specified to pass parameters to the form compiler. """ # Extract and check arguments u = _extract_u(u) bcs = _extract_bcs(bcs) # Store input UFL forms and solution Function self.F_ufl = F self.J_ufl = J self.u_ufl = u # Store form compiler parameters form_compiler_parameters = form_compiler_parameters or {} self.form_compiler_parameters = form_compiler_parameters # Wrap forms F = Form(F, form_compiler_parameters=form_compiler_parameters) if J is not None: J = Form(J, form_compiler_parameters=form_compiler_parameters) # Initialize C++ base class if J is None: cpp.NonlinearVariationalProblem.__init__(self, F, u, bcs) else: cpp.NonlinearVariationalProblem.__init__(self, F, u, bcs, J) # Solver classes are imported directly from dolfin.cpp import LinearVariationalSolver, NonlinearVariationalSolver from dolfin.fem.adaptivesolving import AdaptiveLinearVariationalSolver from dolfin.fem.adaptivesolving import AdaptiveNonlinearVariationalSolver # Solve function handles both linear systems and variational problems def solve(*args, **kwargs): """Solve linear system Ax = b or variational problem a == L or F == 0. The DOLFIN solve() function can be used to solve either linear systems or variational problems. The following list explains the various ways in which the solve() function can be used. *1. Solving linear systems* A linear system Ax = b may be solved by calling solve(A, x, b), where A is a matrix and x and b are vectors. Optional arguments may be passed to specify the solver method and preconditioner. Some examples are given below: .. code-block:: python solve(A, x, b) solve(A, x, b, "lu") solve(A, x, b, "gmres", "ilu") solve(A, x, b, "cg", "hypre_amg") Possible values for the solver method and preconditioner depend on which linear algebra backend is used and how that has been configured. To list all available LU methods, run the following command: .. code-block:: python list_lu_methods() To list all available Krylov methods, run the following command: .. code-block:: python list_krylov_methods() To list all available preconditioners, run the following command: .. code-block:: python list_preconditioners() To list all available solver methods, including LU methods, Krylov methods and, possibly, other methods, run the following command: .. code-block:: python list_solver_methods() *2. Solving linear variational problems* A linear variational problem a(u, v) = L(v) for all v may be solved by calling solve(a == L, u, ...), where a is a bilinear form, L is a linear form, u is a Function (the solution). Optional arguments may be supplied to specify boundary conditions or solver parameters. Some examples are given below: .. code-block:: python solve(a == L, u) solve(a == L, u, bcs=bc) solve(a == L, u, bcs=[bc1, bc2]) solve(a == L, u, bcs=bcs, solver_parameters={"linear_solver": "lu"}, form_compiler_parameters={"optimize": True}) For available choices for the 'solver_parameters' kwarg, look at: .. code-block:: python info(LinearVariationalSolver.default_parameters(), 1) *3. Solving nonlinear variational problems* A nonlinear variational problem F(u; v) = 0 for all v may be solved by calling solve(F == 0, u, ...), where the residual F is a linear form (linear in the test function v but possibly nonlinear in the unknown u) and u is a Function (the solution). Optional arguments may be supplied to specify boundary conditions, the Jacobian form or solver parameters. If the Jacobian is not supplied, it will be computed by automatic differentiation of the residual form. Some examples are given below: .. code-block:: python solve(F == 0, u) solve(F == 0, u, bcs=bc) solve(F == 0, u, bcs=[bc1, bc2]) solve(F == 0, u, bcs, J=J, solver_parameters={"linear_solver": "lu"}, form_compiler_parameters={"optimize": True}) For available choices for the 'solver_parameters' kwarg, look at: .. code-block:: python info(NonlinearVariationalSolver.default_parameters(), 1) *4. Solving linear/nonlinear variational problems adaptively Linear and nonlinear variational problems maybe solved adaptively, with automated goal-oriented error control. The automated error control algorithm is based on adaptive mesh refinement in combination with automated generation of dual-weighted residual-based error estimates and error indicators. An adaptive solve may be invoked by giving two additional arguments to the solve call, a numerical error tolerance and a goal functional (a Form). .. code-block:: python M = u*dx() tol = 1.e-6 # Linear variational problem solve(a == L, u, bcs=bc, tol=tol, M=M) # Nonlinear problem: solve(F == 0, u, bcs=bc, tol=tol, M=M) """ assert(len(args) > 0) # Call adaptive solve if we get a tolerance if "tol" in kwargs: _solve_varproblem_adaptive(*args, **kwargs) # Call variational problem solver if we get an equation (but not a tolerance) elif isinstance(args[0], ufl.classes.Equation): _solve_varproblem(*args, **kwargs) # Default case, just call the wrapped C++ solve function else: if kwargs: cpp.dolfin_error("solving.py", "solve linear algebra problem", "Not expecting keyword arguments when solving "\ "linear algebra problem") return cpp.la_solve(*args) def _solve_varproblem(*args, **kwargs): "Solve variational problem a == L or F == 0" # Extract arguments eq, u, bcs, J, tol, M, form_compiler_parameters, solver_parameters \ = _extract_args(*args, **kwargs) # Solve linear variational problem if isinstance(eq.lhs, ufl.Form) and isinstance(eq.rhs, ufl.Form): # Create problem problem = LinearVariationalProblem(eq.lhs, eq.rhs, u, bcs, form_compiler_parameters=form_compiler_parameters) # Create solver and call solve solver = LinearVariationalSolver(problem) solver.parameters.update(solver_parameters) solver.solve() # Solve nonlinear variational problem else: # Create Jacobian if missing if J is None: cpp.info("No Jacobian form specified for nonlinear variational problem.") cpp.info("Differentiating residual form F to obtain Jacobian J = F'.") F = eq.lhs J = derivative(F, u) # Create problem problem = NonlinearVariationalProblem(eq.lhs, u, bcs, J, form_compiler_parameters=form_compiler_parameters) # Create solver and call solve solver = NonlinearVariationalSolver(problem) solver.parameters.update(solver_parameters) solver.solve() def _solve_varproblem_adaptive(*args, **kwargs): "Solve variational problem a == L or F == 0 adaptively" # Extract arguments eq, u, bcs, J, tol, M, form_compiler_parameters, solver_parameters \ = _extract_args(*args, **kwargs) # Check that we received the goal functional if M is None: cpp.dolfin_error("solving.py", "solve variational problem adaptively", "Missing goal functional") # Solve linear variational problem if isinstance(eq.lhs, ufl.Form) and isinstance(eq.rhs, ufl.Form): # Create problem problem = LinearVariationalProblem(eq.lhs, eq.rhs, u, bcs, form_compiler_parameters=form_compiler_parameters) # Create solver and call solve solver = AdaptiveLinearVariationalSolver(problem, M) solver.parameters.update(solver_parameters) solver.solve(tol) # Solve nonlinear variational problem else: # Create Jacobian if missing if J is None: cpp.info("No Jacobian form specified for nonlinear variational problem.") cpp.info("Differentiating residual form F to obtain Jacobian J = F'.") F = eq.lhs J = derivative(F, u) # Create problem problem = NonlinearVariationalProblem(eq.lhs, u, bcs, J, form_compiler_parameters=form_compiler_parameters) # Create solver and call solve solver = AdaptiveNonlinearVariationalSolver(problem, M) solver.parameters.update(solver_parameters) solver.solve(tol) def _extract_args(*args, **kwargs): "Common extraction of arguments for _solve_varproblem[_adaptive]" # Check for use of valid kwargs valid_kwargs = ["bcs", "J", "tol", "M", "form_compiler_parameters", "solver_parameters"] for kwarg in kwargs.iterkeys(): if not kwarg in valid_kwargs: cpp.dolfin_error("solving.py", "solve variational problem", "Illegal keyword argument \"%s\"; valid keywords are %s" % \ (kwarg, ", ".join("\"%s\"" % kwarg for kwarg in valid_kwargs))) # Extract equation if not len(args) >= 2: cpp.dolfin_error("solving.py", "solve variational problem", "Missing arguments, expecting solve(lhs == rhs, "\ "u, bcs=bcs), where bcs is optional") if len(args) > 3: cpp.dolfin_error("solving.py", "solve variational problem", "Too many arguments, expecting solve(lhs == rhs, "\ "u, bcs=bcs), where bcs is optional") # Extract equation eq = _extract_eq(args[0]) # Extract solution function u = _extract_u(args[1]) # Extract boundary conditions if len(args) > 2: bcs = _extract_bcs(args[2]) elif "bcs" in kwargs: bcs = _extract_bcs(kwargs["bcs"]) else: bcs = [] # Extract Jacobian J = kwargs.get("J", None) if J is not None and not isinstance(J, ufl.Form): cpp.dolfin_error("solving.py", "solve variational problem", "Expecting Jacobian J to be a UFL Form") # Extract tolerance tol = kwargs.get("tol", None) if tol is not None and not (isinstance(tol, (float, int)) and tol >= 0.0): cpp.dolfin_error("solving.py", "solve variational problem", "Expecting tolerance tol to be a non-negative number") # Extract functional M = kwargs.get("M", None) if M is not None and not isinstance(M, ufl.Form): cpp.dolfin_error("solving.py", "solve variational problem", "Expecting goal functional M to be a UFL Form") # Extract parameters form_compiler_parameters = kwargs.get("form_compiler_parameters", {}) solver_parameters = kwargs.get("solver_parameters", {}) return eq, u, bcs, J, tol, M, form_compiler_parameters, solver_parameters def _extract_eq(eq): "Extract and check argument eq" if not isinstance(eq, ufl.classes.Equation): cpp.dolfin_error("solving.py", "solve variational problem", "Expecting first argument to be an Equation") return eq def _extract_u(u): "Extract and check argument u" if not isinstance(u, cpp.Function): cpp.dolfin_error("solving.py", "solve variational problem", "Expecting second argument to be a Function") return u def _extract_bcs(bcs): "Extract and check argument bcs" if bcs is None: bcs = [] elif not isinstance(bcs, (list, tuple)): bcs = [bcs] for bc in bcs: if not isinstance(bc, cpp.DirichletBC): cpp.dolfin_error("solving.py", "solve variational problem", "Unable to extract boundary condition arguments") return bcs dolfin-1.3.0/site-packages/dolfin/fem/variationalproblem.py0000644000175000017500000000313112263014601023645 0ustar johannrjohannr"""This class is deprecated and is only here to give an informative error message to users about the new interface.""" """This module provides the class VariationalProblem in Python. This needs special handling and we cannot use the SWIG wrapper directly since we need to call the JIT compiler.""" # Copyright (C) 2007-2008 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Johan Hake, 2009 # Modified by Marie E. Rognes, 2011 # # First added: 2007-08-15 # Last changed: 2011-07-21 __all__ = ["VariationalProblem"] import dolfin.cpp as cpp class VariationalProblem(cpp.VariationalProblem): __doc__ = cpp.VariationalProblem.__doc__ def __init__(self, *args, **kwargs): cpp.dolfin_error("variationalproblem.py", "create variational problem", "The VariationalProblem class has been removed. Please visit http://fenicsproject.org/releases/1.0-beta/ to see which changes you need to make to your program.") dolfin-1.3.0/site-packages/dolfin/fem/adaptivesolving.py0000644000175000017500000001372612263014601023165 0ustar johannrjohannr"""This module provides a Python layer on top of the C++ Adaptive*VariationalSolver classes""" # Copyright (C) 2011 Marie E. Rognes # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Anders Logg 2011 # # First added: 2011-06-27 # Last changed: 2011-11-14 __all__ = ["AdaptiveLinearVariationalSolver", "AdaptiveNonlinearVariationalSolver", "generate_error_control", "generate_error_control_forms"] import dolfin.cpp as cpp from dolfin.fem.form import Form from dolfin.fem.solving import LinearVariationalProblem from dolfin.fem.solving import NonlinearVariationalProblem from dolfin.fem.errorcontrolgenerator import DOLFINErrorControlGenerator class AdaptiveLinearVariationalSolver(cpp.AdaptiveLinearVariationalSolver): # Reuse doc-string __doc__ = cpp.AdaptiveLinearVariationalSolver.__doc__ def __init__(self, problem, goal): """ Create AdaptiveLinearVariationalSolver *Arguments* problem (:py:class:`LinearVariationalProblem `) """ # Store problem self.problem = problem # Generate error control object ec = generate_error_control(self.problem, goal) # Compile goal functional separately p = self.problem.form_compiler_parameters M = Form(goal, form_compiler_parameters=p) # Initialize C++ base class cpp.AdaptiveLinearVariationalSolver.__init__(self, problem, M, ec) def solve(self, tol): """ Solve such that the estimated error in the functional 'goal' is less than the given tolerance 'tol' *Arguments* tol (float) The error tolerance """ # Call cpp.AdaptiveLinearVariationalSolver.solve directly cpp.AdaptiveLinearVariationalSolver.solve(self, tol) class AdaptiveNonlinearVariationalSolver(cpp.AdaptiveNonlinearVariationalSolver): # Reuse doc-string __doc__ = cpp.AdaptiveNonlinearVariationalSolver.__doc__ def __init__(self, problem, goal): """ Create AdaptiveNonlinearVariationalSolver *Arguments* problem (:py:class:`NonlinearVariationalProblem `) """ # Store problem self.problem = problem # Generate error control object ec = generate_error_control(self.problem, goal) # Compile goal functional separately p = self.problem.form_compiler_parameters M = Form(goal, form_compiler_parameters=p) # Initialize C++ base class cpp.AdaptiveNonlinearVariationalSolver.__init__(self, problem, M, ec) def solve(self, tol): """ Solve such that the estimated error in the functional 'goal' is less than the given tolerance 'tol'. *Arguments* tol (float) The error tolerance """ # Call cpp.AdaptiveNonlinearVariationlSolver.solve with ec cpp.AdaptiveNonlinearVariationalSolver.solve(self, tol) def generate_error_control(problem, goal): """ Create suitable ErrorControl object from problem and the goal *Arguments* problem (:py:class:`LinearVariationalProblem ` or :py:class:`NonlinearVariationalProblem `) The (primal) problem goal (:py:class:`Form `) The goal functional *Returns* :py:class:`ErrorControl ` """ # Generate UFL forms to be used for error control (ufl_forms, is_linear) = generate_error_control_forms(problem, goal) # Compile generated forms p = problem.form_compiler_parameters forms = [Form(form, form_compiler_parameters=p) for form in ufl_forms] # Create cpp.ErrorControl object forms += [is_linear] # NOTE: Lingering design inconsistency. ec = cpp.ErrorControl(*forms) # Return generated ErrorControl return ec def generate_error_control_forms(problem, goal): """ Create UFL forms required for initializing an ErrorControl object *Arguments* problem (:py:class:`LinearVariationalProblem ` or :py:class:`NonlinearVariationalProblem `) The (primal) problem goal (:py:class:`Form `) The goal functional *Returns* (tuple of forms, bool) """ msg = "Generating forms required for error control, this may take some time..." cpp.info(msg) # Extract primal forms from problem is_linear = True if isinstance(problem, LinearVariationalProblem): primal = (problem.a_ufl, problem.L_ufl) elif isinstance(problem, NonlinearVariationalProblem): is_linear = False primal = problem.F_ufl else: cpp.dolfin_error("adaptivesolving.py", "generate forms required for error control", "Unknown problem type (\"%s\")" % str(problem)) # Extract unknown Function from problem u = problem.u_ufl # Get DOLFIN's error control generator to generate all forms generator = DOLFINErrorControlGenerator(primal, goal, u) forms = generator.generate_all_error_control_forms() return (forms, is_linear) dolfin-1.3.0/site-packages/dolfin/fem/projection.py0000644000175000017500000001140712263014601022134 0ustar johannrjohannr"""This module provides a simple way to compute the projection of a :py:class:`Function ` or an :py:class:`Expression ` onto a finite element space.""" # Copyright (C) 2008-2011 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2008-07-13 # Last changed: 2011-11-15 __all__ = ['project'] # Import UFL and SWIG-generated extension module (DOLFIN C++) import ufl import dolfin.cpp as cpp # Local imports from dolfin.functions.function import * from dolfin.functions.expression import * from dolfin.functions.functionspace import * from dolfin.fem.assembling import * def project(v, V=None, bcs=None, mesh=None, solver_type="cg", preconditioner_type="default", form_compiler_parameters=None): """ Return projection of given expression *v* onto the finite element space *V*. *Arguments* v a :py:class:`Function ` or an :py:class:`Expression ` bcs Optional argument :py:class:`list of DirichletBC ` V Optional argument :py:class:`FunctionSpace ` mesh Optional argument :py:class:`mesh `. solver_type see :py:func:`solve ` for options. preconditioner_type see :py:func:`solve ` for options. form_compiler_parameters see :py:class:`Parameters ` for more information. *Example of usage* .. code-block:: python v = Expression("sin(pi*x[0])") V = FunctionSpace(mesh, "Lagrange", 1) Pv = project(v, V) This is useful for post-processing functions or expressions which are not readily handled by visualization tools (such as for example discontinuous functions). """ # If trying to project an Expression if V is None and isinstance(v, Expression): if mesh is not None and isinstance(mesh, cpp.Mesh): V = FunctionSpaceBase(mesh, v.ufl_element()) else: raise TypeError, "expected a mesh when projecting an Expression" # Try extracting function space if not specified if V is None: V = _extract_function_space(v, mesh) # Check arguments if not isinstance(V, FunctionSpaceBase): cpp.dolfin_error("projection.py", "compute projection", "Illegal function space for projection, not a FunctionSpace: " + str(v)) # Define variational problem for projection w = TestFunction(V) Pv = TrialFunction(V) a = ufl.inner(w, Pv)*ufl.dx() L = ufl.inner(w, v)*ufl.dx() # Assemble linear system A, b = assemble_system(a, L, bcs=bcs, form_compiler_parameters=form_compiler_parameters) # Solve linear system for projection Pv = Function(V) cpp.la_solve(A, Pv.vector(), b, solver_type, preconditioner_type) return Pv def _extract_function_space(expression, mesh): """Try to extract a suitable function space for projection of given expression.""" # Extract functions functions = ufl.algorithms.extract_coefficients(expression) # Extract mesh from functions if mesh is None: for f in functions: if isinstance(f, Function): mesh = f.function_space().mesh() if mesh is not None: break if mesh is None: raise RuntimeError, "Unable to project expression, can't find a suitable mesh." # Create function space shape = expression.shape() if shape == (): V = FunctionSpace(mesh, "CG", 1) elif len(shape) == 1: V = VectorFunctionSpace(mesh, "CG", 1, dim=shape[0]) elif len(shape) == 2: V = TensorFunctionSpace(mesh, "CG", 1, shape=shape) else: raise RuntimeError, "Unable to project expression, unhandled rank, shape is %s." % (shape,) return V dolfin-1.3.0/site-packages/dolfin/fem/formmanipulations.py0000644000175000017500000001054412263014601023530 0ustar johannrjohannr# Copyright (C) 2010-2012 Marie E. Rognes # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Johan Hake 2011 # Modified by Anders Logg 2011 # # Last changed: 2012-01-10 import ufl import dolfin.cpp as cpp from ufl.algorithms import extract_arguments from dolfin import FunctionSpace, MixedFunctionSpace, VectorFunctionSpace from dolfin import Function, TrialFunction, Argument __all__ = ["derivative", "adjoint", "increase_order", "tear"] def adjoint(form, reordered_arguments=None): # Call UFL directly if new arguments are provided directly if reordered_arguments is not None: return ufl.adjoint(form, reordered_arguments=reordered_arguments) # Extract form arguments arguments = extract_arguments(form) if not (len(arguments) == 2): cpp.dolfin_error("formmanipulation.py", "compute adjoint of form", "Form is not bilinear") # Define new Argument(s) in the same spaces (NB: Order matters # here!) v_1 = Argument(arguments[1].function_space()) v_0 = Argument(arguments[0].function_space()) # Call ufl.adjoint with swapped arguments as new arguments return ufl.adjoint(form, reordered_arguments=(v_1, v_0)) adjoint.__doc__ = ufl.adjoint.__doc__ def derivative(form, u, du=None): if du is None: if isinstance(u, Function): V = u.function_space() du = Argument(V) elif isinstance(u, (list,tuple)) and all(isinstance(w, Function) for w in u): V = MixedFunctionSpace([w.function_space() for w in u]) du = ufl.split(Argument(V)) else: cpp.dolfin_error("formmanipulation.py", "compute derivative of form", "Cannot automatically create third argument, please supply one") return ufl.derivative(form, u, du) derivative.__doc__ = ufl.derivative.__doc__ def increase_order(V): """ For a given function space, return the same space, but with a higher polynomial degree """ n = V.num_sub_spaces() if n > 0: spaces = [] for i in range(n): V_i = V.sub(i) element = V_i.ufl_element() # Handle VectorFunctionSpaces specially if isinstance(element, ufl.VectorElement): spaces += [VectorFunctionSpace(V_i.mesh(), element.family(), element.degree() + 1, dim=element.num_sub_elements())] # Handle all else as MixedFunctionSpaces else: spaces += [increase_order(V_i)] return MixedFunctionSpace(spaces) if V.ufl_element().family() == "Real": return FunctionSpace(V.mesh(), "Real", 0) return FunctionSpace(V.mesh(), V.ufl_element().family(), V.ufl_element().degree() + 1) def change_regularity(V, family): """ For a given function space, return the corresponding space with the finite elements specified by 'family'. Possible families are the families supported by the form compiler """ n = V.num_sub_spaces() if n > 0: return MixedFunctionSpace([change_regularity(V.sub(i), family) for i in range(n)]) element = V.ufl_element() shape = element.value_shape() if not shape: return FunctionSpace(V.mesh(), family, element.degree()) return MixedFunctionSpace([FunctionSpace(V.mesh(), family, element.degree()) for i in range(shape[0])]) def tear(V_h): """ For a given function space, return the corresponding discontinuous space """ W = change_regularity(V_h, "DG") return W dolfin-1.3.0/site-packages/dolfin/fem/norms.py0000644000175000017500000002256412263014601021124 0ustar johannrjohannr"""This module provides a simple way to compute various norms of :py:class:`Vectors ` and :py:class:`Functions `, including the standard :math:`L^2`-norm and other norms.""" # Copyright (C) 2008 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2008-03-19 # Last changed: 2009-12-11 __all__ = ["norm", "errornorm"] from ufl import inner, grad, div, curl, dx, FiniteElement, VectorElement, Coefficient from math import sqrt import dolfin.cpp as cpp from dolfin.cpp import GenericVector, GenericFunction, Function, Mesh, error, Vector from dolfin.fem.assembling import assemble from dolfin.fem.interpolation import interpolate from dolfin.functions.function import Function from dolfin.functions.functionspace import FunctionSpace, VectorFunctionSpace dim_to_shape = {1: "interval", 2: "triangle", 3: "tetrahedron"} def norm(v, norm_type="L2", mesh=None): """ Return the norm of a given vector or function. *Arguments* v a :py:class:`Vector ` or a :py:class:`Function `. norm_type see below for alternatives. mesh optional :py:class:`Mesh ` on which to compute the norm. If the norm type is not specified, the standard :math:`L^2` -norm is computed. Possible norm types include: *Vectors* ================ ================= ================ Norm Usage ================ ================= ================ :math:`l^2` norm(x, 'l2') Default :math:`l^1` norm(x, 'l1') :math:`l^\infty` norm(x, 'linf') ================ ================= ================ *Functions* ================ ================= ================================= Norm Usage Includes the :math:`L^2` -term ================ ================= ================================= :math:`L^2` norm(v, 'L2') Yes :math:`H^1` norm(v, 'H1') Yes :math:`H^1_0` norm(v, 'H10') No :math:`H` (div) norm(v, 'Hdiv') Yes :math:`H` (div) norm(v, 'Hdiv0') No :math:`H` (curl) norm(v, 'Hcurl') Yes :math:`H` (curl) norm(v, 'Hcurl0') No ================ ================= ================================= *Examples of usage* .. code-block:: python v = Function(V) x = v.vector() print norm(x, 'linf') # print the infinity norm of vector x n = norm(v) # compute L^2 norm of v print norm(v, 'Hdiv') # print H(div) norm of v n = norm(v, 'H1', mesh) # compute H^1 norm of v on given mesh """ if not isinstance(v, (GenericVector, GenericFunction)): raise TypeError, "expected a GenericVector or GenericFunction" # Check arguments if not isinstance(norm_type, str): cpp.dolfin_error("norms.py", "compute norm", "Norm type must be a string, not " + str(type(norm_type))) if mesh is not None and not isinstance(mesh, Mesh): cpp.dolfin_error("norms.py", "compute norm", "Expecting a Mesh, not " + str(type(mesh))) # Select norm type if isinstance(v, GenericVector): return v.norm(norm_type.lower()) elif (isinstance(v, Coefficient) and isinstance(v, GenericFunction)): if norm_type.lower() == "l2": M = inner(v, v)*dx() elif norm_type.lower() == "h1": M = inner(v, v)*dx() + inner(grad(v), grad(v))*dx() elif norm_type.lower() == "h10": M = inner(grad(v), grad(v))*dx() elif norm_type.lower() == "hdiv": M = inner(v, v)*dx() + div(v)*div(v)*dx() elif norm_type.lower() == "hdiv0": M = div(v)*div(v)*dx() elif norm_type.lower() == "hcurl": M = inner(v, v)*dx() + inner(curl(v), curl(v))*dx() elif norm_type.lower() == "hcurl0": M = inner(curl(v), curl(v))*dx() else: cpp.dolfin_error("norms.py", "compute norm", "Unknown norm type (\"%s\") for functions" % str(norm_type)) else: cpp.dolfin_error("norms.py", "compute norm", "Unknown object type. Must be a vector or a function") # Get mesh if isinstance(v, Function) and mesh is None: mesh = v.function_space().mesh() # Assemble value r = assemble(M, mesh=mesh, form_compiler_parameters={"representation": "quadrature"}) # Check value if r < 0.0: cpp.dolfin_error("norms.py", "compute norm", "Square of norm is negative, might be a round-off error") elif r == 0.0: return 0.0 else: return sqrt(r) def errornorm(u, uh, norm_type="l2", degree_rise=3, mesh=None): """ Compute and return the error :math:`e = u - u_h` in the given norm. *Arguments* u, uh :py:class:`Functions ` norm_type Type of norm. The :math:`L^2` -norm is default. For other norms, see :py:func:`norm `. degree_rise The number of degrees above that of u_h used in the interpolation; i.e. the degree of piecewise polynomials used to approximate :math:`u` and :math:`u_h` will be the degree of :math:`u_h` + degree_raise. mesh Optional :py:class:`Mesh ` on which to compute the error norm. In simple cases, one may just define .. code-block:: python e = u - uh and evalute for example the square of the error in the :math:`L^2` -norm by .. code-block:: python assemble(e*e*dx(), mesh) However, this is not stable w.r.t. round-off errors considering that the form compiler may expand the expression above to:: e*e*dx() = u*u*dx() - 2*u*uh*dx() + uh*uh*dx() and this might get further expanded into thousands of terms for higher order elements. Thus, the error will be evaluated by adding a large number of terms which should sum up to something close to zero (if the error is small). This module computes the error by first interpolating both :math:`u` and :math:`u_h` to a common space (of high accuracy), then subtracting the two fields (which is easy since they are expressed in the same basis) and then evaluating the integral. """ # Check argument if not isinstance(u, cpp.GenericFunction): cpp.dolfin_error("norms.py", "compute error norm", "Expecting a Function or Expression for u") if not isinstance(uh, cpp.Function): cpp.dolfin_error("norms.py", "compute error norm", "Expecting a Function for uh") # Get mesh if isinstance(u, Function) and mesh is None: mesh = u.function_space().mesh() if isinstance(uh, Function) and mesh is None: mesh = uh.function_space().mesh() if mesh is None: cpp.dolfin_error("norms.py", "compute error norm", "Missing mesh") # Get rank if not u.value_rank() == uh.value_rank(): cpp.dolfin_error("norms.py", "compute error norm", "Value ranks don't match") rank = u.value_rank() # Check that uh is associated with a finite element if uh.ufl_element().degree() is None: cpp.dolfin_error("norms.py", "compute error norm", "Function uh must have a finite element") # Degree for interpolation space. Raise degree with respect to uh. degree = uh.ufl_element().degree() + degree_rise # Check degree of 'exact' solution u degree_u = u.ufl_element().degree() if degree_u is not None and degree_u < degree: cpp.warning("Degree of exact solution may be inadequate for accurate result in errornorm.") # Create function space if rank == 0: V = FunctionSpace(mesh, "Discontinuous Lagrange", degree) elif rank == 1: V = VectorFunctionSpace(mesh, "Discontinuous Lagrange", degree) else: cpp.dolfin_error("norms.py", "compute error norm", "Can't handle elements of rank %d" % rank) # Interpolate functions into finite element space pi_u = interpolate(u, V) pi_uh = interpolate(uh, V) # Compute the difference e = Function(V) e.assign(pi_u) e.vector().axpy(-1.0, pi_uh.vector()) # Compute norm return norm(e, norm_type=norm_type, mesh=mesh) dolfin-1.3.0/site-packages/dolfin/mesh/0000755000175000017500000000000012263014601017570 5ustar johannrjohannrdolfin-1.3.0/site-packages/dolfin/mesh/__init__.py0000644000175000017500000000056612263014601021710 0ustar johannrjohannr"""The mesh module of dolfin""" import meshes import ale import refinement from meshes import * from ale import * from refinement import * # NOTE: The automatic documentation system in DOLFIN requires to _not_ # NOTE: define classes or functions within this file. Use separate # NOTE: modules for that purpose. __all__ = meshes.__all__ + ale.__all__ + refinement.__all__ dolfin-1.3.0/site-packages/dolfin/mesh/boundarysubdomainfinder.py0000644000175000017500000001255512263014601025067 0ustar johannrjohannr# Copyright (C) 2008 Kent-Andre Mardal # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . import sys import getopt from dolfin import * import numpy import operator def create_maps(boundary_mesh): """ Create mappings between vertices and cells on the boundary mesh """ c2v = {} v2c = {} for cell in cells(boundary_mesh): for vertex in vertices(cell): v = vertex.index() c = cell.index() if c2v.has_key(c): c2v[c].append(v) else: c2v[c] = [v] if v2c.has_key(v): v2c[v].append(c) else: v2c[v] = [c] return v2c, c2v def find_subdomain(start_vertex, v2c, c2v): """ Find all cells connected with the start_vertex """ next = c2v[v2c[start_vertex][0]][1] done = False previous_vertex = start_vertex previous_cell = v2c[start_vertex][0] subdomain = {} while not done: c0, c1 = v2c[previous_vertex] if c0 == previous_cell: next_cell = c1 elif c1 == previous_cell: next_cell = c0 else: print "None of the vertices were the previous vertex ??" v0, v1 = c2v[next_cell] if v0 == previous_vertex: next_vertex = v1 elif v1 == previous_vertex: next_vertex = v0 else: print "None of the vertices were the previous vertex ??" if subdomain.has_key(next_cell): done = True else: subdomain[next_cell] = True previous_vertex = next_vertex previous_cell = next_cell return subdomain def find_new_cell_key(c2v, keys): """ Find new cell. """ done = False iter = c2v.keys().__iter__() while not done: key = iter.next() if key in keys: pass else: done = True return key def write_file(outfilename, mesh, subdomains): str = """ """ % mesh.numFacets() for key in subdomains.keys(): str += "\n " % (key, subdomains[key]) str += """ """ f = open(outfilename, 'w') f.write(str) f.close() def find_keys_on_one_subdomain(c2v, v2c, all_keys): try: flat_keys = [] if len(all_keys) > 0: flat_keys = reduce(operator.add, all_keys) new_cell_key = find_new_cell_key(c2v, flat_keys) vertex_key = c2v[new_cell_key][0] subdomain = find_subdomain(vertex_key, v2c, c2v) new_keys = subdomain.keys(); new_keys.sort() all_keys.append(new_keys) return all_keys except Exception, e: # print "done with finding the subdomains" pass def find_all_subdomains(ifilename, ofilename): mesh = Mesh(ifilename) if mesh.geometry().dim() != 2: print "This script does only work in 2D." print "(It should be possible to extend to 3D, though)" exit(2) boundary_mesh = BoundaryMesh(mesh) boundary_cell_map = boundary_mesh.data().meshFunction("cell map") v2c, c2v = create_maps(boundary_mesh) done = False keys = [] subdomains = {} all_keys = [] prev_keys = [] while not done: new_keys = find_keys_on_one_subdomain(c2v, v2c, prev_keys) if new_keys == None: done = True all_keys = prev_keys else: prev_keys = new_keys for i in range(0, mesh.numFacets()): subdomains[i] = len(all_keys) counter = 0 for keys in all_keys: for key in keys: subdomains[boundary_cell_map.array()[key]] = counter counter+=1 write_file(ofilename, mesh, subdomains) def usage(): "Display usage" print """\ Usage: dolfin-convert [OPTIONS] ... input.x output.y Options: -h display this help text and exit -i specify input file -o specify output file Alternatively, the following long options may be used: --help same as -h --input same as -i --output same as -o """ def main(argv): "Main function" # Get command-line arguments try: opts, args = getopt.getopt(argv, "hi:o:", ["help", "input=", "output="]) except getopt.GetoptError: usage() sys.exit(2) ifilename = None ofilename = None for opt, arg in opts: if opt in ("-i", "--infile"): ifilename = arg elif opt in ("-o", "--outfile"): ofilename = arg else: print "Option not recoginized" find_all_subdomains(ifilename, ofilename) if __name__ == '__main__': main(sys.argv[1:]) dolfin-1.3.0/site-packages/dolfin/mesh/refinement.py0000644000175000017500000000521712263014601022303 0ustar johannrjohannr"This module provides uniform and local mesh refinement." # Copyright (C) 2009 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2010-02-26 # Last changed: 2010-02-26 __all__ = ["refine"] # Import C++ interface import dolfin.cpp as cpp def refine(mesh, cell_markers=None, redistribute=True): """ Refine given mesh and return the refined mesh. *Arguments* mesh the :py:class:`Mesh ` to be refined. cell_markers an optional argument (a boolean :py:class:`MeshFunction ` over cells) may be given to specify which cells should be refined. If no cell markers are given, then the mesh is refined uniformly. redistribute an optional argument (boolean) may be given to set whether to redistribute the mesh across processes following refinement. The is relevant only when the mesh is distributed across processes. In serial the argument has no impact. Default it True. *Examples of usage* .. code-block:: python mesh = refine(mesh) To only refine cells with too large error, define a boolean MeshFunction over the mesh and mark the cells to be refined as True. .. code-block:: python cell_markers = CellFunction("bool", mesh) cell_markers.set_all(False) for cell in cells(mesh): # set cell_markers[cell] = True if the cell's error # indicator is greater than some criterion. mesh = refine(mesh, cell_markers) """ # This function is necessary to avoid copying in the wrapped # versions of the return-by-value refine functions in C++. # Create empty mesh refined_mesh = cpp.Mesh() # Call C++ refinement if cell_markers is None: cpp.refine(refined_mesh, mesh, redistribute) else: cpp.refine(refined_mesh, mesh, cell_markers, redistribute) return refined_mesh dolfin-1.3.0/site-packages/dolfin/mesh/ale.py0000644000175000017500000001435212263014601020710 0ustar johannrjohannr# Copyright (C) 2009-2011 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2009-02-12 # Last changed: 2012-09-28 __all__ = ["compute_vertex_map", "compute_edge_map", "init_parent_edge_indices"] from dolfin.cpp import Mesh, Vertex, error, edges, info from dolfin import cpp def compute_vertex_map(mesh0, mesh1): """ Compute map from vertices of mesh0 to vertices of mesh1. *Arguments* mesh0 a :py:class:`Mesh `. mesh1 a :py:class:`Mesh `. It is assumed that both meshes have a :py:class:`MeshFunction ` over the vertices named "parent_vertex_indices" which contain a mapping from the local vertices to a common parent vertex numbering. """ # Check arguments if not isinstance(mesh0, Mesh): raise TypeError, "expected 'Mesh' as argument" if not isinstance(mesh1, Mesh): raise TypeError, "expected 'Mesh' as argument" # Get parent vertex numbers vertices0 = mesh0.data().array("parent_vertex_indices", 0) vertices1 = mesh1.data().array("parent_vertex_indices", 0) # Check mappings if vertices0 is None or vertices1 is None: cpp.dolfin_error("ale.py", "compute vertex map", "Parent vertex indices are missing") # Compute parent-to-local mapping for mesh1 parent_to_local_mesh1 = {} for i in range(len(vertices1)): parent_to_local_mesh1[vertices1[i]] = i # Compute local-to-local mapping vertex_map = {} for i in range(vertices0.size): parent_vertex = vertices0[i] if parent_vertex in parent_to_local_mesh1: vertex_map[i] = parent_to_local_mesh1[parent_vertex] return vertex_map def compute_edge_map(mesh0, mesh1): """ Compute map from edges of mesh0 to vertices of mesh1. *Arguments* mesh0 a :py:class:`Mesh `. mesh1 a :py:class:`Mesh `. It is assumed that both meshes have a :py:class:`MeshFunction ` over the vertices named "parent_vertex_indices" which contain a mapping from the local vertices to a common parent vertex numbering. """ # Check arguments if not isinstance(mesh0, Mesh): raise TypeError, "expected 'Mesh' as argument" if not isinstance(mesh1, Mesh): raise TypeError, "expected 'Mesh' as argument" # Get parent vertex numbers vertices0 = mesh0.data().array("parent_vertex_indices", 0) vertices1 = mesh1.data().array("parent_vertex_indices", 0) # Check mappings if len(vertices0) == 0 or len(vertices1) == 0: cpp.dolfin_error("ale.py", "compute edge map", "Parent vertex indices are missing") # Initialize edges mesh0.init(1) mesh1.init(1) # Build parent to local map from vertex pair to local edge for mesh0 parent_to_local_mesh0 = {} for edge in edges(mesh0): v = [vertices0[int(i)] for i in edge.entities(0)] v.sort() parent_to_local_mesh0[tuple(v)] = edge.index() # Build parent to local map from vertex pair to local edge for mesh1 parent_to_local_mesh1 = {} for edge in edges(mesh1): v = [vertices1[int(i)] for i in edge.entities(0)] v.sort() parent_to_local_mesh1[tuple(v)] = edge.index() # Get common edges common_edges = set(parent_to_local_mesh0.iterkeys()).intersection(set(parent_to_local_mesh1.iterkeys())) # Compute map edge_map = {} for edge in common_edges: edge_map[parent_to_local_mesh0[edge]] = parent_to_local_mesh1[edge] return edge_map def init_parent_edge_indices(submesh, mesh): "Initialize data 'parent_edge_indices' for submesh." # Check arguments if not isinstance(submesh, Mesh): raise TypeError, "expected 'Mesh' as argument" if not isinstance(mesh, Mesh): raise TypeError, "expected 'Mesh' as argument" # Check if edge map has already been computed if not submesh.data().exists("parent_edge_indices", 1): info("Edge map 'parent_edge_indices' already computed, not computing again.") # Get parent vertex numbers parent_vertex_indices = submesh.data().array("parent_vertex_indices", 0) if parent_vertex_indices is None: cpp.dolfin_error("ale.py", "initialize parent edge indices", "Parent vertex indice are missing") # Make sure that we have edges for both meshes submesh.init(1) mesh.init(1) # Make sure we have vertex-edge connectivity for parent mesh mesh.init(0, 1) # Create the edge map parent_edge_indices = submesh.data().create_array("parent_edge_indices", 1) # Iterate over the edges and figure out their parent number for local_edge in edges(submesh): # Get parent indices for edge vertices v0, v1 = local_edge.entities(0) V0 = Vertex(mesh, parent_vertex_indices[int(v0)]) V1 = Vertex(mesh, parent_vertex_indices[int(v1)]) # Get outgoing edges from the two parent vertices edges0 = set(V0.entities(1)) edges1 = set(V1.entities(1)) # Check intersection common_edges = edges0.intersection(edges1) if not len(common_edges) == 1: cpp.dolfin_error("ale.py", "initialize parent edge indices", "Parent vertices do not share exactly one common edge") parent_edge_index = list(common_edges)[0] # Set value parent_edge_indices[local_edge.index()] = parent_edge_index dolfin-1.3.0/site-packages/dolfin/mesh/meshes.py0000644000175000017500000000613012263014601021426 0ustar johannrjohannr"This module provides a simple Python wrapper for the SWIG-generated Mesh class" # Copyright (C) 2012 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Marie E. Rognes (meg@simula.no) # # First added: 2012-01-12 # Last changed: 2013-03-11 __all__ = [] # Import SWIG-generated extension module (DOLFIN C++) import dolfin.cpp as cpp # Replacement constructor for Mesh class. We cannot create a Python # subclass of cpp.Mesh since then isinstance(UnitSquare, Mesh) would # not be true. def __init__(self, *args, **kwargs): """Create a mesh from a filename or a geometry. A mesh may be created from a given filename, which should contain mesh data stored in DOLFIN XML format: .. code-block:: python mesh = Mesh("mesh.xml") An empty mesh may be created as follows: .. code-block:: python mesh = Mesh() A copy of a mesh may be created as follows: .. code-block:: python mesh_copy = Mesh(mesh) A mesh may also be created from a CSG geometry and a resolution: .. code-block:: python mesh = Mesh(geometry, resolution) """ # Reuse C++ doc-string too __doc__ = cpp.Mesh.__doc__ # Initialize base class cpp.Mesh.__cppinit__(self, *args, **kwargs) # Change mesh constructor cpp.Mesh.__cppinit__ = cpp.Mesh.__init__ cpp.Mesh.__init__ = __init__ # Attach ipython notebook svg rendering function for 1D and 2D meshes def mesh2svg(mesh): c = mesh.cells() # TODO: Abort if c.shape[0] is too large? x = mesh.coordinates() d = x.shape[1] cellname = mesh.ufl_cell().cellname() assert (cellname == "triangle" and d == 2 and c.shape[1] == 3) mesh_origin = [x[:,k].min() for k in range(d)] x_min= [x[:,k].min() for k in range(d)] x_max= [x[:,k].max() for k in range(d)] mesh_width = x_max[0]-x_min[0] mesh_height = x_max[1]-x_min[1] display_width = 600.0 scale = float(display_width / mesh_width) polyline = '' polygons = [] nv = c.shape[1] p = [None]*(nv+1) for i in range(c.shape[0]): for j in range(nv): x0, x1 = x[c[i,j],:] x0 = x0 - x_min[0] x1 = x_max[1] - x1 p[j] = "%d,%d" % (int(scale*x0), int(scale*x1)) p[nv] = p[0] polygons.append(polyline % " ".join(p)) return '\n%s\n' % '\n'.join(polygons) cpp.Mesh._repr_svg_ = mesh2svg dolfin-1.3.0/site-packages/dolfin/deprecation.py0000644000175000017500000000226512263014601021510 0ustar johannrjohannr# Copyright (C) 2012 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2012-09-29 # Last changed: 2012-09-29 import dolfin.cpp as cpp #--- Deprecation of down_cast --- def _down_cast(self): cpp.warning("foo.down_cast() is deprecated, please use as_backend_type(foo).") return cpp.as_backend_type(self) cpp.Matrix.down_cast = _down_cast cpp.Vector.down_cast = _down_cast def down_cast(foo): cpp.warning("down_cast(foo) is deprecated, please use as_backend_type(foo).") return cpp.as_backend_type(foo) #--- Deprecation of ... etc. --- dolfin-1.3.0/AUTHORS0000644000175000017500000001046512263014601013717 0ustar johannrjohannrAuthors/contributors in alphabetical order: Ido Akkerman (-) Martin Sandve Alnæs (C) Fredrik Bengzon (-) Jan Blechta (C) Rolv Erlend Bredesen (C) Jed Brown (C) Solveig Bruvoll (C) Niklas Ericsson (-) Patrick Farrell (C) Georgios Foufas (C) Joachim B Haga (C) Johan Hake (C) Jack S. Hale (C) Rasmus Hemph (-) David Heintz (-) Johan Hoffman (C) Par Ingelstrom (-) Anders E. Johansen (C) Johan Jansson (C) Niclas Jansson (C) Alexander Jarosch (C) Kristen Kaasbjerg (C) Benjamin Kehlet (C) Arve Knudsen (C) Karin Kraft (-) Aleksandra Krusper (-) Evan Lezar (C) Dag Lindbo (C) Glenn Terje Lines (C) Anders Logg (C) Nuno Lopes (C) Kent-Andre Mardal (C) Andreas Mark (-) Andre Massing (C) Lawrence Mitchell (C) Marco Morandini (C) Mikael Mortensen (C) Corrado Maurini (C) Pablo De Napoli (-) Harish Narayanan (C) Andreas Nilsson (-) Minh Do-Quang (-) Chris Richardson (!) Johannes Ring (C) Marie E. Rognes (C) John Rudge (-) Bartosz Sawicki (C) Nico Schlömer (C) Kristoffer Selim (C) Angelo Simone (C) Ola Skavhaug (C) Thomas Svedberg (-) Erik Svensson (C) Harald Svensson (-) Andy Terrel (C) Jim Tilander (C) Fredrik Valdmanis (C) Magnus Vikstrøm (C) Walter Villanueva (-) Shawn Walker (C) Garth N. Wells (C) Ilmar Wilbers (C) Cian Wilson (C) Ã…smund ØdegÃ¥rd (C) Kristian Ølgaard (C) (C) = copyright form signed (!) = missing copyright form! (-) = minor change, copyright form not signed Missing credits? Tell us and we will fix it. Send an email to fenics@fenicsproject.org dolfin-1.3.0/scripts/0000755000175000017500000000000012263014601014330 5ustar johannrjohannrdolfin-1.3.0/scripts/dolfin-plot/0000755000175000017500000000000012263014601016557 5ustar johannrjohannrdolfin-1.3.0/scripts/dolfin-plot/dolfin-plot0000755000175000017500000000716212263014601020742 0ustar johannrjohannr#!/usr/bin/env python "Script for simple command-line plotting." # Copyright (C) 2010 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Marie E. Rognes, 2010 # # First added: 2010-12-08 # Last changed: 2010-12-22 import sys # Try importing DOLFIN try: from dolfin import * except: print """\ Unable to import DOLFIN. The DOLFIN Python module is required to run this script. Check that DOLFIN is in your PYTHONPATH.""" sys.exit(1) def usage(): "Print usage of this script." # Build list of supported elements element_list = "" for e in supported_elements_for_plotting: if e in supported_elements: element_list += (" %s\n" % e) else: element_list += (" %s (*)\n" % e) print """\ Usage: 1. dolfin-plot where is a mesh stored in DOLFIN XML format with suffix .xml or .xml.gz. 2. dolfin-plot [degree] [rotate=1/0] where is the name of a finite element family, is the domain type ('triangle' or 'tetrahedron'), and is an optional degree for elements that support variable degree. Examples: dolfin-plot mesh.xml dolfin-plot Lagrange triangle 3 dolfin-plot BDM tetrahedron 5 dolfin-plot Hermite triangle List of supported element families: %s A (*) indicates that the element is not supported by DOLFIN/FFC, but the element may still be plotted. """ % element_list # Check command-line arguments if len(sys.argv) < 2: usage() sys.exit(1) # Check for help text if "-h" in sys.argv[1:] or "--help" in sys.argv[1:]: usage() sys.exit(0) # Extract arguments and options args = [arg for arg in sys.argv[1:] if not "=" in arg] options = dict([arg.split("=") for arg in sys.argv[1:] if "=" in arg]) # Check for plotting of mesh if len(args) == 1: # Read mesh print "Reading mesh from file '%s'." % args[0] try: mesh = Mesh(args[0]) except: print "Unable to read mesh from file." sys.exit(1) # Plot mesh print "Plotting mesh." plot(mesh, title="Mesh", interactive=True) sys.exit(0) # Check for plotting of element if len(args) in (2, 3, 4): # Get family and domain family, domain = args[:2] # Get degree if len(args) == 2: degree = None else: degree = int(args[2]) # Create element print "Creating finite element." if len(args) == 3 or len(args) == 2: element = FiniteElement(family, domain, degree) elif len(args) == 4: assert family == "P Lambda" or family == "P- Lambda" form_degree = int(args[3]) element = FiniteElement(family, domain, degree, form_degree) else: pass # Rotate by default in 3D rotate = 1 if str(domain) == "tetrahedron" else 0 # Check for rotate option if "rotate" in options: rotate = int(options["rotate"]) # Plot element print "Plotting finite element." plot(element, rotate=rotate) sys.exit(0) # Catch all usage() sys.exit(1) dolfin-1.3.0/scripts/dolfin-plot/plot_elements.sh0000755000175000017500000000142712263014601021774 0ustar johannrjohannr#!/bin/sh # # This script plots a bunch of rotating elements. # # Anders Logg, 2010-12-08 echo "Plotting elements..." dolfin-plot Argyris triangle 5 rotate=1 & dolfin-plot Arnold-Winther triangle rotate=1 & dolfin-plot Brezzi-Douglas-Marini tetrahedron 3 rotate=1 & dolfin-plot Crouzeix-Raviart triangle 1 rotate=1 & dolfin-plot Hermite triangle rotate=1 & dolfin-plot Hermite tetrahedron rotate=1 & dolfin-plot Lagrange tetrahedron 5 rotate=1 & dolfin-plot Mardal-Tai-Winther triangle rotate=1 & dolfin-plot Morley triangle rotate=1 & dolfin-plot N1curl tetrahedron 5 rotate=1 & dolfin-plot Raviart-Thomas tetrahedron 1 rotate=1 & dolfin-1.3.0/scripts/dolfin-plot/plot_book_elements.sh0000755000175000017500000000664212263014601023012 0ustar johannrjohannr#!/bin/sh # # This script plots a bunch of elements. Images produced by this # script are used in the FEniCS book chapter "Common and unusual # finite elements" by Kirby/Logg/Rognes/Terrel. # # Anders Logg, 2010-12-08 ROTATE=0 dolfin-plot Argyris triangle 5 rotate=$ROTATE dolfin-plot Arnold-Winther triangle rotate=$ROTATE dolfin-plot Brezzi-Douglas-Marini triangle 1 rotate=$ROTATE dolfin-plot Brezzi-Douglas-Marini triangle 2 rotate=$ROTATE dolfin-plot Brezzi-Douglas-Marini triangle 3 rotate=$ROTATE dolfin-plot Brezzi-Douglas-Marini tetrahedron 1 rotate=$ROTATE dolfin-plot Brezzi-Douglas-Marini tetrahedron 2 rotate=$ROTATE dolfin-plot Brezzi-Douglas-Marini tetrahedron 3 rotate=$ROTATE dolfin-plot Crouzeix-Raviart triangle 1 rotate=$ROTATE dolfin-plot Crouzeix-Raviart tetrahedron 1 rotate=$ROTATE dolfin-plot DG triangle 0 rotate=$ROTATE dolfin-plot DG triangle 1 rotate=$ROTATE dolfin-plot DG triangle 2 rotate=$ROTATE dolfin-plot DG triangle 3 rotate=$ROTATE dolfin-plot DG tetrahedron 0 rotate=$ROTATE dolfin-plot DG tetrahedron 1 rotate=$ROTATE dolfin-plot DG tetrahedron 2 rotate=$ROTATE dolfin-plot DG tetrahedron 3 rotate=$ROTATE dolfin-plot Hermite triangle rotate=$ROTATE dolfin-plot Hermite tetrahedron rotate=$ROTATE dolfin-plot Lagrange triangle 1 rotate=$ROTATE dolfin-plot Lagrange triangle 2 rotate=$ROTATE dolfin-plot Lagrange triangle 3 rotate=$ROTATE dolfin-plot Lagrange triangle 4 rotate=$ROTATE dolfin-plot Lagrange triangle 5 rotate=$ROTATE dolfin-plot Lagrange triangle 6 rotate=$ROTATE dolfin-plot Lagrange tetrahedron 1 rotate=$ROTATE dolfin-plot Lagrange tetrahedron 2 rotate=$ROTATE dolfin-plot Lagrange tetrahedron 3 rotate=$ROTATE dolfin-plot Lagrange tetrahedron 4 rotate=$ROTATE dolfin-plot Lagrange tetrahedron 5 rotate=$ROTATE dolfin-plot Lagrange tetrahedron 6 rotate=$ROTATE dolfin-plot Mardal-Tai-Winther triangle rotate=$ROTATE dolfin-plot Morley triangle rotate=$ROTATE dolfin-plot N1curl triangle 1 rotate=$ROTATE dolfin-plot N1curl triangle 2 rotate=$ROTATE dolfin-plot N1curl triangle 3 rotate=$ROTATE dolfin-plot N1curl tetrahedron 1 rotate=$ROTATE dolfin-plot N1curl tetrahedron 2 rotate=$ROTATE dolfin-plot N1curl tetrahedron 3 rotate=$ROTATE dolfin-plot N2curl triangle 1 rotate=$ROTATE dolfin-plot N2curl triangle 2 rotate=$ROTATE dolfin-plot N2curl triangle 3 rotate=$ROTATE dolfin-plot N2curl tetrahedron 1 rotate=$ROTATE dolfin-plot Raviart-Thomas triangle 1 rotate=$ROTATE dolfin-plot Raviart-Thomas triangle 2 rotate=$ROTATE dolfin-plot Raviart-Thomas triangle 3 rotate=$ROTATE dolfin-plot Raviart-Thomas tetrahedron 1 rotate=$ROTATE dolfin-plot Raviart-Thomas tetrahedron 2 rotate=$ROTATE dolfin-plot Raviart-Thomas tetrahedron 3 rotate=$ROTATE dolfin-1.3.0/scripts/dolfin-plot/mesh.xml.gz0000644000175000017500000005063612263014601020666 0ustar johannrjohannr‹jÁJQmesh.xml•}Û²,·ì»¿B¡÷±Š7œ°Ú[™ ™cV£Œ/@îoeÚS¦Ø˜3düãÆ[ƒLóÚ{L‡ÈH©L,Û‘Kšoe?§Õœö¶gB&#uÈ”VÒû=ø9¾[#¿ßÒ”(tÜÓÒz¯õ½¡ôÖ+ÎF9ÄëAJž£c‡ÊtEx¯ ªgoÔ´ú_aBµ¡ Ù¿Üðzµ[KâõŒB­v©åz¤÷ ”:_oŒF¡žGß}(©÷‚½µ£¶$ö QJŸ aþ¦ã½²æƒ‡â˜G…omBé«“ds¶÷+ž©m¶-êÙÉ{-Êå«·sjSUªÞQ*¯›ëÞû½Íí«SÛ-þÞpeZ‡y´ï5õö^!rçqª·©g7Câ›h r-¿éèUØ®L Q{Žo:r²÷–¨ÐDŒcm „üïŸTh"ú´„͵1¦°_%|ÅôIæ»Ûß+y)_}“ÙL]¼½E¥ÕM¡ö•}uc!ÖξÚZk¥T± ô³M=[†I<‰ÂíäÀµ™Šp³´ÃC€BKdãx¯x•öÁ·2cZëÇñþíjújéZí]¦š¿RñV­6!±Cw£Ç×+*t 6Ô6 AÍ,×÷¯Rjtg~æU\S©e¦Ú¸I} Qiêœ'ÓïRâ“Æ—Gé(*T«ó«CÛÞok Ó°ìèPZ£.L_ﺷ­ ºÐw¯FOëGB¼tÁ×÷è˜+*x+eh§ù«Îñ~ᔡ ÷­X¸:jÍâí  ¾Ô#"?{"`….øbqéj/Ê'5¨‚YO™B–¦ÐŸUpYc¨–j¡1ÔÁ¦›¼šëÝ{!¨ƒûæFçì3eñ$¨CO‰.©LsÞ.+”…›Tz‘®Azn)bÖZêûõ6(C/sCêVúx¿ÞeèÕ#I¾Ü: bú—BÙ,Ö{ðõzîÌ,ÒH"¤¶ùåÚ%׎÷BýàΣr!Ò¬]AÌÍw²½×ëPóÃ]lóõ ÏßQ­o>‰Ö¡ÏJÅsG!ÝNëÐVâB¡á*þ^ ÑÜ9óåtþ×?ôácOßG¶}œ~v¼ÿÙsÏo~6ŽÓÏÞ?t;(9—qZ¹÷§oÐèûZÕq_þ~áFýsâ|¸{/Ã]uõNq&|ßÛâÁmõ¤¢†þËÕ¼b0««*±+êIŒFš%„‘T -'f™kæÀxÐÃA†vnN<.~:0ôóZI³ ¡ÈÝÝU¾/Ä{u˜LmFh—=fê0™0úÛÑû¹K~l2_ô€«Ä=ÄyŒ=¼ ªV™ÌÎÈ׿é^‘QÌ“ìÈ|¡t“¹ùP¦×ÜÄËQê,Ì´=ž"ÓNµÁƒšÚàk2ª¡ yæg!hO¦Ð#?JLâZ }9NB¢’»3”ÒQCªÞÐ’‰ýMG`nq¸³žï5)¡†Å“­&’ÓtÐHxFÊ•÷ ÊL­|˜‰Y#{îyŠä>4®—™°Ç”b OX£¯5sWI¥Ý(%²”M€§)ÀÆ1gŠôGYÌ`ãÌˤ t•o›SŠä±¦p^Q™w"Üègbld‡+†Â]¬dêTÊ!¥ ­§––{Ê&—iƒGL;Ý]w¹[‘7¸]¦”DZ"@J9"Å‘rX ?”b :úgUê“[(‰B3sðØã`¨Ø<ÖKHØñs¤íï7ÄæÈfiúeÿ¤Éê—ãœ&«ÓÑ>%ÔêÄÙñé—â=»· €Ìî­ €²{ xìÞ*»·´@Âî­7á¯VÜ1kX·*ÙÿjeŽˆ®=ÑSÏâù²Ƚ‡Bµˆõ!–üïg%Çãø, ,‰˜ Uæ¹®>ÄÎóÀð˜F©>T)ÇqÔ™FyóPáA°: zá9ÂÁhíXˆ¢Ð €dþÃç\Xˆ8 ƒ~Ò÷B¡Ù•ZAó\×Ⱥ8ñ@|1´RK Ñ5KíA´ºj|ÁðÜ_=‹zQ¹Å5C…ÉÓü0‘Oâ§¥*l‚`š•…yRª)½ ˜6>È"³¯¦JY+•à‰e¢L‘ˆ§ù7­jËÓ Ö¬Ž>µ´ˆcxAO$`œˆ¨e·ó{5ül 02Sód¼ Oiî÷Bƒ¦³²N˜ŽdgNÕ\{¢‘VsÅ®LPm±ár¼_B-2A5÷X…já)aQ\‚j«àÕ™µ$ꟙ Z¶\6«·¤ø?ÄÔ+‹)KHlV&¦æ!±Z¿”IxÇLLÍE'oo¹9Xebjnrß°¶”Ä&gbj•ºÇ\º‰ >S[xЈšfk‡Xxbj½åd21¯Yæ&÷q¨jz&¨vx`øXII ´9P57}ÄÇ|CµË)ðÖ’ àM;Š”"ÞZŽU·‹ÂÒä@Õ–©!M uAbÈÕŠ¹…_ÍS>Šªq“–Ð<ä™LPÍãJž;£"bÕjÊ)@Ú¤(N9‡fÔ Y1¡IÎÁÔÉ}rÚ«"Tk5%žwGŠÁ–#ÆpO@”¥5ÅN$¦Ö‰8˜bòQó“ßéJl!T¾U¨lIÔ¡sPùÊQŒ«7Æ!·7È[­êzsë!^°œ0øL¢æâ Œ;—ÀàG Âï*G*ªæ¹|H¡o¯ BäZqŒ%vÿêYDtV-6êåY2PÉè3¼fduî!•Q„Ñ÷«plßKA5‡yòm QÍdõMW'®…™\ ¦$‹¥6yì­T Gâ{ Řn:Dhœ ãÍÃwÀ|ç¦8ÃéÕžÉ&q‡PEÀ• ïù¦&÷"&"Ö\#Ș)(SËþ*)²Áëéð{˜#í4!@ßàÛµ°{¡ð„Çìƒå¾d]Qð3¡AgæÁÄ3%Ï¢„u£÷Dóžª+”bBÓhôžÓi5$טðát[JÇﱸ~†ç‚|ÖR e4+zzpЯŽÜ»`BeBŒÝ­©P¾Myþ€=Ä–¥¼DWu¿Phz+„§£00©«¤¤˜˜´Y¹Óm°ŠûIøkýÁ9Ù|µ·Rdü-†npÝF)êü“ò·3@“Ú¤ƒŒ¥Üãºú„3Vyä”T—y)å°¡¾ÃEÀ}™Ì¿<Üá3;n+™R¤þ¹Þ‘I\‹- ë½™ žŒ0ò¬´ÊgA7ÜaV‚„mLÑä’-’V«¬H®s&84™Ø§uÛ™¿·¦Ø9èþ®ÌYÛœ*h úßJ賺_P{LìÓ­Ø ×<UÏ"–áÑI‹ðdTÁqÍÄ>=Hhd"Ï4D“Oà§?Œyäì] c9ÐÏ” O0² 4zä¬%‘=âÿwpK&úéS#¸Ø·X,!ÑϹ†suÓ/ØÒ9„žÛÒ@yÐ!£ä€?ÝOSxÕ“…5ÃS zä¥N*Ü ôÓUü8e&]Ùx¢ŸŸ˜p‹E¨ø Z?¨»–$¨c9x„î)ä‡K5A$L‰A¼e‰éf¢ŸÕ=k gr¨à„àgõóB´Å SX§ Ž`ºȬ"ŸõX‰ ´iΪò\Ÿà–@[¬Éœšð§gÔ3¢Ýcªˆ&ø„%µH ÝGˆ"F&þYý´Ét”28…s|W®Ÿø§ïV's̵}ªóHÔßè±u»µBIÑEÔÝvÀ:ùÈ"º+Ä?]—™äE2Œ>KOÚ»!†ºýL+ÆúÍ|(Òc!üé!Vbq˺l #úÙ—®F {4Qæ+GTKwù†DA <0á6‡ZŒ@A=ˆäQ¯Ây! êÑo2¼g­òY4xñ ¬r‹‰M& ê^p|CLý qPWÞè>uÃÓEVSZ3шºû«rÆÑÓä‡r©õ[)â ý˜•Õ÷y2D ´?ªüOå>Y…åÑûì)J ³VÑÎQ,ЮÙ*/Z‡Zyâ þw?ø«Ï`š(ìâ þz§ 7 ÃVoÃtŽJWi‹R#„¢·%‡‡äMyJ ~&õṑÐ] ~´b^ͬ£*çEt•ލñ«"ðÂÒ#w=£¡æ;'†%â nž;£W[•?%E«áŠjxŠþT¢z¶ÌˆÒãð îOHrvc%x'…8¨µV~ø“ÚãFÃíz ÷šòø-§>[ … u[ßr’,)¤ hmþU´ºyõ• )êÅh1ìf1T°vâ€vùQ™kôQû‹iÕ£bzÆ vY±¯J…NÐý×ÝU3©Åˆž§cD7Ü‘‹r\ÁmÇ)J¶EãRD»VÃ#Vn¦ÜÝ,tÙª°©©<ÑQ=;ïb ¦[â LFyÌüÑ,ÑSÝK`zÎ=жÇt$Aª„BëH\!«š5Æ?º#g7ÍURD5Ž4s M†ò-Ø]«¯’€wQÀp%êgòTÔ8Ô¨óJ$t©-”ã,&‘T;×:¹‹~&ÐÉJ$tMŠ)?}ƒRÔ Ï-cÂgZuM!\ázļü¶8¶BŠì®lƒˆ¼+ru×Hh©¼;@Á·®1 rÌ“å]¾A}Ûá­&Â!žÿ›J؈…®Áz\»]B'(Ô»(B§ª^0 Ðrº  ªW ¡³e’OGöó#, ‘ÐÅJŽü¿ 5° ÍkRÏIVÓ+‘ÐÞ,HaÙS­IDŸ³á܈.°„ȉ‡³YäN­Ffr$"]®0U9®Z£vêÎDø¨Ç&Ä%ŠœXØ¢%¾¦@W®¡\$Ðáç6ZHŽ"_èlòzA±Ã@]+õ4†º@©ÔÑ{·¤SЄÐÕÞçqãêY1Â-Eu^cú„"ZÖ¬lFÈóQˆ~+=ñ¶úG™.TÕ1Ùˆ€®Ù†‘‰Õ…Ó‚ Ú|cƒ\¬ï"êqn&zçoV‘dPA—ygdGxu 4Íhñ×­|jÑ¿ZÏ‚°2ª¨€¶à‚z¸e®ÜTÿS#Z{Ê4…c1jÄáôˆÉ6–¢ÿù¨1ÎÁ‰ŠÓˆúî ©è½«êB‹i ¥@̆ú* ë³ îú *Ïß#iõžßUÕ=(h]ýc uÓP³mZ´Ä¤Îá'F.|´¤<£ÆeŠ5ÑNTÐÜgsÝ”¿FÔcã‘ô¶¨¼Ÿ¨Ç‘1uoE ¢¬Óˆ€ÖÇ'&4Y¡w¨-}glâfGEOD@“!ZºÇã.×÷R5 TôX7ùYÑ‘TŒÛU§¼TŽøg?ja £U僂 Z}å‰øÏ©W5“3®ë9¿ô\Ä?Wë3AÓžL­€?×Õ„L‚7[¼ áÏnG˜ê±þ$„¨îÞ¢Âu]EºD?û©kgò«‚<>{ÜÜpȨ?ÐÏÕÄ xYÝqÐâŽÜ#_÷õ ¢z›'”+¨Ån€“RÜ`‚ºÿM÷ת ‚šŽ˜¸é^X ;¾¬³º;Nê–¹#2Ö`g?f_ º’ÅÇäɪù¡‰þÙN³KV{°¸mðg]Õí€ ‡šîg„?mõ¤¸¹iqËŽë‡u妈Ï4ÐY‡®y'"ಸdgÌDžÚêJR_C{ôù¹Ž4u_aÐ@Wl\rØÕ½qFð³¯T)Ê~z„bøéÚÄxkYAëÁÏ…¦3Ê3'ÑbD?{n9nø;¬‰˜ÕNñ3KÌTõ€XtÄû+žš,²r%AÏC›bßÛiè¬ó±ÁOsgŒ¶8†bßÑOO¼¢)˵D5eY4Ä/¤šÈîdÕ•ž'h®ÂUy±°å“fœ.ÏžÖ…ù4¢Ÿ¶f+ŸõC-êïFô³1h>Wú,f¬®û¼Ž¦ùZlÑüìk~Q©Ÿw¶Y ØY@ð$Ðc Ýí®H·,H åÌÔWžÕˆ~ú²G9rÍKT*ÐÏRw÷ÌD`H ñ%¸>¨ËùFôÓ3ŒqPS·‚ÑÏâJÈ|°Œ¦%-.ú¥Ä­½© Õþåx³*`h~Ê]v)ê:_#Ú쉜$˜;8h;ýŽÇõõï¤ztÄ{òqM2u¿YŽø2#&/‹Îüþ(w"¡®¼…Jé9 €¢ºFD»6a6úq2™­£¾HCDyP¨ïO˜y÷»UÑ~œ\JæöÚÔMQ=._sk¨¦Æoô¸)…¤¯IøïW'êúj§’úÈ‚tÚƒšŽS*º)} ¨¯'VÇ¡nèêq߸€p^ͧï¥"A9õÞ•þšßKÑjxL2"»nM^Pèi¢µÛ\ÅdèBÇ‚ãù~­dQ§é„–Gã,ô=É׋i­0Òèò&†—»¦2=è m ôÈ@­æQ¯î' ´ÖáT—•õ¸É=\Ô‘ò‚»…TtÃ[À§nsÕ] =nFš-ŸÆ¿f5%¹Ú{¡)µ¨V®íðÅNý SÞíDBݳƕE}]ü"ÎVÜ7žÊìçÊ®Hú©ÞjÌÝ{4s¿— h;†®Ç"gè„¶\"Z}wbáO·#YŒõ<`ˆÊn'êùlZD9³õw,[­™GÅïåTpq#]Y®FÀ]9ŸºT² ªU$´Öþ¸6åÅ£¾Õivöh†/¹õ³ëÍK@¨‡„cI·4M ]@hë_ôv#©$ZÆ3H×­j1jhF=ñ„Ö ³BŸb.h·Ü¢ò—Õ½½Ú5k˜µ¦º+;qPWºÎŸ'Oª¬Öë9Ê °îKQ”-¬‘œ”¸oc]Î'@¼½ðe4z®¼®,Ï ô4 Æ.Ucìq·úÃÂÝZcŒ…ÃjôÂ.$²Œ0èšT@ÈPW¾u «!’§Ôš ¹ƒ6ßä¸`7­Æ)!&£æî%™›ô€AGõd e4~b‚¶vê°Zóº õ‡–ÐOúöëóÏúöóÏ¿~÷ëOÿûíÇïÓË¿ýÿé_ùËÏßð÷».üçññ_ÉŸæöŸùã^Þʤ™ô!³ í’Y³¾ÞËä™ÇÒóÖ¼û'•©ü|Rÿ±Oëõ*S?½ÝcÙC()¡ö!4>„æó“Ê' íUÆ>dÊó寇LûÔþ*Ó??çCd]rø^d|ˆ´§>gªÇÌç<·ueàJj[ÏR+³ØzjÃ(ØÙü\ˆ¤Þ0=bŠ%ö¨p-±ÏÍб§F¤çÓ&–ðS4q‘‚N<iv¼¢ü²öùYìê±öE>ì©ó¹ŒâÎý–¥þIXÓCªÉ£øÔŽÇ®=ƒº·OÔŠ‹d>OI/xZW‡øø¼"|š^‘üT‘LO6ò†ÜSG öpW”ŽdX èñìÊd(I‡Øóiu¨ÈO-É\l\’KiŸÅ g´ª\ÄžZò|Çùü²<ä:BIžfçÑšúø².ŸõT’Âuı9”n•§’”3‚—œjA ¼Jªò£Ñòñ¸¬Þ²@I _w<•krO-)Ü·µTÇ´<µ¤<ßòq¿ïÇ×ÉE-I r䤄“ixË ×$³Þƒ2·¶à©'• @LîÀSO*>m·Oé§Ïb5oI=Õ¤>Myå+J©§’T˜ò9ð0µk:“°iC> :ò\Çð™Õp{êHÅ^'ª–:Ý*ò\Gøß2”‘¬ÇæÅÚi*Tq\„JòŸ*Òèá¤mmOiЬô\ÈœÕÓL , ‚ü´†ˆ$cù÷yŠeD©EºûV_2Ãüh1èÈÀÓð’r·¼ 4²Ã¶eZÿ,–Ó–ÜÍKÓª]b{*I¦F6"½›AIh‘a†Šîì©$§ û6”I°üY¬`šÔd{j ÂÝGì±$Um·=µÄž !Ë0ýmO-1ø6l\—ñ–Ùçok{ŸÖ?Ÿ›†å—ÇÆžJÒ±ÙåùŠi(¯mð5OëÏõ!I?^Vÿ)¥s ‰d@"×£?5Äž«ø(,¾ú²^>‹= Ý‡XSV«×ÏŸ/Y•‹êˆG>¤ðŠ:IîOý0Æ0¬2¬è°"ŒìÚs¯M¯ÈSE )"­ˆÒý>?¿de²'}ö`ò[p°‘5H´aÀ×Ôg*•ÚsßÊ¡öm0lÅbÒm™¹ ¨ÉÓ²t“‘Ì€!Á[ff)ÊþŒ§šÌ§Rf(¥Æ†}~š!’±®lÂx*ÊsEñùŠ0$€°°‡|’ç âõÔVÏ§Š D#±D¾fú,½º‘`Fþ<¢u(µšÈ}‘¢?úÏ?:£ó©aEC#_²}’Џ_ „Ã(W©Ô|êÆÄæ§íÑÎD,ò\ü‰pIêï<¼hì<ë yœibaÏů2ðùˆ½O‘OÁò7©ÄÀÆñ„.Ò³Úöá3$htÀˆ|ö¦aߣ~~M„¬woÙ>¿%4¹Wý4D# Þf+ÿ@)N)sA)ÔGúÂp¸s–¨Ý„A,d–ÀV${•§LPÚŠ´¡2Ùk´5ÛÍ™yƒ~ðV»%5L’¹"*OÖñÊ~%€®(¤ð8Zî©-xOT%nPh ®ˆºR~Zg“9GîÊ ¾ ÖpWCŽ ¨éýð oðhÿÓ ûS]:ŸÃ"Mtò:žŸ‡$GLJ Èëxn^cš/c¨DèøLB5 Þ -OѳIP-|Åjâóª¬=|%BÉÚ’Þ=(KzÙuÅ%°íë5‚&RÉÀBÉ e“A‹x;!‘î2•HD`‰¦-Óë6Ý„­Î‡´Õa± Ö¬IÈ7…% WôL/Íg…aÖ©õ(lUŸûžô¾‡M„Ðß®ë^•à|y än(öã÷éã÷Ìr#*³¨6PÜÜtA:7Èý|›üU:C””ž³I‡[icàYà;óÍac˜à=w?Él!—ýxÎã% œÍâ¨_éâ\6;QVì~—j p6yÀvý< ³ Z+C*€| ñY@Ö©PktA––ZCDR£¥Á«Fî& `ÚÄø!ýbU(A˜بǭ 6Jª  ZÅŒ²[Õ‘(ÀZêiÝÓSµÀ”Àá,© xíÇÿHÀ2æ[È™'a ˜a’'˜m†Üí—ˆ\h›PH@ ŠÌŠ`ÛÄ$¤ASu`à6±š@XT! [æ ÉÙç+⯂ÐcÄ Ö‡Vqâ·®ñó7A^œµ—2ê Î0ŠÜ¤¦öãeQ3h ŤÁ’Ëm̶·ÿ(öß°ÿ·O@s¹ùØÛÆN7…í¨€b²Ü"ºpŒÛa7‚P„™ qfÖá p]¾jÆá¸‰Ú;-=¨ÆOÀvikfš'-Ñ]*9¬qÑá]âë6Në*ñ]àÉä…h<9 jŽrË¢¡@¼dÙTùôéÔÔ"‹i3hrž 0ÏÒè¥éȈŒï¶šƒó˜‘( 'འ0qAîöyfÀE ïñ²7AP_ú¸œö,_(Œ£.Œ¥ù┃K£_“ï í&Ÿ q°kªG ÀÜŒÇͨ!ŽÜþI½™°ªðqÚTfˆ*_–ÅÞD 8ò„ã‚™Pp"zI”d“ fÒ€7-’ƒ“ä¢jêNÌÄ”™øe@Á'Ö¶P–½2Àà@ÀP¯‘àD<Ÿ6jNÔb(/AvŒþ>T•X~e“€[܉'¢ü"-bœág ÒÚªù€„Ó’y쥆Æ‘@²¨‰$9a É¥µCÌäà’§üDg‹™4\Œjxe-2 áÀ® g½ù‰ øë7YzÈdãNp±P­2±ÉäãBß §j†,‘œÃJ¿¦‘J ßuÔšÔp’rIAB‚¢a´\À®‰û(5‡èp„øÆAæRH4ðYˆ3Y†|U½8ІÀP«L‰3)ºÒJ¡ <ÆÀˆ#–[±tJœIDYNb0(q»®íÕ&Ž01y¢ŒÁµ‰#LŒ8£ j2²É€‰Ÿg°¡¦½l~a©Y¦n 1<ÈrËÎ…YÔsXç×Û…!¾ÞL `Ä (ä’µÉyOp¼~#š¥oôàp<‘‹#Wàð ~<ñ£õþ,5y€åÉŸùõy™ ­~^yäÉHºô©7Ó~ãÛÛ•¹¤{‚q N«Þ ÄÓ¤óç«v’"œe"=9ô«>ÕŽ”C»  á@=ºs$ƒ¥é²4$1ÈR`Ã'XŠ=úú‰d“£ÿˆ=\,„‡Éðˆ²™ZÓr0¬!HDE•­«À‡3l8A¢"±ž„8HÛ{qDL2YaÊ'ÃÓŒ˜œ’ÒˆÙ)wS8 4†‚´¦ÊÔ½$–I(“ZHœ.Ì/ÍB˜*G´WWø `âÌÅaKF~0qŹÂ5št…01KŒ¤%rSÇy:$³½&.ÐœŠžÑ~óìÄâ°Ä«»Ï”_p‡ÛŠ[Lœ&Ñ"Óú‰°9|U@¨U¢h%Ssøª4Çr&†ûâ ~Uúªù²8º¨\H#ÌP ˆHЧ&†ÿ¯‰º*50ñGGùrrô7‚ ¡"_ÃÏ… `âN)·C³Ã ç9ÌKJ¬}pâÌê0ˆ,º¬\€g”¦¢;´H+œ8ê=•ÞJ ¶ÁÂ.- ‰ò‰Òx:ôâPsèæP?Õ™x1"¹À¨J>J^œAd©ì†ÒVŽx1”50ãKÙPN¡©ÄŒøÍV#LmÔ› ..«ñ•˜ñ¥÷JWã+IÆ—2~Õ†ƒ4ãK`¹yUjö‘Õø›U¯OÜ+Tbư81pCÒ1*§Q°÷ ‰“cv+1c&~Z)ÑÍJ̘æßdªY‰³2F\\â7˜qbÍ02¯ÄŒY4@®yí˜1§Êlâp•ó(€üpä‚&¹T#€CX„Mòt3nôUèÝЖ˜1,/u‘¸O Äǘó%õ’j|Á¨uÏO½L£Ø¬oV"Æ ‰Éúfå4 xŽÍ N%Û˜œ½¾ÄÊiך‘¬ÅW"Æ•*Nï(ˆqt °Í@¸k †©‚¦êI •ˆq°ªHªÑãþ_cœÍ>ïJÂ1RœõíMDŒ¯‘ã ¢›@½‰9H8æ«BWõ¸µJÂqn꨿›n'-+ªìú“*Çq_äyœWÍÙ+Qc=Ç^ O̘Ã.­~¾Éí*H›ƒB ¦üÜøc`Æl4ªDðµ¯"fŒBLTÆåJÎ1¹1P9ݵ[9â"¨•¼f|áÈ*U#ë8F®l±ãAck ok¿q&ÅÁjsGyç_»°¤%o1¡¯º7D¡6.¤ñ`šµåçR`.5‡ÍË2ˆ3þã’ê÷œ/»®J’ã[Ü G.¹Zðµ,¾ÉÇn@#„;ÖÍ¢ ¨ñ5çÔf¼5.@°±.££FÊ1¸‘We²žÒg¶~푸)ǼÝ—¦µ¸'ŽY.¬±òÓH9¾0o„ŽìÚ×4ÎFܘmƸ•²J¤º7ûÏZ³tŽ-&S°]„CIkŽ3sNÒªe"׳%~ßÒH9†5ö—ÖU"ÇìØä‘cV© h3Nä˜#-BP*y\ £ DF_¼ÒH9¾4Ó}I9f&Ï^z}k(/‘ã÷²4^#׈VÂK®r+LÈ áU›4ÊqÐäe­Ðæ@:ê¶ÿFðø:uQR)Ç 9ã1y:ÇlªœþF€ÇÁª±8*²Fð8Èxp;h¤CÐ0»¼Ëž¬Vis `œê+?ác6ð£ë¤ÞÜTF›Áhs*Gø IMâΔãËÝNß³³†‰Ì¬àãSÌ %×1')DZ8WnžÈ™×éy’k„é‘÷°¼FÊ1&¿ãTG€Oœ*déÛUsØ‘!OàãŠñ©†<÷æt>þ‚þ'5‡”cÎCã­±ÚpJ*rHÈe ¨<&‡wH‚cx\bꩺñ :Žúã<$;æîãMoîSŒ—Þ1IÅkƬê2~K{ò Ð6ʦ³Æ)08ô87öŸØq øFÉÅkÁ7¾ÐM%³;þ¢qàFç2E»c¢Ç¬QçG#U¼ã0‘=Î`žÆnJ£ ô˜~ü^OÔ*wÔ‘‹IÞ¸^UœK  /RmD)H¢ªŽr‰Çä>6+ÉW%ߘˆ\°äªߘÃ9è'2Èyíä*’¨ÜÈ7fXEk|óÄvyâæâ\z@sj’9Ø€Gž‹½º9¢=ìˆ=G:z\;4^Ì-)9m2<¾e4ÌEÂ1G7"tl:ä˜LÉIY`§³T€¸Ç˜ ,€iøˆèqfÝó¥%'zL•#_IrDiA[P ¾ÚœŠªœÉN®ÓŒÑÌþqË=î;ÂcÍ;2άÀ%†…@ÒÊǘã¹ü mÎ3ZÁeÀ&o30ެˆ.7’êõ-Â09ƒçxì½)£ãWœ»ÊYÆ‘ÆðŽõ,)Ç옃Þ7‡Ñã 9ÃWI&¯>ÎVö&NÇGÀVuŒ ðñõVí¹ S}ï&KzŒ~ƒM†»‘rÌÛ q24ß;zSö†.HÎZäÑ×éAšmCᶈܤcòª-AŽ5Fà´8òø<êxß„âÌ·w³½‘tLÊù=ÚH:f¿G¬µLŹRyµ ‚c¢£[detœa‹7YÎöé˜k#Í ãzýB)ä˜äXj›4d“Ç»Gÿ7àÆµÃôw‰Sqcª*ºrdÀ*G-œ2„3àÆ<Â}ø$ª1hXNã3àÆl1G ’ÈEîàYň_¸Ã7‚1ªâ2LSGÀ+  °Žo¸q äÙšrcA:~­qß ²É!ÜåÀ8Úø:ÇãFš"?§1hF¦7¾Œq¸DJKUÑ¥g“¯À»0y4éÈ8ª°aÐ%íØH;æpÛ]AscÍ‘Yãlã뜫A¶9€­´7¢Ú€Ÿ@uÎ}–ûHܘcÇöîQ0ÒŽ/“îîÙÄÉå[ÃjŒ´c{3g,¦“è •“·gGU\î비æ Êõqɬ°˜nÌðÖ%è¸r +è šc„ŽcÄÁÖ f#í˜Cù8k^«iÇ×!õ7‚—úø^íØ_èã7‚¼ï2xðfA¸d2ÎRþÖàA âñeXÍ`}U€=n­:>è;Úž ˆÇ×+X$]Á³ñhod¥u€œU‚꘬9Z¯KÒæñøúªò‰„Ž¿àrH›3^½Õf‘:fëÑ ÐH<¾6HŽœ:ŽÂZL+ÒODœƒ„¼Á誓qVÅ•Ë!Û9,ˆÇ¯ÃNu#€qÒñ対ABÇÌc’,É¡ãD<)’Öœ _89’?l€ŽÉÉiØG»¬/‚Á–Ãj ÐqE]#eÑ´ ëã¯\Mç3@Ç…“µb~ ÞØö,Ï)©nFâñsm˜¯ÊCÕ _9é/ì1ì˜d…MAXœËý6UR²:iÇpr¥é´ãK$§{¤:‘c298ÈI&óÃŽItÞ®Ú9­èxôVËŽ¥~Po8 gCB2ÌcÔÕZ\"WÐqED‹b•ÒÔ~™WÑP­4YéÄŽ¡«9@“5§Næñ¥¡³Ê:w'󘹤ÊþÎ;ñ®÷ÔȉμKk¯¿¶“yÌaU8&«=WÁ½ñXÌcΣUÕ«Jðøz¥Ž^U‚Ç s4N+“v¼<¾rdeèÐ9ìøÒër'ÈÁJp«{wjõ/˜Ç[”åNæqcÀÞ©q'Þoë’ì¼ï:²VÖG;™Ç׋ƒ´ gV\ЇU΀ê¼|µÐm:Ê%³ Psk:‡_ˆàw‚¤s”‰ ÆMú;™ÇQæ\f©DÉÊ%XV;™ÇìËÚ£óöÂÌŠ•uÖr¥‚\Àu«(Xu™!wŽ­øb–—|"/Çã„4ެ•9@±¯È£&,öv|ç*»Ýz0_‰àzîdæ1•|k˜c¯oµ×CÒãr¼Ë@çÁ×anlÍ×3Ù:™Ç|Õ H]‚\ ÃÛzo¬Ÿö:°®Ô·¸õ¸ïu`µžÙ9´ Ó攄ƒŽ[;O'z|¬«y:¾ðœõ(×ôñ_У¥Î;À˜ë¥v\€VGL%3ÕnôS@UHå—tÕì0iºa±:®XRÛL8‚u|¡GJ&gçÄ šð½ À¬cFƒ¶_/*ÈêÌb«^ÔW7Õ8‘[+* c"‡ a£æÕw@Ǒ㢲®)g=XÇÏý‡—Œ£à8â"Ðøºf °ÃMÞ§ÙÉ9r$GNË]äÄ x·Ö˜àÈ]äíxÈp;àø®óÇ ðŸ¡'S“Î{pŽ/3n%U­w:)&8Ø~íyAûj@äÕÐÀ1ä¶r:€ãÀÔÚ^Úàðâi“ŒãNØ8"†-o'ãz³ywDçyZ½¾2¶ÇˆãמÝ:Ò¯Œã8-£[Ϋ¸Ü;¤§8wΫ¸öòJ:v'lÌpjW0_‡ ëRSç5,Þêäè“ð €l:ѯʂò"GÝÉ×9ã˜tü­Îã*àS÷šù;G_Yõ²¬5ÖÊ?MÒñpãÒé8KæàÂñkÛ¹ª>€×J€‹½jjqãÁ±¸TœAÆ1{€c˜‹^˜€?Øx—®j7Æ9n`ò™ ©)Ç—‹‘µýÀy'ç&éø#(ÇÄ­§€RŽ¿hÈ”ûÜ8zÙ‘++Žƒ+ˆ6LÎÒàÆDŠÑºsŽ1x (Ùʃ¸1ˆÜ'¿~"‚cÞ­ÅûÃô>7.¶Êƒwä…ªÒrè7¥¯bÅ‘Ñøà cf¸{ý8ƒ°ñ¥;æNŠC´  ª`ã°Ž ÖÞ}#MûjiäálLÁhr‘}î°q%ÜØ9Xžc²Ž/—éähäKtÌÎZé¬aãK#¾Êg6®±*\‡ ȉÇ×[N$ñxx  :Òj ÙüçÆ¬6CŽ”S²@‰Ç—’ã lÜy:ذ,°qþc¼]Q’Ç`c<0a~¸I²Òà°cô€ó^ÁJÅà9ÖF®^¢œAüO.*QãßÖ5b\Ûž (€@Ž ~¼Käh4þŠw.w‘ã*Ï?b•›'rè9@œúZÖAИæ˜îX‡õÕâ°ëøF ñ‡¡I`iß[€ÆðÿðT&iΰ1*ª‰Ój$ol4ÆÆ@8yeëÈj Î9[ÜtÓਠ^ä·×5óâ0ZTYùqmoE¡3—+Ut3Öà Š/Ú¿¤ @cö7ÒKÚðf\ÁRiÀ·nV&øÆð·Ø†#øÆŽT÷9tôu@¶¾è|Ĩ <ñØdwÌenŒ$òIŒÜãÆŽª@´Ù‚Š¥÷¹x"ÞÄ'JUå¨ Ð¿YˆÑùF\wapܲmœu«co|qs#H&§ªÃ%íaãhpÆéÐ acœcŸ¢ë€Š|cOô¨R8è¸s;¶:¹`ã“Ê-A^Gøoozøl\¢q`‹R7È7&¡foŽÓl|:ªÉØÀq…4hŽIß p|½’ûFšSøÄ­¡ #øÆ¯ºª¹ƒ|ãËØIÝÇ1bÐ1§jlÍG¼ïz㜜W<&5߸w±òਠŽ.ž4Ž¿¸ãRšŽ¸,nœYÅŽcÌÑÞu|#øÆ¯ƒ\ô`¥ä˜ys"ÓਠrãÉ×*Gäø29DÓ?'Ç—[Rô'ã8VäJ˜UAoä$r|%œßÂæd$G%ùk9¾Ð?tú?y?-95GN&‘cÞä·×19¬‚¹Ñ3n9.—iÞ7‚œuüJ×÷ÉY×:ެL1êXk€ãŠ—M[5 _F9jâÀLÄÿ.½J7‚49ÜbÕOǪÂà+áxó>Þ äø„ÆÆ‘¬š ä¸b~@ãu•²v<35‡ü6Vµ ŠUœJ戬L"Ça·FrÎu ŸÃÚ±,VNމTm9'§U\GëJ·:7 •§Ù‘zá«0Ä0WË$p< -)|R|cbÜ{³'ùÆ_ôªiA*žÈy’ÿ7 !‡‚r9±Ù£!èÔ£<'/Éã©Ú›Ê= ãcDr„ãeyt8Á½^• à8È*œ,»*f\“w¹²B›ò¡¬¢é*ó=r|'ȹ£ìŽáâHGΉ¬«íQN'¯É# Àd^«ùÆp¶ª~U8«ëÕ“’­8 cq6oÖž€Ž£tõQyÉ7&íhïzÍI¾1é s4%orÒ1ª#h¬î:®v\€UorÇ&ÁcjÜÞÔÁÉAÇ×1°’æ0Wò*q‡”i³Jô˜Ç‘õYtÌH.(YÒä?¾R€uÏé~|j%wT¾*ðㆎL HOœ$“ç2hå7rÔñµè,;ù¦±ì€U~¨ë*rCÓ¡ë–³µ&dÄÕ Ž¼ëð˜ø1Ï$úýE°2X½Y›+ Èã(Ó#àÇ—Örê¤ÜFàǵґ3[•¯Êy— ©š¯8ŸÙdKU~|½ äNôQ¸œ=~Äì49PÕ½Ë'G1¯RoÇ[͹$—‹|µ­Yž“´ãÀÈ·FkNΫ¸Ì×}\“øñ…’u'øJXïȺ>œWq™ç®{G'ñcaVõÈêÉyF¿ÊoÔ‚$¬ã®tr ¬š<:É;>æë% t>nÐqCÌ¡i‡“¼cr€¢_E.ê|-fKþ®à{ÅÑ)9àã Ø©Åèyµ8é~\1`ÏPµî²øì’ÝaÞ)ûÀ\’VçµíTÃ9. $˜EAòHº$‰9Èu‚Ñyóí5H¢¤äf»$}Öu;oÞ¶¿î'C;I¢:´¯péw»B*¿QHrŒ÷D:Ðeá’OŠùž¤KIº¤K’_ o’ì’HБÙíK’NúJ`mr†±K"왬õNÒ^¿“ƒú%gÎ%Ÿ:Dbð£Ø9o£áÙnyó²órTø™ú™¼>/æµ2£TŒK‚u!˜›=.ùT!Æ> Át œ» »*<¿6¼ÞJÖË3Ùñª÷“/x õ^¿‹KrZòó!K‘V—C‰Èã4‚ä’À¿ ÙëÓ ø™Ð1÷?3¥2\|Ø%wÍ%ášMæ»K^hò™7o‹@è‹ ôÒrd2‡BºÔÚ\’ìw¤È{£Ý\’ôwŽ'gêfm95Ïäu”w’À„®£h%Ù%/<æ½)ÒA"3§tí±¼]’-~hbWn$9ª qÉÞxh—$Wƒ¤Ë¶)‰pšôéÂÒ¦hô‡Àzf™›’‡¤!ž©5žxtPèI„¾YÛ·méšé’ä¥rØóV_z:€Ióm;ætÙ*ä’pdHU:’ÝCç’bŠŠvØd5_/¶¾“$áÏäY uIèGðlK¾6SlާvI¤daMlS’ƒÿY+$—R[€ÓA‰¢Æë,œ¾LšÖÜF—|íÅÙœ§ã’h©`ÿ×^ùÖ%IS…$/8¼“¼4UD‰BZ“t0 †·§ÿÔg%œn…ðÏçÍÛöI㵊úd'ŽU¾R#tœÄ|ŒIVæ “½Y¥.y™rºw)§ —ßäÖ»dy][Þ°$o­I à4Ëœ…ÉÊL àtƒÿ Š”¤»$|Ùeð¨Zà’¬­^½w’Сë‘»ïDj´C:mM¤MƒÀ=¹“|?å]™]’í:¿­ëÂí;+ i¶Ú.\’­^`úï`Á‚&Íg‹?Ÿ'hÐÀ£-éVòÕ‘$µ)¹¡7Iû.É*+¿“+¤õub’½7cÒ%éÈ(¹5*È%Y%#†,jý¤Abpmµ-!@83ðWh&Î`†™ŽÆ_ÉkN õ·¢ßI’,Dv4AR¢]’IÙ¥¦w'IºÐeÒ¼fµ$²¢¯¬–;ɧ1t똡‡±º$Ù%,–>ùŽMèÁº†•¯òÛ CT­ñÆ:ë{…•D„úÊ8–Äa—¤âùÜb*º$']")ã¼â;I$eÓ¹½ºg"FÍ9´šw’¯…2Æšèž0êk•ö¦&“R‚íðŸýÆó¤¦wØé–§l\glJ²sJ©¿ ÄÜI¾2†V’tç”x±_R¶)i/’›h)¤¶`s?õYéW;DØÍ3éË^ljê>ÏÙÙCÎe(‘.}½úNƒ¡Ø2¹WbKÀ¨¿ê´ÐF3Ó¯-Szö•KrV ŽçÞÔ¬”Æk^¿K³LãÕ•íÖëS¦98FS’¦SF}¡FÝÈÍW#dœG©Ëz‰5ê@†Ð­ßdØD¨ãôÜ”Hœæl1#2tóÐ Öd˜ iºZBý€¤}¢[âè N´aš£ iRƒ.®þNFˆpÀV?sJdOSi‘ÔëkpRæô¨E“·!-I@mhg8 5–Û™PGüÍWR…2ê/ØþRm3ê†qA»L·|¼ÆÓ»ÌÅL€š4œMO&@ù[·nÖö5'Ûå´çãš“íñp2jCáóÄCÕ»#œ_y¨7y`NŒ§_Ϙ§3GqðtîbvIú±+Zžë|!O³Eá†<ƒ<}|÷L¨¿sûm¶“sµ÷<ø4ßv·Ñ Ÿ&Q‰´PÍÌËÀ§Ù½ÇèË@§I‰é¸ŽëÆf’§Cm’i2/Ì¿­[Õ%¯-{„µœi„.Ãu5Á)s.Žõ.©*þŠŽ¥M Ðé„AI$¬ÝI6xzc¨©n™³9Øü±IäÊ€§OÜD4º¦—Ky]!¾íd}y扩¤5ê/xU7ßùÔ!dU)Ó¾ëC|šž>åV*„NBcŒ ‡&º$Šõܶ%9Ýù‹ zS8¤”˜]bK>ýE¹T±3ði>s·ü9§îšÛ)ï¢Mðt,Ð&?ž>‘÷÷1ð´ gWr\$ÇæwΗMÙeþdÀÓ¬nޤvI†B¤hî5ÖävQ!²tÅ=<ýܬÕçÆXèÒ’¬+ѹ] Å½K´Rn´BlRÈ›Ïì/’(êdÎ$P󎑽ÙT)<ïÜ,7dÀÓ§†§Í·Ûñ¶›­R™êkS³n¢Í€§C²¿yæuÐ×V[k¯»Â›_î$ 1ÝÝŒú®êMÄ$“BÍ*ÿ&î‘ OkÙë÷è‰ýôdmp?µ5ÀmÞ•$>}©7hu@Ý™)W‚ÅÒhÔ‰‰àf YPKÞHæÉÍ{ž]:T.¼d_ôµI“|ú«¤I»H¾Æ¤Ÿî-Æ ­æF•c¼M³ºw#‰Rý í+•„¥­ó"ù‡þôíçŸ]øÃýöë¿ÿñwøáÏûùß~úå¿ûÿŸa(_NÊdolfin-1.3.0/scripts/dolfin-order/0000755000175000017500000000000012263014601016714 5ustar johannrjohannrdolfin-1.3.0/scripts/dolfin-order/dolfin-order0000755000175000017500000000326012263014601021227 0ustar johannrjohannr#!/usr/bin/env python # # Copyright (C) 2008 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Script for ordering a DOLFIN mesh according to the UFC ordering scheme import sys, os, shutil from dolfin import Mesh, File def main(args): "Main function" # Check that we got at least if not len(args) > 0: usage() sys.exit(2) # Convert each mesh for filename in args: print "Ordering %s" % filename # Read and order mesh mesh = Mesh(filename) mesh.order() # Make backup copy shutil.move(filename, filename + ".bak") # Write file and gzip if necessary gzip = False if len(filename) >= 3 and filename[-3:] == ".gz": filename = filename[:-3] gzip = True file = File(filename) file << mesh if gzip: os.system("gzip " + filename) def usage(): "Print usage instructions" print "Usage: dolfin-order mesh0.xml[.gz] [mesh1.xml[.gz] mesh2.xml[.gz] ...]" if __name__ == "__main__": main(sys.argv[1:]) dolfin-1.3.0/scripts/dolfin-order/mesh1.xml.gz0000644000175000017500000000036712263014601021100 0ustar johannrjohannr‹jÁJQmesh1.xml…Anà E÷œ;ž@²¨"pv=A{€Èž8HGÙNO_ vjU²º4ÌûúF]¦Öòzo:§Aà䪮6®Ñðõùñö—’1Uwöf´óçÜh¸‡ð8#ŽãXÜÈ™Ê]ß`ž"”ŒsÕ’¿óЬ Ïi½¹ºÆðÚ´d‚"S‘çÞ|Gì´ü/š¸q5Mb¼\ŸsÅJ$JüCÉ %v©ãÆñE)\/ý¼á^þ†_×ÝÄùÉz³î Dˆ, “o:4Η.™ZÎ_²"/‹Ûdolfin-1.3.0/scripts/dolfin-order/mesh0.xml.gz0000644000175000017500000000047012263014601021072 0ustar johannrjohannr‹jÁJQmesh0.xml“ÝŽƒ Fï} ÂýJñ¯MönŸ`÷62­$е}úU°©®[ëÍäüd2ìÔ•j Ö²RS‡¨¬R]8þþúü8àSêyLTÅY*ÔÓJÝ‚ãܘ둶mý3(™i¿ª/Äíœz±tŽ2( s»ÇLý“ƒ¨+…‘%Ç¡åz²adiyïÉÃø~ÜI% ã¸OèêÍÖ»­äL-L·ÁÁ¦ïàpã--2Ó×p¼È¼'‹Ì+ð~‘ù 3òhÀ¸šöhFòlƤƒ“Ž4;÷ öÈ&°÷ӄß“5•:•:5˜©ÉºÌÔÈ©±S÷ëj8SC§F›Ôh¦ÆNM6©ñ_ý«2bïÝΆ'õØ8Q©÷ Dcé§®dolfin-1.3.0/scripts/dolfin-convert/0000755000175000017500000000000012263014601017261 5ustar johannrjohannrdolfin-1.3.0/scripts/dolfin-convert/test_exodus.exo0000644000175000017500000001601412263014601022346 0ustar johannrjohannrCDF len_string!len_lineQfour time_stepnum_dim num_nodesknum_elem´ num_el_blk num_qa_recnum_el_in_blk1´num_nod_per_el1num_att_in_blk1  api_version@€Qìversion@@£×floating_point_word_size file_sizetitleQcubit(/Users/gideonsimpson/code/fenics/darcy2d_quarter/square.e): 01/15/2008: 12 time_whole qa_records„¬ coor_namesD0elem_mapÐt eb_statusDeb_prop1 nameIDHattrib1  Lconnect1  elem_typeTRI3p ìcoord°\CUBIT10.201/15/200812:20:01xy  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð?ð   !"#$%&'()*+, -./+01234567"89:;<5=>*,?21@ABC+0;D<(ACEBABFCG!*?HIJFKC2LM++M,4NOPJ%Q7R)'EA  D< S!% .TU$VWXYZWD[[ S3XR')\Z]- $OQ^8:8_9`0=^>L+/aT&UPObQ2V3Rc'cE'd6#6"#(")"7)('A K"Z\(\Z"(ZYW"e4? WT$& f] ] 3VgVgN g#YWMh,N*H9/:iL/IOJj=UO$Q-k.%.& %1bf Ff *NV2N  PjJjJOIb2@\KF KZYY,h?he?G!S!!G<4e54e;5dd#<G5G5+**`>0/0:``113i/9_i9`I >^:0>:3bI@NgXWX3X>`>I@1b@ObQ%$QK\C\(C4NH?4H.k&ka& g3g?àPõÂxú?àSEúÄô?ÛH'},¬§?ì|ÉS7Å?ð?ëëQ"A}Ò?çÀlÎý?âú¶À’p?ãª>X\o?Ôn\0ÿÿ?Üw`îG?Ûœp‰oB>?àû‹ð=–é?å§×Ú C?é£ÔSáíO?èHîÇ#¯d?ͶI[¡Ç>?»jçyFN?ÅË…ÙçVP?ÙååuQoÂ?Õ$’23 ?Û´„²=à?Õ$—ž¥[P?ä÷¹(Ñl?âšæòFÕ?Ôl–žYl?Ô«±©;?é=å»öº?åÑnÆL{?èÚ‚”,{ã?í4No ‹?ð?ìÓœÅÑÏ?ë˪¹‚ð?í¿eÌœ|?»o¶”}²H?Ë%€×n^?ºÀù”å©Ê?ìäÌG1–Nõ?éîò )X6?è?æè¼Ì–j7?ì?ì?ä?êjqòw3?ác…# ’?ÅÏŒ.Êõ ?´HG’íÌÆ?ãù ×c×?Ð?Ø?á±·¨£ù±?½ZýxõX?˵5BeÛ"?ð?ð?ÚÃm‚‘à?ã éŽXì?â,ÙBÔ6¸?å¸sûÊâ?çÀV· ¢ž?ð?åÔì3¿˜?Ø?Íâ l:©“?Î[õÇ«ô€?ð?ð?ä?à?àg5š‰í[?à?À?À?ãµD‡X›;?æ÷ü{»ZN?änüuOy?Ó‡ë¬B˜?Ø?ÜÆ-uKù?ÛóÛëÆÓÃ?ÞsW, Þ?ØL4ºž?ìÒ‹LŒ¯?ê{ø¶íº?íŸ0&Vá?í!‹æÉt5?áê GÐÂ?á¤þ¬´?äV1ý¼.Ù?Ü×Î)ŽÒ?ÜG.ï+J[?Ø,¼GHW9?çpáS"5°?Ð [òlBU?Ô'Êí,?×–?çlS ™Í=?êSÀ??é?KžT?åÜ œD¢?Õëô ‰Ê?ÓNŒ%Y±'?ÌP¿<»“?µ¦Bué¤~?À?È\Ã#PÒ?åî©>/ ?áøJq}D?é`l„ìO?êêWüãf?ìÿeUš5$?ìûÜ]'·ï?ê?k‘#þÝ?é³T«Ç?ÈÔˆd5¼?¿CâÇ/ɺ?µÏŠÂ‚mÓ?ð?íº×>aøN?¹ÑÏx V?Ëa«Íx?â–-˜¬H?ÞqR7W?à• x±`?Å„èÍY›[?¹L«:M·?ä?è?À?´±3ç»åÈ?Çy$’ÓO'?¯¤Ä†øU?Ø?Ó«áQÎÞ?ºP7o74¢?àüOá³A?í—¬€ÔÐB?ð?íƒàȸÕ?ð?ð?Á;«lë/ã?ÇÎ Ø9î?ádï‰dÞ/?áÄ&u‰¸?ì…Èd{B?Ñ¿¾ÏûÎu?å;;ìü•?ä?çm»†ÿ¥[?ì?Ð?ì?è?Ú©µì÷?䆳#‘Ùj?áâ5Ñó. # # Modified by Garth N. Wells (gmsh function) # Modified by Alexander H. Jarosch (gmsh fix) # Modified by Angelo Simone (Gmsh and Medit fix) # Modified by Andy R. Terrel (gmsh fix and triangle function) # Modified by Magnus Vikstrom (metis and scotch function) # Modified by Bartosz Sawicki (diffpack function) # Modified by Gideon Simpson (Exodus II function) # Modified by Arve Knudsen (move logic into module meshconvert) # Modified by Kent-Andre Mardal (Star-CD function) # # Script for converting between various data formats import getopt import sys import os from dolfin_utils.commands import getoutput import re import warnings import os.path from dolfin_utils.meshconvert import meshconvert def main(argv): "Main function" # Get command-line arguments try: opts, args = getopt.getopt(argv, "hi:o:", ["help", "input=", "output="]) except getopt.GetoptError: usage() sys.exit(2) # Get options iformat = None oformat = None for opt, arg in opts: if opt in ("-h", "--help"): usage() sys.exit() elif opt in ("-i", "--input"): iformat = arg elif opt in ("-o", "--output"): oformat = arg # Check that we got two filenames if not len(args) == 2: usage() sys.exit(2) # Get filenames ifilename = args[0] ofilename = args[1] # Can only convert to XML if oformat and oformat != "xml": error("Unable to convert to format %s." % (oformat,)) # Convert to XML meshconvert.convert2xml(ifilename, ofilename, iformat=iformat) # Order mesh #os.system("dolfin-order %s" % ofilename) def usage(): "Display usage" print """\ Usage: dolfin-convert [OPTIONS] ... input.x output.y Options: -h display this help text and exit -i format specify input format -o format specify output format Alternatively, the following long options may be used: --help same as -h --input same as -i --output same as -o Supported formats: xml - DOLFIN XML mesh format (current) xml-old - DOLFIN XML mesh format (DOLFIN 0.6.2 and earlier) mesh - Medit, generated by tetgen with option -g Triangle - Triangle file format (input prefix of .ele and .node files) gmsh - Gmsh, version 2.0 file format metis - Metis graph file format scotch - Scotch graph file format diffpack - Diffpack tetrahedral grid format abaqus - Abaqus tetrahedral grid format ExodusII - Sandia Format (requires ncdump utility from NetCDF) Star-CD - Star-CD tetrahedral grid format If --input or --output are not specified, the format will be deduced from the suffix: .xml - xml .mesh - mesh .gmsh - gmsh .msh - gmsh .gra - metis .grf - scotch .grid - diffpack .inp - abaqus .e - Exodus II .exo - Exodus II .ncdf - ncdump'ed Exodus II .vrt and .cell - starcd """ if __name__ == "__main__": main(sys.argv[1:]) dolfin-1.3.0/scripts/dolfin-convert/test_Triangle.node0000644000175000017500000000402712263014601022737 0ustar johannrjohannr29 2 1 1 1 0.20000000000000001 -0.77639999999999998 -0.56999999999999995 1 2 0.22 -0.7732 -0.55000000000000004 1 3 0.24560000000000001 -0.75639999999999996 -0.51000000000000001 1 4 0.27760000000000001 -0.70199999999999996 -0.53000000000000003 1 5 0.48880000000000001 -0.20760000000000001 0.28000000000000003 1 6 0.50480000000000003 -0.20760000000000001 0.29999999999999999 1 7 0.74080000000000001 -0.73960000000000004 0 1 8 0.75600000000000001 -0.76119999999999999 -0.01 1 9 0.77439999999999998 -0.77239999999999998 0 1 10 0.80000000000000004 -0.77639999999999998 0.02 1 11 0.80000000000000004 -0.79239999999999999 0.01 1 12 0.57920000000000005 -0.79239999999999999 -0.20999999999999999 1 13 0.57920000000000005 -0.77639999999999998 -0.20000000000000001 1 14 0.62160000000000004 -0.77159999999999995 -0.14999999999999999 1 15 0.63360000000000005 -0.76280000000000003 -0.13 1 16 0.63919999999999999 -0.74439999999999995 -0.10000000000000001 1 17 0.62080000000000002 -0.68440000000000001 -0.059999999999999998 1 18 0.58720000000000006 -0.60440000000000005 -0.01 1 19 0.36080000000000001 -0.60440000000000005 -0.23999999999999999 1 20 0.31919999999999998 -0.70679999999999998 -0.39000000000000001 1 21 0.312 -0.73960000000000004 -0.42999999999999999 1 22 0.31840000000000002 -0.76119999999999999 -0.44 1 23 0.33439999999999998 -0.77159999999999995 -0.44 1 24 0.37119999999999997 -0.77639999999999998 -0.40999999999999998 1 25 0.37119999999999997 -0.79239999999999999 -0.41999999999999998 1 26 0.37440000000000001 -0.56999999999999995 -0.20000000000000001 1 27 0.57440000000000002 -0.56999999999999995 0 1 28 0.47360000000000002 -0.33079999999999998 0.14000000000000001 1 29 0.20000000000000001 -0.79239999999999999 -0.58999999999999997 1 # Generated by triangle pq A.poly dolfin-1.3.0/scripts/dolfin-convert/test_Triangle.ele0000644000175000017500000000140012263014601022547 0ustar johannrjohannr29 3 0 1 29 2 1 2 2 29 23 3 25 24 23 4 23 22 2 5 25 23 29 6 2 22 3 7 3 21 4 8 21 3 22 9 4 21 20 10 5 4 26 11 19 26 4 12 26 19 18 13 19 4 20 14 5 26 28 15 12 14 13 16 14 12 11 17 11 10 9 18 8 14 9 19 8 15 14 20 9 14 11 21 6 27 7 22 26 18 27 23 5 28 6 24 27 18 7 25 28 27 6 26 15 7 16 27 7 15 8 28 17 7 18 29 7 17 16 # Generated by triangle pq A.poly dolfin-1.3.0/scripts/dolfin-convert/test_Triangle.edge0000644000175000017500000000173212263014601022716 0ustar johannrjohannr58 1 1 29 2 0 2 2 1 1 3 1 29 1 4 29 23 0 5 23 2 0 6 25 24 1 7 24 23 1 8 23 25 0 9 23 22 1 10 22 2 0 11 29 25 1 12 22 3 0 13 3 2 1 14 3 21 0 15 21 4 0 16 4 3 1 17 22 21 1 18 21 20 1 19 20 4 0 20 5 4 1 21 4 26 0 22 26 5 0 23 19 26 0 24 4 19 0 25 19 18 1 26 18 26 0 27 20 19 1 28 26 28 1 29 28 5 0 30 12 14 0 31 14 13 1 32 13 12 1 33 12 11 1 34 11 14 0 35 11 10 1 36 10 9 1 37 9 11 0 38 8 14 0 39 14 9 0 40 9 8 1 41 8 15 0 42 15 14 1 43 6 27 0 44 27 7 0 45 7 6 1 46 18 27 0 47 27 26 1 48 28 6 0 49 6 5 1 50 18 7 0 51 28 27 1 52 15 7 0 53 7 16 0 54 16 15 1 55 8 7 1 56 17 7 0 57 18 17 1 58 17 16 1 # Generated by triangle -e A.poly dolfin-1.3.0/doc/0000755000175000017500000000000012263014601013406 5ustar johannrjohannrdolfin-1.3.0/doc/generate_api_doc.py0000644000175000017500000000454712263014601017242 0ustar johannrjohannr#!/usr/bin/env python # # Copyright (C) 2011 Marie E. Rognes # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Utility script for generating .rst documentation for DOLFIN import os, sys dolfin_import_error_msg = """ Unable to import the %s module Error: %s Did you forget to update your PYTHONPATH variable?""" try: import dolfin_utils except Exception as what: raise ImportError(dolfin_import_error_msg % ("dolfin_utils", what)) from dolfin_utils.documentation import generate_cpp_api_documentation from dolfin_utils.documentation import generate_python_api_documentation def generate_dolfin_doc(input_dir, output_dir, version=None): if version is None: version = "dev" # Make output directory (or use current if existing) try: os.makedirs(output_dir) except: pass # Generate .rst for C++ documentation api_output_dir = os.path.join(output_dir, "cpp", "programmers-reference") generate_cpp_api_documentation(input_dir, api_output_dir, version) # Try to import DOLFIN Python module module_name = "dolfin" try: exec("import %s" % module_name) exec("module = %s" % module_name) except Exception as what: raise ImportError(dolfin_import_error_msg % (module_name, what)) # Generate .rst for Python documentation api_output_dir = os.path.join(output_dir, "python", "programmers-reference") generate_python_api_documentation(module, api_output_dir, version) print "\nSuccessfully generated API documentation.\n" if __name__ == "__main__": args = sys.argv[1:] if len(args) != 3: usage= "Usage: python generate_api_doc.py source_dir output_dir version" print usage sys.exit(2) generate_dolfin_doc(args[0], args[1], args[2]) dolfin-1.3.0/doc/README0000644000175000017500000000375712263014601014302 0ustar johannrjohannr# Last changed: 2013-01-03 This directory and its subdirectories contain (i) data and scripts for generating the DOLFIN library reference and consolidating the DOLFIN demo documentation and (ii) man pages for the scripts dolfin-convert, dolfin-order, dolfin-plot and dolfin-version. How to generate documentation: ------------------------------ In order to generate the documentation, Sphinx must be installed and enabled. To generate all .rst and .html documentation files for the DOLFIN library and the demos, follow these steps 1. Build DOLFIN 2. Make sure that the corresponding dolfin and dolfin_utils modules are available 3. Run ./cmake/scripts/generate-swig-docstrings 4. Run make doc in the build directory. The DOLFIN documentation will be generated in two Sphinx projects: build/doc/sphinx-cpp build/doc/sphinx-python providing documentation for the C++ library and demos, and the Python module and demos, respectively. The subdirectory sphinx-common acts as a template for these Sphinx projects. How to generate and install documentation: ------------------------------------------ To generate the documentation and install the generated Sphinx projects under /share/dolfin/doc, do make doc_install What 'make doc' does: --------------------- 'make doc' will 1. Copy sphinx-common into separate sphinx-cpp and sphinx-python 2. Fill these Sphinx projects with suitable contents by running the scripts generate_api_doc.py ... calls generate_[python|cpp]_api_documentation from dolfin_utils.documentation with appropriate arguments copy_and_split_demo_doc.py ... copies documentation.rst from demo directories into the suitable Sphinx projects and generates a .rst index file for each tree generate_main_index.py ... generates a (version-dependent) main index.rst file for each Sphinx project 3. Use Sphinx to generate .html files from .rst files by running 'make html' in the Sphinx projects dolfin-1.3.0/doc/quick_reference_cpp.rst0000644000175000017500000000230512263014601020134 0ustar johannrjohannr .. title:: Quick Programmer's Reference (C++) ################################## Quick Programmer's Reference (C++) ################################## The complete :ref:`DOLFIN Programmer's Reference ` documents **all** the classes and functions in DOLFIN. As a **quicker** reference, here are some of the most commonly used classes and functions, organized by topic: .. tabularcolumns:: |c|c|c|c| .. list-table:: :widths: 20, 20, 20, 20 :header-rows: 1 :class: center * - Finite elements - Meshes - Variational problems - Linear systems * - :cpp:class:`FunctionSpace` - :cpp:class:`Mesh` - :cpp:class:`LinearVariationalProblem` - :cpp:func:`assemble` * - :cpp:class:`Function` - :cpp:class:`MeshFunction` - :cpp:class:`LinearVariationalSolver` - :cpp:class:`Vector` * - :cpp:class:`Form` - :cpp:class:`SubDomain` - :cpp:class:`NonlinearVariationalProblem` - :cpp:class:`Matrix` * - :cpp:class:`Expression` - - :cpp:class:`NonlinearVariationalSolver` - :cpp:class:`LUSolver` * - :cpp:class:`DirichletBC` - - :cpp:func:`solve` - :cpp:class:`KrylovSolver` dolfin-1.3.0/doc/CMakeLists.txt0000644000175000017500000000766212263014601016161 0ustar johannrjohannrproject(dolfin-doc) message(STATUS "Enabling generation of documentation.") # Copy most of doc directory to build directory file(COPY . DESTINATION ${CMAKE_CURRENT_BINARY_DIR} FILES_MATCHING PATTERN "*.rst" PATTERN "*.py" PATTERN "*.conf" PATTERN "*.html" PATTERN "*.png" PATTERN "*.css*" PATTERN "Makefile" PATTERN "CMakeFiles" EXCLUDE) # Set directories for where sphinx projects and their source # directories are located set(DOLFIN_CPP_SPHINX_DIR "sphinx-cpp") set(DOLFIN_CPP_SPHINX_SOURCE_DIR "${DOLFIN_CPP_SPHINX_DIR}/source") set(DOLFIN_PYTHON_SPHINX_DIR "sphinx-python") set(DOLFIN_PYTHON_SPHINX_SOURCE_DIR "${DOLFIN_PYTHON_SPHINX_DIR}/source") # Initialize separate cpp and python projects message(STATUS "Initializing sphinx projects") file(COPY "${CMAKE_CURRENT_BINARY_DIR}/sphinx-common/" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${DOLFIN_CPP_SPHINX_DIR}") file(COPY "${CMAKE_CURRENT_BINARY_DIR}/sphinx-common/" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${DOLFIN_PYTHON_SPHINX_DIR}") configure_file("${CMAKE_CURRENT_BINARY_DIR}/quick_reference_python.rst" "${CMAKE_CURRENT_BINARY_DIR}/${DOLFIN_PYTHON_SPHINX_SOURCE_DIR}/quick_reference.rst" COPYONLY) configure_file("${CMAKE_CURRENT_BINARY_DIR}/quick_reference_cpp.rst" "${CMAKE_CURRENT_BINARY_DIR}/${DOLFIN_CPP_SPHINX_SOURCE_DIR}/quick_reference.rst" COPYONLY) execute_process(COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_BINARY_DIR}/generate_main_index.py" "${CMAKE_CURRENT_BINARY_DIR}/${DOLFIN_CPP_SPHINX_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/${DOLFIN_PYTHON_SPHINX_SOURCE_DIR}" "${DOLFIN_VERSION}") # Add target doc_api: generate reST files from code for cpp and # python. This takes a while. add_custom_target(doc_api COMMAND ${PYTHON_EXECUTABLE} generate_api_doc.py "${DOLFIN_SOURCE_DIR}" api "${DOLFIN_VERSION}" COMMAND ${CMAKE_COMMAND} -E copy_directory api/cpp/programmers-reference "${DOLFIN_CPP_SPHINX_SOURCE_DIR}/programmers-reference" COMMAND ${CMAKE_COMMAND} -E copy_directory api/python/programmers-reference "${DOLFIN_PYTHON_SPHINX_SOURCE_DIR}/programmers-reference" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") # Add target doc_demo: copy demo code and doc files into sphinx # projects and add additional index files. add_custom_target(doc_demo COMMAND ${PYTHON_EXECUTABLE} copy_and_split_demo_doc.py "${DOLFIN_SOURCE_DIR}/demo" "${DOLFIN_CPP_SPHINX_SOURCE_DIR}/demo" "${DOLFIN_PYTHON_SPHINX_SOURCE_DIR}/demo" WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") # Add target doc_html_[cpp|python]: run sphinx in [cpp|python] sphinx # projects if (SPHINX_FOUND) message(STATUS "Enabling generation of html-documentation") add_custom_target(doc_html_cpp COMMAND ${MAKE_PROGRAM} html WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${DOLFIN_CPP_SPHINX_DIR}") add_custom_target(doc_html_python COMMAND ${MAKE_PROGRAM} html WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${DOLFIN_PYTHON_SPHINX_DIR}") # Add target doc_html: run sphinx in both cpp and python add_custom_target(doc_html) add_dependencies(doc_html doc_html_cpp doc_html_python) # Add target doc_generate_all: Generate all doc (api and demos) add_custom_target(doc_generate_all) add_dependencies(doc_generate_all doc_demo doc_api) # FIXME: Want to run doc_generate_all before doc_html, but the order # of the targets is necessarily respected here. add_custom_target(doc) add_dependencies(doc doc_generate_all doc_html) # Add target: doc_install Copy generated sphinx projects to # DOLFIN_DOC_DIR add_custom_target(doc_install COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_BINARY_DIR}/${DOLFIN_CPP_SPHINX_DIR}" "${CMAKE_INSTALL_PREFIX}/${DOLFIN_DOC_DIR}/${DOLFIN_CPP_SPHINX_DIR}" COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_BINARY_DIR}/${DOLFIN_PYTHON_SPHINX_DIR}" "${CMAKE_INSTALL_PREFIX}/${DOLFIN_DOC_DIR}/${DOLFIN_PYTHON_SPHINX_DIR}") add_dependencies(doc_install doc) endif() dolfin-1.3.0/doc/sphinx-common/0000755000175000017500000000000012263014601016205 5ustar johannrjohannrdolfin-1.3.0/doc/sphinx-common/README0000644000175000017500000000030312263014601017061 0ustar johannrjohannrThe contents of this directory were generated by sphinx-quickstart and then modified. To change the style of the generated html-documenation, modify ./source/conf.py and/or ./source/_themes/... dolfin-1.3.0/doc/sphinx-common/Makefile0000644000175000017500000001076212263014601017653 0ustar johannrjohannr# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/DOLFIN.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/DOLFIN.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/DOLFIN" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/DOLFIN" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." make -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." dolfin-1.3.0/doc/sphinx-common/source/0000755000175000017500000000000012263014601017505 5ustar johannrjohannrdolfin-1.3.0/doc/sphinx-common/source/conf.py0000644000175000017500000001672412263014601021016 0ustar johannrjohannr# -*- coding: utf-8 -*- # # DOLFIN documentation build configuration file, created by # sphinx-quickstart on Tue May 24 22:58:54 2011. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. needs_sphinx = '1.1' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. #extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', # 'sphinx.ext.pngmath'] # Use mahjax maths extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', 'sphinx.ext.mathjax'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'DOLFIN' copyright = u'DOLFIN Core, https://launchpad.net/~dolfin-core' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '0.9.11+' # The full version, including alpha/beta/rc tags. release = '0.9.11+' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = [] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. modindex_common_prefix = ["dolfin.", "dolfin.cpp."] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'nature' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. html_theme_path = ["_themes"] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". html_title = "FEniCS Project" # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'DOLFINdoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'DOLFIN.tex', u'DOLFIN Documentation', u'DOLFIN Team', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # Parameters affecting the LaTeX PNGs in the HTML files pngmath_latex_preamble = r" \usepackage{stmaryrd} " # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'dolfin', u'DOLFIN Documentation', [u'DOLFIN Team'], 1) ] # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = {'http://docs.python.org/': None} # Use docstrings both from __init__ and class when using autodoc for # Python classes autoclass_content = "both" dolfin-1.3.0/doc/sphinx-common/source/index.rst0000644000175000017500000000000012263014601021334 0ustar johannrjohannrdolfin-1.3.0/doc/man/0000755000175000017500000000000012263014601014161 5ustar johannrjohannrdolfin-1.3.0/doc/man/man1/0000755000175000017500000000000012263014601015015 5ustar johannrjohannrdolfin-1.3.0/doc/man/man1/dolfin-convert.1.gz0000644000175000017500000000142512263014601020451 0ustar johannrjohannr‹Pß Kdolfin-convert.1•UËnÛ0¼ë+9-i=EÇÎÃEb–S´¨{ EJbK‘ ‰ý÷]J²©$nƒ^.wv¸\Fdy GãÙÍåd:ͦ_/Ë#xŸ$$½†éðö"aZæB 2­¸q0€Q·rÚ:øv{¹6um]ú}:›§“4!çð´<ù±Ê'³ùr2›¦«|ñ!€[BÕÞ‘ hïÂb‹¹–ªÃ&d9OVùùjPbêš%\Ö:¶–t !Ç7¨bÀ7‘X)Ùµ¹'hÎûIZóLä[hö»Í…>@Ѷ|€£MD’ù*®,"ú2‹œc„DIEé¾|z€~ ‚BèµµÆE@Ed\ÊCˆÆnÏï®Z¯M9ZE¦« -Çýç6|û¸\û 6f»Œ„ÿ@kògRXg‰¤^eeMQ}¯áÞ-¯g‹çÿ’GjQu¢ŠJ¹…G#œC¯A×*†7º(à“Ä癕—”(ý™`sXŽ¢Ö¨5D•ôc¯Ê±öÁ¶°#ʪ°qÛ VïŒÿlÜ1éì—À²D÷©¨òHWÓ‚7=õù¢Kª~‚ ¡°•_MhžtóÜåT¡Bdolfin-1.3.0/doc/man/man1/dolfin-version.1.gz0000644000175000017500000000035412263014601020456 0ustar johannrjohannr‹ÂMdolfin-version.1]ŽÁNÃ0DïþŠUÏd%îµ¥ ‚¤ªÓJdi Î:تþ=F)¸ôfžëÕócQfÇÍ^U¹€[¥PçP®^6ªóîÍröE!ZÏAgãè̤'˜‡ð y óX¿–ÕNZáþ:f¾>l«wJwÐúa –xŸEI­›éF$I‹ þªZ:%¢3·ýh:dœ½«CWûÿ·Ï&Â9Xbh.ðä{Û‚»÷ŸŒ}ÊËÓ`¬ÃôåÕ7^Áïdolfin-1.3.0/doc/man/man1/dolfin-order.1.gz0000644000175000017500000000046112263014601020103 0ustar johannrjohannr‹oß Kdolfin-order.1]ÁnÂ0 @ïù «‡†5vF0`01ŠÚr@ŒCh½6Sâ°&Û¾~-‘ØØ%ŽŸìg˘Í!šÄËÙbÕ‹“É4‰ /¦sX^¦¢°úMqÏÖÕЃ%„0ä*yÞbÅ%x ¾"ØÌCaÇ\^‘¡`L·«x.Rcø+¸€¨sÝá§Ñ;,¿÷‘Ø]hÿBÏïÓ×DŒ@샼yjÝÙZ¤ÄäÖbïná£!ç•åö{hJ¨éhkï€|ŽÝÎa•¡VÎ;Ô²á¼:Ê™<ïh“Íãäú'éàT+ï‰áð#n¡ƒ¥-Kèö:e-‘íBV)Fr#µ8Ê’þw?ÛJ2“ƒ¤;ÙàýœÖW ñÄtc(©dolfin-1.3.0/doc/man/man1/dolfin-plot.1.gz0000644000175000017500000000050112263014601017741 0ustar johannrjohannr‹­ Mdolfin-plot.1mMoÂ0 †ïùgš;«± $ÖV´&Ê!%n‰”&]â ø÷ ë& mËÖã÷õ/V0Z¦›—ue›´Á„1ž¯ ™¿=3iu­LÔiKWm§޶m…‘‘Vá†H™fåïIšåëœñüÒ²i‹þT+1ã•ûCkÑ*}a*m+”‰a/±qˆØ;K‚ðiòðxøOZFetBÝ ãÓ¬X§I˜^d¬¬•õv _éÐj¶T¾Óâ I„•$Ü^ÂY€E|ð[ì^³¸Ý†ü>zô¤¬ iÕ7à°³Ž< 9ý^p¦•'ϵèÍñÔ É þøÎwÅ*ÝÞ}÷,<œ"BÕæF¢ó°±MSâ,<¿×‚sö r×—µdolfin-1.3.0/doc/copy_and_split_demo_doc.py0000644000175000017500000001221012263014601020614 0ustar johannrjohannr#!/usr/bin/env python # # Copyright (C) 2011 Marie E. Rognes # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Modified by Garth N. Wells, 2013 # # Utility script for splitting the cpp and python demos into separate # directory trees. Ignores cmake files for python. import sys, os, shutil import subprocess index_template = """ Collection of documented demos ============================== .. toctree:: :glob: :numbered: :maxdepth: 1 */*/%s/documentation %s .. note:: You must have a working installation of FEniCS in order to run the demos. """ run_cpp_demos = """ To run the C++ demos, follow the below procedure: * Download the source files i.e., ``main.cpp`` and ``CMakeLists.txt``, from the demo that you want to run. Some demos also contain UFL form files, e.g., ``Poisson.ufl``. Note that there may be multiple form files. * Compile the form files to generate code with DOLFIN wrappers:: $ ffc -l dolfin Poisson.ufl Generated .h files are usually distributed with the demos so you may choose to skip this step and use the provided header file directly, in this case ``Poisson.h``. If you wish to use optimized generated code, do:: $ ffc -O -l dolfin Poisson.ufl * Configure the demo build process:: $ cmake . * Compile the demo:: $ make * Run the created executable:: $ ./demo """ run_python_demos = """ To run the Python demos, follow the below procedure: * Download the source file, e.g., ``demo_poisson.py``, for the demo that you want to run. * Use the Python interpreter to run this file:: $ python demo.py """ run_instructions = {"cpp": run_cpp_demos, "python": run_python_demos} def generate_main_index_file(output_dir, language): filename = os.path.join(output_dir, "index.rst") file = open(filename, "w") text = index_template % (language, run_instructions[language]) file.write(text) file.close() def copy_split_demo_doc(input_dir, cpp_output_dir, python_output_dir): # Get list of files in demo directories try: # Get root path of git repo git_root = subprocess.check_output(["git", "rev-parse", "--show-toplevel"]).splitlines() # Get list of files tracked by git (relative to git root) git_files = subprocess.check_output(["git", "ls-files", "--full-name", input_dir]).splitlines() # Build list with full paths git_files = [os.path.join(git_root[0], f) for f in git_files] if not git_files: # Workaround for when we're not in a git repo git_files = subprocess.check_output(["find", input_dir]).splitlines() except: git_files = None def ignore_cpp(directory, contents): if directory[-3:] == "cpp": return contents elif git_files is not None: return [c for c in contents if not in_git(directory, c, git_files, ["cpp"]) ] else: return [] def ignore_python(directory, contents): if directory[-6:] == "python": return contents elif git_files is not None: return [c for c in contents if not in_git(directory, c, git_files, ["python"])] else: return [] # Copy demo tree to cpp_output_dir ignoring python demos try: shutil.rmtree(cpp_output_dir) except: pass shutil.copytree(input_dir, cpp_output_dir, ignore=ignore_python) # In addition, generate main index file for navigating demos generate_main_index_file(cpp_output_dir, "cpp") # Copy demo tree to python_output_dir ignoring cpp demos try: shutil.rmtree(python_output_dir) except: pass shutil.copytree(input_dir, python_output_dir, ignore=ignore_cpp) # In addition, generate main index file for navigating demos generate_main_index_file(python_output_dir, "python") def in_git(directory, name, git_files, exclude_dirs=[]): "Check whether file is version-controlled" # Make sure we have the real path (remove symlinks) directory = os.path.realpath(directory) # Get file full path f = os.path.join(directory, name) # Return true if a directory (git doesn't track directories) if os.path.isdir(f): if name in exclude_dirs: return False else: return True return f in git_files if __name__ == "__main__": args = sys.argv[1:] if len(args) != 3: usage= "Usage: python copy_and_split_demo_doc.py input_dir cpp_output_dir python_output_dir" print usage sys.exit(2) copy_split_demo_doc(args[0], args[1], args[2]) dolfin-1.3.0/doc/quick_reference_python.rst0000644000175000017500000000357212263014601020702 0ustar johannrjohannr .. title:: Quick Programmer's Reference (Python) ##################################### Quick Programmer's Reference (Python) ##################################### The complete :ref:`DOLFIN Programmer's Reference ` documents **all** the classes and functions in DOLFIN. As a **quicker** reference, here are some of the most commonly used classes and functions, organized by topic: .. tabularcolumns:: |c|c|c|c| .. list-table:: :widths: 20, 20, 20, 20 :header-rows: 1 :class: center * - Finite elements - Meshes - Variational problems - Linear systems * - :py:class:`FunctionSpace ` - :py:class:`Mesh ` - :py:func:`solve ` - :py:func:`assemble ` * - :py:class:`TestFunction `/:py:class:`TrialFunction ` - :py:class:`MeshFunction ` - :py:class:`LinearVariationalProblem ` - :py:class:`Vector ` * - :py:class:`Function ` - :py:class:`SubDomain ` - :py:class:`LinearVariationalSolver ` - :py:class:`Matrix ` * - :py:class:`Expression ` - - :py:class:`NonlinearVariationalProblem ` - :py:class:`LUSolver ` * - :py:class:`DirichletBC ` - - :py:class:`NonlinearVariationalSolver ` - :py:class:`KrylovSolver ` dolfin-1.3.0/doc/generate_main_index.py0000644000175000017500000000410612263014601017746 0ustar johannrjohannr#!/usr/bin/env python # # Copyright (C) 2011 Marie E. Rognes # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Utility script for creating main index.rst files in sphinx # documentation projects in DOLFIN. import os, sys index_template = """ %(formatting)s %(title)s %(formatting)s %(body)s .. toctree:: :hidden: programmers-reference/index demo/index quick_reference """ body = """ The Demos ========= :doc:`The demos ` (Collection of documented demo programs) The Programmer's Reference ========================== :ref:`Programmer's Reference Index ` (Classes, functions, terms) """ modules = """ DOLFIN modules ================== :ref:`DOLFIN Module Index ` (Modules) """ bodies = {"C++": body, "Python": (body + modules)} def generate_main_index_file(output_dir, language, version): filename = os.path.join(output_dir, "index.rst") file = open(filename, "w") title = "Documentation for DOLFIN-%s (%s)" % (version, language) text = index_template % {"title": title, "formatting": len(title)*"#", "body": bodies[language]} file.write(text) file.close() if __name__ == "__main__": args = sys.argv[1:] if len(args) != 3: usage= "Usage: python generate_main_index.py cpp_output_dir python_output_dir version" print usage sys.exit(2) generate_main_index_file(args[0], "C++", args[2]) generate_main_index_file(args[1], "Python", args[2]) dolfin-1.3.0/CMakeLists.txt0000644000175000017500000010622012263014601015402 0ustar johannrjohannr# Top level CMakeLists.txt file for DOLFIN # Require CMake 2.8 cmake_minimum_required(VERSION 2.8) #------------------------------------------------------------------------------ # Set project name and version number project(DOLFIN) set(DOLFIN_VERSION_MAJOR "1") set(DOLFIN_VERSION_MINOR "3") set(DOLFIN_VERSION_MICRO "0") set(DOLFIN_VERSION "${DOLFIN_VERSION_MAJOR}.${DOLFIN_VERSION_MINOR}.${DOLFIN_VERSION_MICRO}") #------------------------------------------------------------------------------ # Get GIT changeset, if available # Check for git find_program(GIT_FOUND git) if (GIT_FOUND) # Get the commit hash of the working branch execute_process(COMMAND git rev-parse HEAD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_COMMIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE ) else() set(GIT_COMMIT_HASH "unknown") endif() #------------------------------------------------------------------------------ # General configuration # Set CMake options, see `cmake --help-policy CMP000x` if (COMMAND cmake_policy) cmake_policy(SET CMP0003 NEW) cmake_policy(SET CMP0004 OLD) endif() # Set location of our FindFoo.cmake modules set(DOLFIN_CMAKE_DIR "${DOLFIN_SOURCE_DIR}/cmake" CACHE INTERNAL "") set(CMAKE_MODULE_PATH "${DOLFIN_CMAKE_DIR}/modules") # Make sure CMake uses the correct DOLFINConfig.cmake for tests and demos set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${CMAKE_CURRENT_BINARY_DIR}/dolfin) #------------------------------------------------------------------------------ # Configurable options for how we want to build option(BUILD_SHARED_LIBS "Build DOLFIN with shared libraries." ON) option(CMAKE_SKIP_RPATH "Do not add runtime paths when using shared libraries." OFF) option(CMAKE_INSTALL_RPATH_USE_LINK_PATH "Add paths to linker search and installed rpath." ON) option(CMAKE_USE_RELATIVE_PATHS "Use relative paths in makefiles and projects." OFF) option(DOLFIN_AUTO_DETECT_MPI "Detect MPI automatically - turn this off to use the MPI compiler wrappers directly via setting CXX, CXX, FC." ON) option(DOLFIN_DEBUG_UBLAS "Use extra uBLAS debugging." OFF) option(DOLFIN_ENABLE_CODE_COVERAGE "Enable code coverage." OFF) option(DOLFIN_WITH_LIBRARY_VERSION "Build with library version information." ON) option(DOLFIN_ENABLE_UNIT_TESTS "Enable unit tests." ON) option(DOLFIN_ENABLE_TESTING "Enable testing." OFF) option(DOLFIN_ENABLE_BENCHMARKS "Enable benchmark programs." OFF) option(DOLFIN_ENABLE_DOCS "Enable generation of documentation." ON) option(DOLFIN_SKIP_BUILD_TESTS "Skip build tests." OFF) #------------------------------------------------------------------------------ # Enable or disable optional packages # List optional packages set(OPTIONAL_PACKAGES "") list(APPEND OPTIONAL_PACKAGES "OpenMP") list(APPEND OPTIONAL_PACKAGES "MPI") list(APPEND OPTIONAL_PACKAGES "PETSc") list(APPEND OPTIONAL_PACKAGES "PETSc4py") list(APPEND OPTIONAL_PACKAGES "SLEPc") list(APPEND OPTIONAL_PACKAGES "TAO") list(APPEND OPTIONAL_PACKAGES "Trilinos") list(APPEND OPTIONAL_PACKAGES "UMFPACK") list(APPEND OPTIONAL_PACKAGES "CHOLMOD") list(APPEND OPTIONAL_PACKAGES "PaStiX") list(APPEND OPTIONAL_PACKAGES "SCOTCH") list(APPEND OPTIONAL_PACKAGES "ParMETIS") list(APPEND OPTIONAL_PACKAGES "CGAL") list(APPEND OPTIONAL_PACKAGES "zlib") list(APPEND OPTIONAL_PACKAGES "Python") list(APPEND OPTIONAL_PACKAGES "Sphinx") list(APPEND OPTIONAL_PACKAGES "HDF5") list(APPEND OPTIONAL_PACKAGES "VTK") list(APPEND OPTIONAL_PACKAGES "QT") # Add options foreach (OPTIONAL_PACKAGE ${OPTIONAL_PACKAGES}) string(TOUPPER "DOLFIN_ENABLE_${OPTIONAL_PACKAGE}" OPTION_NAME) option(${OPTION_NAME} "Compile with support for ${OPTIONAL_PACKAGE}." ON) endforeach() #------------------------------------------------------------------------------ # Package-specific options option(CGAL_DISABLE_ROUNDING_MATH_CHECK "Disable rounding math check in CGAL. This permits Valgrind to run." OFF) #------------------------------------------------------------------------------ # Compiler flags # Default build type (can be overridden by user) if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build, options are: Debug Developer MinSizeRel Release RelWithDebInfo." FORCE) endif() # Check for some compiler flags include(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG(-pipe HAVE_PIPE) if (HAVE_PIPE) set(DOLFIN_CXX_DEVELOPER_FLAGS "-pipe ${DOLFIN_CXX_DEVELOPER_FLAGS}") endif() # Add some strict compiler checks CHECK_CXX_COMPILER_FLAG("-Wall -Werror -pedantic" HAVE_PEDANTIC) if (HAVE_PEDANTIC) set(DOLFIN_CXX_DEVELOPER_FLAGS "-Wall -Werror -pedantic ${DOLFIN_CXX_DEVELOPER_FLAGS}") endif() CHECK_CXX_COMPILER_FLAG(-std=c++98 HAVE_STD) if (HAVE_STD AND CMAKE_COMPILER_IS_GNUCXX) set(DOLFIN_CXX_DEVELOPER_FLAGS "-std=c++98 ${DOLFIN_CXX_DEVELOPER_FLAGS}") endif() # Debug flags CHECK_CXX_COMPILER_FLAG(-g HAVE_DEBUG) if (HAVE_DEBUG) set(DOLFIN_CXX_DEVELOPER_FLAGS "-g ${DOLFIN_CXX_DEVELOPER_FLAGS}") endif() CHECK_CXX_COMPILER_FLAG(-O2 HAVE_O2_OPTIMISATION) if (HAVE_O2_OPTIMISATION) set(DOLFIN_CXX_DEVELOPER_FLAGS "-O2 ${DOLFIN_CXX_DEVELOPER_FLAGS}") endif() # Set 'Developer' build type flags set(CMAKE_CXX_FLAGS_DEVELOPER "${DOLFIN_CXX_DEVELOPER_FLAGS}" CACHE STRING "Flags used by the compiler during development." FORCE) # Do not debug uBLAS unless requested if (NOT DOLFIN_DEBUG_UBLAS) list(APPEND DOLFIN_CXX_DEFINITIONS "-DBOOST_UBLAS_NDEBUG") endif() # FIXME: Do we want to add -DDEBUG to RelWithDebInfo? # Add debug definitions if (CMAKE_BUILD_TYPE STREQUAL "Developer" OR CMAKE_BUILD_TYPE STREQUAL "Debug") list(APPEND DOLFIN_CXX_DEFINITIONS "-DDEBUG") endif() # Add flags for generating code coverage reports if (DOLFIN_ENABLE_CODE_COVERAGE AND CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage") endif() # Settings for Intel compilers if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") # Use -isystem incluse flag with Intel compiler set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem ") # Stop spurious warnings from older Intel compilers if("${CMAKE_CXX_COMPILER_VERSION}" LESS "13") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd654,1125") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -wd654,1125") set(CMAKE_CXX_FLAGS_DEVELOPER "${CMAKE_CXX_FLAGS_DEVELOPER} -wd654,1125") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -wd654,1125") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -wd654,1125") endif() endif() # Set system include flags to get around CMake bug on OSX with gcc # See http://public.kitware.com/Bug/print_bug_page.php?bug_id=10837 if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem ") endif() if (APPLE) set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-isystem ") set(CMAKE_CXX_FLAGS_DEVELOPER "${CMAKE_CXX_FLAGS_DEVELOPER} -Wno-long-long") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wno-long-long") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -Wno-long-long") endif() #------------------------------------------------------------------------------ # Enable Fortran if available. Used for some configuration tests (e.g. BLAS) # This workaround address a CMake bug (http://cmake.org/Bug/view.php?id=9220) include(language_support_v2) workaround_9220(Fortran Fortran_language_works) if (Fortran_language_works) enable_language(Fortran OPTIONAL) endif() #------------------------------------------------------------------------------ # Check for MPI and OpenMP # FIXME: Should be set CMake to use the MPI compiler wrappers? if (DOLFIN_ENABLE_MPI) if (DOLFIN_AUTO_DETECT_MPI) find_package(MPI) if (MPI_CXX_FOUND) set(MPI_FOUND TRUE) endif() else() # Assume user has set MPI compiler wrappers (via CXX, etc or CMAKE_CXX_COMPILER, etc) set(MPI_FOUND TRUE) set(MPI_CXX_FOUND TRUE) set(MPI_C_FOUND TRUE) endif() endif() if (DOLFIN_ENABLE_OPENMP) find_package(OpenMP) include(CheckOpenMP) check_openmp_unsigned_int_loop_control_variable(OPENMP_UINT_TEST_RUNS) if (NOT OPENMP_UINT_TEST_RUNS) set(OPENMP_FOUND FALSE) endif() endif() #------------------------------------------------------------------------------ # Run tests to find required packages # Check for Boost set(BOOST_ROOT $ENV{BOOST_DIR}) if (BOOST_ROOT) set(Boost_NO_SYSTEM_PATHS on) endif() # Prevent FindBoost.cmake from looking for system Boost{foo}.cmake files set(Boost_NO_BOOST_CMAKE true) set(Boost_USE_MULTITHREADED $ENV{BOOST_USE_MULTITHREADED}) set(Boost_ADDITIONAL_VERSIONS 1.43 1.43.0 1.44 1.44.0 1.45 1.45.0 1.46 1.46.0 1.46.1 1.47 1.47.0 1.48 1.48.0 1.49 1.49.0 1.50 1.50.0) find_package(Boost 1.36 QUIET REQUIRED) set(DOLFIN_BOOST_COMPONENTS filesystem program_options system thread iostreams) if (DOLFIN_ENABLE_MPI AND MPI_CXX_FOUND) list(APPEND DOLFIN_BOOST_COMPONENTS mpi serialization) endif() # Boost timer was not a separate Boost component until version 1.48 if ("${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}" VERSION_GREATER "1.47") list(APPEND DOLFIN_BOOST_COMPONENTS timer chrono) endif() find_package(Boost COMPONENTS ${DOLFIN_BOOST_COMPONENTS} REQUIRED) # Check for required package UFC find_package(UFC 2.3.0 QUIET HINTS ${UFC_DIR}) if (NOT UFC_FOUND) message(FATAL_ERROR "Could not find a configuration file for package UFC that is " "compatible with requested version 2.3.0.\n" "Set UFC_DIR to the directory containing a CMake configuration file for UFC.") else() message(STATUS "UFC version: ${UFC_VERSION_STRING}") endif() # Check for required package Eigen3 find_package(Eigen3 3.0.0 REQUIRED) # Check for required package LibXml2 find_package(LibXml2 REQUIRED) #------------------------------------------------------------------------------ # Run tests to find optional packages # Note: Check for Python interpreter even when Python is disabled because it # is used to get the installation path for dolfin_utils find_package(PythonInterp 2) if (DOLFIN_ENABLE_PYTHON) # Set variables to help find Python library that is compatible with # interpreter if (PYTHONINTERP_FOUND) # Get Python include path from Python interpretter execute_process(COMMAND "${PYTHON_EXECUTABLE}" -c "import distutils.sysconfig, sys; sys.stdout.write(distutils.sysconfig.get_python_inc())" OUTPUT_VARIABLE _PYTHON_INCLUDE_PATH RESULT_VARIABLE _PYTHON_INCLUDE_RESULT) # Get Python library path from interpreter execute_process(COMMAND "${PYTHON_EXECUTABLE}" -c "import os, sys, inspect; sys.stdout.write(os.path.split(os.path.split(inspect.getfile(inspect))[0])[0])" OUTPUT_VARIABLE _PYTHON_LIB_PATH RESULT_VARIABLE _PYTHON_LIB_RESULT) # Set include path, if returned by interpreter if ("${_PYTHON_INCLUDE_RESULT}" STREQUAL "0") set(PYTHON_INCLUDE_DIR ${_PYTHON_INCLUDE_PATH}) endif() # Add a search path for Python library based on output from # iterpreter if ("${_PYTHON_LIB_RESULT}" STREQUAL "0") set(CMAKE_LIBRARY_PATH ${_PYTHON_LIB_PATH}) endif() # Find Pythons livs find_package(PythonLibs ${PYTHON_VERSION_STRING} EXACT QUIET REQUIRED) endif() # If Python is found, check for NumPy and SWIG if (PYTHONINTERP_FOUND AND PYTHONLIBS_FOUND) find_package(NumPy REQUIRED) find_package(SWIG REQUIRED) if (${SWIG_VERSION} LESS 2.0) message(FATAL_ERROR " DOLFIN requires SWIG version 2.0 or greater. You have version ${SWIG_VERSION}. Set DOLFIN_ENABLE_PYTHON to False or install correct SWIG version.") endif() include(UseSWIG) set(PYTHON_FOUND TRUE) endif() endif() # Check for PETSc, SLEPc, TAO and petsc4py if (DOLFIN_ENABLE_PETSC) find_package(PETSc 3.2) if (PETSC_FOUND AND DOLFIN_ENABLE_SLEPC) find_package(SLEPc 3.2) endif() if (PETSC_FOUND AND DOLFIN_ENABLE_TAO) find_package(TAO) endif() if (PETSC_FOUND AND PYTHON_FOUND AND DOLFIN_ENABLE_PETSC4PY) find_package(PETSc4py) if (PETSC4PY_FOUND) if (NOT (${PETSC4PY_VERSION_MAJOR} EQUAL ${PETSC_VERSION_MAJOR} AND ${PETSC4PY_VERSION_MINOR} EQUAL ${PETSC_VERSION_MINOR})) message(WARNING "PETSc version ${PETSC_VERSION} and petsc4py version ${PETSC4PY_VERSION} do not match. Disabling petsc4py support") set(PETSC4PY_FOUND FALSE) endif() endif() endif() endif() # Check for ParMETIS and SCOTCH if (DOLFIN_ENABLE_MPI AND MPI_C_FOUND) if (DOLFIN_ENABLE_PARMETIS) find_package(ParMETIS 4.0.2) endif() if (DOLFIN_ENABLE_SCOTCH) find_package(SCOTCH) endif() endif() # Check for UMFPACK if (DOLFIN_ENABLE_UMFPACK) find_package(AMD QUIET) find_package(BLAS QUIET) find_package(UMFPACK QUIET) endif() # Check for CHOLMOD if (DOLFIN_ENABLE_CHOLMOD) find_package(CHOLMOD QUIET) endif() # Check for HDF5 if (DOLFIN_ENABLE_HDF5) if (NOT DEFINED ENV{HDF5_ROOT}) set(ENV{HDF5_ROOT} "$ENV{HDF5_DIR}") endif() find_package(HDF5) # Check that HDF5 has parallel support if (HDF5_FOUND) if (DOLFIN_ENABLE_MPI) if (NOT (HDF5_IS_PARALLEL OR HDF5_ENABLE_PARALLEL)) message(STATUS "HDF5 has been found, but is missing parallel support. It will not be enabled.") set(HDF5_FOUND false) endif() else() message(STATUS "HDF5 has been found, but MPI support is missing. It will not be enabled.") set(HDF5_FOUND false) endif() endif() endif() # Check for PaStiX if (DOLFIN_ENABLE_PASTIX) find_package(PaStiX 5.2.1) endif() # Check for Trilinos and the requires Trilinos packages if (DOLFIN_ENABLE_TRILINOS) message(STATUS "Checking for Trilinos") find_package(Trilinos PATHS ${TRILINOS_DIR} ${Trilinos_DIR} $ENV{TRILINOS_DIR} QUIET) set(DOLFIN_TRILINOS_PACKAGES "Epetra;Zoltan;ML;Ifpack;Amesos") if ("${Trilinos_VERSION}" VERSION_LESS "11.0.0") set(Trilinos_FOUND FALSE) message(STATUS "Unable to find Trilinos (>= 11.0.0)") endif() # Check for required packages set(DOLFIN_TRILINOS_PACKAGES_FOUND false) if (Trilinos_FOUND) message(STATUS " Trilinos version ${Trilinos_VERSION} found. Checking for components") # Check that necessary packages are enabled set(DOLFIN_TRILINOS_PACKAGES_FOUND true) foreach (required_package ${DOLFIN_TRILINOS_PACKAGES}) # Search for required package in list of available packages set(${required_trilinos_package}_found false) list(FIND Trilinos_PACKAGE_LIST ${required_package} required_trilinos_package_found) # Print whether or not package is found if (required_trilinos_package_found) message(STATUS " ${required_package} found") else() message(STATUS " Trilinos found, but required package ${required_package} not found. Trilinos will be disabled.") set(DOLFIN_TRILINOS_PACKAGES_FOUND false) break() endif() endforeach() # Add package libraries if all packages have been found if (DOLFIN_TRILINOS_PACKAGES_FOUND) message(STATUS " All necessary Trilinos components found. Trilinos will be enabled.") set(DOLFIN_TRILINOS_DEFINITIONS) # Loop over each package foreach (package ${DOLFIN_TRILINOS_PACKAGES}) # Loop over libs and get full path foreach (lib ${${package}_LIBRARIES}) find_library(TRILINOS_LIB_${lib} ${lib} PATHS ${${package}_LIBRARY_DIRS} NO_DEFAULT_PATH) # Also search the default paths find_library(TRILINOS_LIB_${lib} ${lib}) if (TRILINOS_LIB_${lib}) list(APPEND DOLFIN_TRILINOS_LIBRARIES ${TRILINOS_LIB_${lib}}) endif() endforeach() endforeach() # Remove duplicates list(REVERSE DOLFIN_TRILINOS_LIBRARIES) list(REMOVE_DUPLICATES DOLFIN_TRILINOS_LIBRARIES) list(REVERSE DOLFIN_TRILINOS_LIBRARIES) endif() else() message(STATUS "Trilinos could not be found") endif() endif() # Check for CGAL if (DOLFIN_ENABLE_CGAL) find_package(CGAL 4.1) endif() # Check for zlib if (DOLFIN_ENABLE_ZLIB) find_package(ZLIB) endif() # Check for cppunit if (DOLFIN_ENABLE_UNIT_TESTS) find_package(CppUnit) endif() # Check for Sphinx if (DOLFIN_ENABLE_DOCS AND PYTHON_FOUND) find_package(Sphinx 1.1.0) endif() # Check for Qt4 if (DOLFIN_ENABLE_QT) find_package(Qt4) endif() # Check for VTK if (DOLFIN_ENABLE_VTK) find_package(VTK HINTS ${VTK_DIR} $ENV{VTK_DIR}) set(VTK_VERSION "${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}") if (VTK_FOUND) if ("${VTK_VERSION}" VERSION_LESS "5.2") set(VTK_FOUND FALSE) message(WARNING "Unable to find VTK (>= 5.2)") else() message(STATUS "Found VTK: ${VTK_DIR} (found version \"${VTK_VERSION}\")") if ("${VTK_VERSION}" VERSION_EQUAL "6.0" OR "${VTK_VERSION}" VERSION_GREATER "6.0") message(STATUS "VTK 6.0 and above is not yet supported. VTK disabled.") set(VTK_FOUND FALSE) endif() endif() endif() endif() #------------------------------------------------------------------------------ # Print summary of found and not found optional packages # FIXME: Use FeatureSummary.cmake to do this # Gather information about which optional packages were found and not found set(OPTIONAL_PACKAGES_FOUND "") set(OPTIONAL_PACKAGES_NOT_FOUND "") set(OPTIONAL_PACKAGES_NOT_ENABLED "") foreach (OPTIONAL_PACKAGE ${OPTIONAL_PACKAGES}) string(TOUPPER "${OPTIONAL_PACKAGE}" PKG) if (${PKG}_FOUND OR ${OPTIONAL_PACKAGE}_FOUND) list(APPEND OPTIONAL_PACKAGES_FOUND ${PKG}) elseif (DOLFIN_ENABLE_${PKG}) list(APPEND OPTIONAL_PACKAGES_NOT_FOUND ${PKG}) else() list(APPEND OPTIONAL_PACKAGES_NOT_ENABLED ${PKG}) endif() endforeach() message(STATUS "") # Print information about packages that were found if (OPTIONAL_PACKAGES_FOUND) message(STATUS "The following optional packages were found:") message(STATUS "-------------------------------------------") foreach (OPTIONAL_PACKAGE ${OPTIONAL_PACKAGES_FOUND}) string(TOUPPER "${OPTIONAL_PACKAGE}" PKG) message(STATUS "(OK) ${OPTIONAL_PACKAGE}") endforeach() message(STATUS "") endif() # Print information about packages that were not enabled if (OPTIONAL_PACKAGES_NOT_ENABLED) message(STATUS "The following optional packages were not enabled:") message(STATUS "-------------------------------------------------") foreach (OPTIONAL_PACKAGE ${OPTIONAL_PACKAGES_NOT_ENABLED}) string(TOUPPER "${OPTIONAL_PACKAGE}" PKG) message(STATUS "(--) ${OPTIONAL_PACKAGE}") endforeach() message(STATUS "") endif() # Print information about packages that were not found if (OPTIONAL_PACKAGES_NOT_FOUND) message(STATUS "The following optional packages were not found:") message(STATUS "-----------------------------------------------") foreach (OPTIONAL_PACKAGE ${OPTIONAL_PACKAGES_NOT_FOUND}) string(TOUPPER "${OPTIONAL_PACKAGE}" PKG) message(STATUS "(**) ${OPTIONAL_PACKAGE}") endforeach() message(STATUS "") endif() #------------------------------------------------------------------------------ # Get installation paths for Python modules (pure and platform-dependent) if (PYTHONINTERP_FOUND) if (NOT DEFINED DOLFIN_INSTALL_PYTHON_MODULE_DIR) # Get path for platform-dependent Python modules (since we install a binary libary) # Python command string to discover module install location if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(PYTHON_LIB_DISCOVER_STR "import sys, distutils.sysconfig; sys.stdout.write(distutils.sysconfig.get_python_lib(plat_specific=True))") else() set(PYTHON_LIB_DISCOVER_STR "import sys, distutils.sysconfig; sys.stdout.write(distutils.sysconfig.get_python_lib(plat_specific=True, prefix='${CMAKE_INSTALL_PREFIX}'))") endif() # Probe Python interpreter execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "${PYTHON_LIB_DISCOVER_STR}" OUTPUT_VARIABLE DOLFIN_INSTALL_PYTHON_MODULE_DIR ) set(DOLFIN_INSTALL_PYTHON_MODULE_DIR ${DOLFIN_INSTALL_PYTHON_MODULE_DIR} CACHE PATH "Python extension module installation directory.") endif() if (NOT DEFINED DOLFIN_INSTALL_PYTHON_PURE_MODULE_DIR) # Get path for pure Python modules # Python command string to discover module install location if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(PYTHON_LIB_DISCOVER_STR "import sys, distutils.sysconfig; sys.stdout.write(distutils.sysconfig.get_python_lib(plat_specific=False))") else() set(PYTHON_LIB_DISCOVER_STR "import sys, distutils.sysconfig; sys.stdout.write(distutils.sysconfig.get_python_lib(plat_specific=False, prefix='${CMAKE_INSTALL_PREFIX}'))") endif() # Probe Pyton interpreter execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "${PYTHON_LIB_DISCOVER_STR}" OUTPUT_VARIABLE DOLFIN_INSTALL_PYTHON_PURE_MODULE_DIR ) set(DOLFIN_INSTALL_PYTHON_PURE_MODULE_DIR ${DOLFIN_INSTALL_PYTHON_PURE_MODULE_DIR} CACHE PATH "Python module installation directory.") endif() endif() #------------------------------------------------------------------------------ # Installation of DOLFIN Python module if (DOLFIN_ENABLE_PYTHON AND PYTHON_FOUND) install(DIRECTORY ${CMAKE_SOURCE_DIR}/site-packages/dolfin DESTINATION ${DOLFIN_INSTALL_PYTHON_MODULE_DIR} USE_SOURCE_PERMISSIONS COMPONENT RuntimeLibraries PATTERN "*.in" EXCLUDE ) configure_file(${CMAKE_SOURCE_DIR}/site-packages/dolfin/common/globalparameters.py.in ${CMAKE_BINARY_DIR}/globalparameters.py @ONLY) install(FILES ${CMAKE_BINARY_DIR}/globalparameters.py DESTINATION ${DOLFIN_INSTALL_PYTHON_MODULE_DIR}/dolfin/common/ COMPONENT RuntimeLibraries ) endif() #------------------------------------------------------------------------------ # Installation of dolfin_utils if (DOLFIN_INSTALL_PYTHON_MODULE_DIR) install(DIRECTORY ${CMAKE_SOURCE_DIR}/site-packages/dolfin_utils DESTINATION ${DOLFIN_INSTALL_PYTHON_PURE_MODULE_DIR} USE_SOURCE_PERMISSIONS) # Add target "install_dolfin_utils" for installing dolfin_utils # without building and install the rest of DOLFIN add_custom_target(install_dolfin_utils COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/site-packages/dolfin_utils" "${DOLFIN_INSTALL_PYTHON_MODULE_DIR}/dolfin_utils" COMMENT "Installing dolfin_utils in ${DOLFIN_INSTALL_PYTHON_MODULE_DIR}/dolfin_utils") endif() #------------------------------------------------------------------------------ # Installation of docstrings #install(DIRECTORY ${CMAKE_SOURCE_DIR}/site-packages/dolfin/docstrings # DESTINATION ${DOLFIN_INSTALL_PYTHON_MODULE_DIR}/dolfin # USE_SOURCE_PERMISSIONS) #------------------------------------------------------------------------------ # Installation of DOLFIN library # Append the library version information to the library target properties if (DOLFIN_WITH_LIBRARY_VERSION) string(REPLACE "+" "" DOLFIN_LIBRARY_VERSION ${DOLFIN_VERSION}) # This setting of SOVERSION assumes that any API change # will increment either the minor or major version number. set(DOLFIN_LIBRARY_PROPERTIES ${DOLFIN_LIBRARY_PROPERTIES} VERSION ${DOLFIN_LIBRARY_VERSION} SOVERSION ${DOLFIN_VERSION_MAJOR}.${DOLFIN_VERSION_MINOR} ) endif() # Set DOLFIN install sub-directories set(DOLFIN_BIN_DIR "bin" CACHE PATH "Binary installation directory.") set(DOLFIN_LIB_DIR "lib" CACHE PATH "Library installation directory.") set(DOLFIN_INCLUDE_DIR "include" CACHE PATH "C/C++ header installation directory.") set(DOLFIN_PKGCONFIG_DIR "lib/pkgconfig" CACHE PATH "pkg-config file installation directory.") set(DOLFIN_SHARE_DIR "share/dolfin" CACHE PATH "Shared data installation directory.") set(DOLFIN_MAN_DIR "share/man" CACHE PATH "Manual page installation directory.") set(DOLFIN_DOC_DIR "${DOLFIN_SHARE_DIR}/doc" CACHE PATH "DOLFIN Documentation directory.") set(DOLFIN_ETC_DIR "etc" CACHE PATH "Configuration file directory.") # Add source directory add_subdirectory(dolfin) #------------------------------------------------------------------------------ # Installation of DOLFIN utilities set(DOLFIN_UTILITIES ${DOLFIN_SOURCE_DIR}/scripts/dolfin-convert/dolfin-convert ${DOLFIN_SOURCE_DIR}/scripts/dolfin-order/dolfin-order ${DOLFIN_SOURCE_DIR}/scripts/dolfin-plot/dolfin-plot) install(FILES ${DOLFIN_UTILITIES} DESTINATION ${DOLFIN_BIN_DIR} PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE COMPONENT RuntimeExecutables) #------------------------------------------------------------------------------ # Installation of DOLFIN manual pages install(DIRECTORY ${DOLFIN_SOURCE_DIR}/doc/man/ DESTINATION ${DOLFIN_MAN_DIR} USE_SOURCE_PERMISSIONS COMPONENT RuntimeExecutables) #------------------------------------------------------------------------------ # Generate and install helper file dolfin.conf # FIXME: Can CMake provide the library path name variable? if (APPLE) set(OS_LIBRARY_PATH_NAME "DYLD_LIBRARY_PATH") else() set(OS_LIBRARY_PATH_NAME "LD_LIBRARY_PATH") endif() # FIXME: not cross-platform compatible # Create and install dolfin.conf file configure_file(${DOLFIN_CMAKE_DIR}/templates/dolfin.conf.in ${CMAKE_BINARY_DIR}/dolfin.conf @ONLY) install(FILES ${CMAKE_BINARY_DIR}/dolfin.conf DESTINATION ${DOLFIN_SHARE_DIR} COMPONENT Development) #------------------------------------------------------------------------------ # Generate and install helper file dolfin-version # FIXME: not cross-platform compatible # Create and install dolfin-version file configure_file(${DOLFIN_CMAKE_DIR}/templates/dolfin-version.in ${CMAKE_BINARY_DIR}/dolfin-version @ONLY) install(FILES ${CMAKE_BINARY_DIR}/dolfin-version DESTINATION ${DOLFIN_BIN_DIR} PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE COMPONENT RuntimeExecutables) #------------------------------------------------------------------------------ # Generate and install utility script dolfin-get-demos configure_file(${DOLFIN_CMAKE_DIR}/templates/dolfin-get-demos.in ${CMAKE_BINARY_DIR}/dolfin-get-demos @ONLY) install(FILES ${CMAKE_BINARY_DIR}/dolfin-get-demos DESTINATION ${DOLFIN_BIN_DIR} PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE COMPONENT RuntimeExecutables) #------------------------------------------------------------------------------ # Generate form files for tests, bench, demos and dolfin if not exists # FIXME: Generate files in Build directory instead, at least for bench, demo and tests set(COPY_DEMO_TEST_DEMO_DATA FALSE) if (NOT EXISTS ${DOLFIN_SOURCE_DIR}/demo/documented/poisson/cpp/Poisson.h) message(STATUS "") message(STATUS "Generating form files in demo, test, bench and dolfin directories. May take some time...") message(STATUS "----------------------------------------------------------------------------------------") execute_process( COMMAND ${PYTHON_EXECUTABLE} ${DOLFIN_SOURCE_DIR}/cmake/scripts/generate-form-files WORKING_DIRECTORY ${DOLFIN_SOURCE_DIR} RESULT_VARIABLE FORM_GENERATION_RESULT OUTPUT_VARIABLE FORM_GENERATION_OUTPUT ERROR_VARIABLE FORM_GENERATION_OUTPUT OUTPUT_QUIET) if (FORM_GENERATION_RESULT) # Cleanup so download is triggered next time we run cmake if (EXISTS ${DOLFIN_SOURCE_DIR}/demo/documented/poisson/cpp/Poisson.h) file(REMOVE ${DOLFIN_SOURCE_DIR}/demo/documented/poisson/cpp/Poisson.h) endif() message(FATAL_ERROR "Generation of form files failed: \n${FORM_GENERATION_OUTPUT}") endif() set(COPY_DEMO_TEST_DEMO_DATA TRUE) endif() #------------------------------------------------------------------------------ # Generate CMakeLists.txt files for tests, bench and demos if not exists # FIXME: Generate files in Build directory instead? # NOTE: We need to call this script after generate-formfiles if (NOT EXISTS ${DOLFIN_SOURCE_DIR}/demo/documented/poisson/cpp/CMakeLists.txt) message(STATUS "") message(STATUS "Generating CMakeLists.txt files in demo, test and bench directories") message(STATUS "-------------------------------------------------------------------") execute_process( COMMAND ${PYTHON_EXECUTABLE} ${DOLFIN_SOURCE_DIR}/cmake/scripts/generate-cmakefiles WORKING_DIRECTORY ${DOLFIN_SOURCE_DIR} RESULT_VARIABLE CMAKE_GENERATION_RESULT OUTPUT_VARIABLE CMAKE_GENERATION_OUTPUT ERROR_VARIABLE CMAKE_GENERATION_OUTPUT OUTPUT_QUIET) if (CMAKE_GENERATION_RESULT) # Cleanup so download is triggered next time we run cmake if (EXISTS ${DOLFIN_SOURCE_DIR}/demo/documented/poisson/cpp/CMakeLists.txt) file(REMOVE ${DOLFIN_SOURCE_DIR}/demo/documented/poisson/cpp/CMakeLists.txt) endif() message(FATAL_ERROR "Generation of CMakeLists.txt files failed: \n${CMAKE_GENERATION_OUTPUT}") endif() set(COPY_DEMO_TEST_DEMO_DATA TRUE) endif() #------------------------------------------------------------------------------ # Check if data is downloaded if (NOT EXISTS ${DOLFIN_SOURCE_DIR}/demo/documented/eigenvalue/box_with_dent.xml.gz) # FIXME: What if we do not have internet connection message(STATUS "") message(STATUS "Download demo and test data. May take some time...") message(STATUS "--------------------------------------------------") execute_process( COMMAND ${DOLFIN_SOURCE_DIR}/cmake/scripts/download-demo-data WORKING_DIRECTORY ${DOLFIN_SOURCE_DIR} RESULT_VARIABLE DOWNLOAD_DEMO_DATA_RESULT OUTPUT_VARIABLE DOWNLOAD_DEMO_DATA_OUTPUT ERROR_VARIABLE DOWNLOAD_DEMO_DATA_OUTPUT OUTPUT_QUIET) if (DOWNLOAD_DEMO_DATA_RESULT) # Cleanup so download is triggered next time we run cmake if (EXISTS ${DOLFIN_SOURCE_DIR}/demo/documented/eigenvalue/box_with_dent.xml.gz) file(REMOVE ${DOLFIN_SOURCE_DIR}/demo/documented/eigenvalue/box_with_dent.xml.gz) endif() message(WARNING "Download failed: \n${DOWNLOAD_DEMO_DATA_OUTPUT}") endif() set(COPY_DEMO_TEST_DEMO_DATA TRUE) endif() # If data have been generated or downloaded in the demo/bench/test direcories # we need to copy them to the build directories # FIXME: We should probably just generate them directly in the build directory... if (COPY_DEMO_TEST_DEMO_DATA) message(STATUS "") message(STATUS "Copying demo and test data to build directory.") message(STATUS "----------------------------------------------") execute_process( COMMAND ${PYTHON_EXECUTABLE} ${DOLFIN_SOURCE_DIR}/cmake/scripts/copy-test-demo-data ${CMAKE_CURRENT_BINARY_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} RESULT_VARIABLE COPY_DEMO_DATA_RESULT OUTPUT_VARIABLE COPY_DEMO_DATA_OUTPUT ERROR_VARIABLE COPY_DEMO_DATA_OUTPUT OUTPUT_QUIET) if (COPY_DEMO_DATA_RESULT) message(FATAL_ERROR "Copy demo data failed: \n${COPY_DEMO_DATA_OUTPUT}") endif() endif() #------------------------------------------------------------------------------ # Add demos and install demo source files and mesh files # Add demo but do not add to default target add_subdirectory(demo EXCLUDE_FROM_ALL) # Set make program if ("${CMAKE_GENERATOR}" STREQUAL "Unix Makefiles") set(MAKE_PROGRAM "$(MAKE)") else() set(MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM}") endif() # Add target "demo" for building the demos add_custom_target(demo COMMAND ${MAKE_PROGRAM} DEPENDS copy_data_test_demo WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/demo") # Install the demo source files install(DIRECTORY demo DESTINATION ${DOLFIN_SHARE_DIR} FILES_MATCHING PATTERN "CMakeLists.txt" PATTERN "*.cpp" PATTERN "*.ufl" PATTERN "*.h" PATTERN "*.py" PATTERN "*.xml*" PATTERN "*.off" PATTERN "CMakeFiles" EXCLUDE) # Install meshes (data directory) install(DIRECTORY data DESTINATION ${DOLFIN_SHARE_DIR}) #------------------------------------------------------------------------------ # Generate documentation if (DOLFIN_ENABLE_DOCS) if (NOT SPHINX_FOUND) message(STATUS "Disabling generation of documentation because Sphinx is missing.") else() add_subdirectory(doc) endif() endif() #------------------------------------------------------------------------------ # Add tests and benchmarks if (DOLFIN_ENABLE_BENCHMARKS) # Add bench but do not add to default target add_subdirectory(bench EXCLUDE_FROM_ALL) # Add target "bench" for building benchmarks add_custom_target(bench COMMAND ${MAKE_PROGRAM} WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bench") # Copy files needed to run benchmarks in build directory file(COPY bench DESTINATION ${CMAKE_CURRENT_BINARY_DIR} FILES_MATCHING PATTERN "*" PATTERN "CMakeFiles" EXCLUDE) # Add target "run_bench" for running benchmarks add_custom_target(run_bench COMMAND ${PYTHON_EXECUTABLE} "bench.py" DEPENDS bench WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bench") endif() if (CPPUNIT_FOUND) # Add test but do not add to default target add_subdirectory(test EXCLUDE_FROM_ALL) # Add target "test" for building tests add_custom_target(test COMMAND ${MAKE_PROGRAM} WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test") endif() if (DOLFIN_ENABLE_TESTING) # Add target "run_memorytests" for running memory tests add_custom_target(copy_data_test_demo COMMAND ${PYTHON_EXECUTABLE} ${DOLFIN_SOURCE_DIR}/cmake/scripts/copy-test-demo-data ${CMAKE_CURRENT_BINARY_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) # Add target "run_memorytests" for running memory tests add_custom_target(run_memorytests COMMAND ${PYTHON_EXECUTABLE} "test.py" DEPENDS copy_data_test_demo WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test/memory") # Add target "run_regressiontests" for running regression tests add_custom_target(run_regressiontests COMMAND ${PYTHON_EXECUTABLE} "test.py" DEPENDS copy_data_test_demo demo WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test/regression") # Add target "run_systemtests" for running system tests add_custom_target(run_systemtests COMMAND ${PYTHON_EXECUTABLE} "test.py" DEPENDS copy_data_test_demo WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test/system") # Add target "run_unittests" for running unit tests add_custom_target(run_unittests COMMAND ${PYTHON_EXECUTABLE} "test.py" DEPENDS copy_data_test_demo test WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test/unit") # Add target "run_quicktest" for running only Python unit tests add_custom_target(run_quicktest COMMAND ${PYTHON_EXECUTABLE} test.py --only-python DEPENDS copy_data_test_demo WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test/unit") # Add target "run_doctest" for running documentation tests add_custom_target(run_doctest COMMAND ${PYTHON_EXECUTABLE} test.py DEPENDS copy_data_test_demo WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test/documentation") # Add target "runtests" for running all tests add_custom_target(runtests ${PYTHON_EXECUTABLE} "test.py" DEPENDS copy_data_test_demo demo test WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/test") endif() #------------------------------------------------------------------------------ # Add "make uninstall" target configure_file( "${DOLFIN_CMAKE_DIR}/templates/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") #------------------------------------------------------------------------------ # Print post-install message add_subdirectory(cmake/post-install) #------------------------------------------------------------------------------ dolfin-1.3.0/.gitignore0000644000175000017500000000271112263014601014632 0ustar johannrjohannr# Compiled source *.o *.Plo *.Po *.lo *.la *.a *.os *.pyc *.so *.pc *.pyd *.def *.dll *.exe *.dylib dolfin/libdolfin.so* # FFC generated code in library dolfin/ale/Poisson*D.h # Log files *.log # Install directory /local /local.* # SWIG generated files dolfin/swig/**/**/*.py dolfin/swig/**/**/*.h dolfin/swig/**/**/*.cc dolfin/swig/**/**/*.cxx dolfin/swig/**/**/module.i dolfin/swig/**/**/dependencies.txt swigimportinfo.py # Documentation docstrings.i # Configuration files dolfin.conf dolfin-version dolfin-config.cmake DOLFINConfig.cmake DOLFINConfigVersion.cmake UseDOLFIN.cmake dolfin-config-version.cmake # Demos and tests demo_* test_* build_demo.* test/unit/mesh/{cpp,python}/*.{xml,m} test/unit/parameter/{cpp,python}/*.{xml,xml.gz} bench/**/**/cpp/forms/*.h bench/**/**/cpp/*.h test/unit/**/python/*.xml test/unit/**/cpp/*.xml # FFC generated demo files demo/**/**/cpp/*.h demo/pde/cahn-hilliard/cpp/CahnHilliard2D.cpp demo/pde/cahn-hilliard/cpp/CahnHilliard3D.cpp # QT generated code moc_* # Temporaries *~ # Compressed files *.xz *.gz *.zs-old # Data files *.pvd *.pvtu *.vtu *.h5 *.xdmf *.bin # CMake and Make file CMakeLists.txt !/CMakeLists.txt !dolfin/CMakeLists.txt !bench/CMakeLists.txt !dolfin/swig/CMakeLists.txt !doc/CMakeLists.txt !demo/CMakeLists.txt !test/CMakeLists.txt CMakeCache.txt CMakeFiles cmake_install.cmake cmake_uninstall.cmake Makefile install_manifest.txt # Local build files /build /build.*/ # OS X files .DS_Store .DS_Store?dolfin-1.3.0/INSTALL0000644000175000017500000000434312263014601013676 0ustar johannrjohannrRequirements ------------ DOLFIN uses CMake for configuration and installation. DOLFIN also relies on a number of other third-party libraries. Your system will be probed for these libraries as part of the configuration process. Simple build and install ------------------------ In the simplest case, just issue the commands cmake . make install This will first configure DOLFIN for your system and then compile and install DOLFIN in your system's default installation direcory, for example in /usr/local/ or /opt/local/. Local installation ------------------ It may sometimes be advantageous to install DOLFIN locally as part of the DOLFIN source tree. To do this, simply type ./cmake.local This configures, compiles, and install DOLFIN in a directory named 'local' in the DOLFIN source tree. (Re-)generating the SWIG interface and docstrings ------------------------------------------------- In order to regenerate the SWIG interface and update the documentation, respectively, run the generator scripts: ./cmake/scripts/generate-swig-interface ./cmake/scripts/generate-swig-docstrings Customized builds ----------------- To customize the configuration of DOLFIN, it is convenient to use one of the graphical user interfaces for CMake, such as either ccmake or cmake-gui. These frontends to CMake allow simple manipulation of variables that control the configuration of DOLFIN. It is often useful to build DOLFIN 'out-of-source' which means that all files generated by the build process end up in a separate directory without cluttering the source tree. To make an out-of-source build for DOLFIN using a graphical interface to CMake, simply type mkdir build cd build cmake-gui .. make install Building demos and tests ------------------------ To build demos, enter the build directory (if any) and type make demo This will build all demos. To build a specific demo, just name the demo you want to build, for example the Poisson demo, and type make poisson-demo Alternatively, you may navigate to the demo directory directly, for example demo/pde/poisson/cpp and then build the demo using CMake as above: cmake . make Python demos can be run directly by navigating to the directory of the demo and typing python demo.py dolfin-1.3.0/COPYING0000644000175000017500000010451312263014601013700 0ustar johannrjohannr GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . dolfin-1.3.0/README.rst0000644000175000017500000000272312263014601014334 0ustar johannrjohannr====== DOLFIN ====== DOLFIN is the C++/Python interface of FEniCS, providing a consistent PSE (Problem Solving Environment) for ordinary and partial differential equations. Installation ============ To build DOLFIN, run:: cmake . make install For detailed instructions, see the file INSTALL. License ======= DOLFIN is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. DOLFIN is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with DOLFIN. If not, see . Contact ======= For comments and requests, send an email to the FEniCS mailing list: fenics@fenicsproject.org For questions and bug reports, visit the FEniCS Q&A page: http://fenicsproject.org/qa For bug reports, visit the DOLFIN Bitbucket page: http://bitbucket.org/fenics-project/dolfin About ===== DOLFIN is developed by a group of mathematicians, computational scientists and engineers distributed around the world. A list of authors can be found in the file AUTHORS. For more information about DOLFIN, visit http://fenicsproject.org dolfin-1.3.0/utils/0000755000175000017500000000000012263014601014001 5ustar johannrjohannrdolfin-1.3.0/utils/vim/0000755000175000017500000000000012263014601014574 5ustar johannrjohannrdolfin-1.3.0/utils/vim/macros0000644000175000017500000000207312263014601016005 0ustar johannrjohannrset tabstop=2 set shiftwidth=2 map ,ih "%pbd$0"adwp0v$~0"bdwddi// Copyright (C) 2006 :r !echo $USER ~$a.kJo// Licensed under the GNU LGPL Version 2.1. // // First added: :r !date +'\%F' kJo// Last changed: :r !date +'\%F' kJo #ifndef __FOO_H #define __FOO_H #include namespace dolfin { /// Documentation of class Foo class Foo { public: /// Constructor Foo(); /// Destructor ~Foo(); private: }; } #endif:%s/Foo/\=@a/g :%s/FOO/\=@b/g map ,ic "%pbd$0"1dwddi// Copyright (C) 2006 :r !echo $USER ~$a.kJo// Licensed under the GNU LGPL Version 2.1. // // First added: :r !date +'\%F' kJo// Last changed: :r !date +'\%F' kJo #include using namespace dolfin; //----------------------------------------------------------------------------- Foo::Foo() { // Do nothing } //----------------------------------------------------------------------------- Foo::~Foo() { // Do nothing } //-----------------------------------------------------------------------------:%s/Foo/\=@2/g map ,OH :split :e %<.h map ,OC :split :e %<.cpp dolfin-1.3.0/utils/xml/0000755000175000017500000000000012263014601014601 5ustar johannrjohannrdolfin-1.3.0/utils/xml/convertall0000644000175000017500000000213312263014601016674 0ustar johannrjohannr#!/bin/sh # # Copyright (C) 2006 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Convert all DOLFIN XML files in a directory from # the old DOLFIN XML format to the new format # Unpack all .xml.gz files if any for f in *.xml.gz; do echo "Unpacking $f..." gunzip $f done # Convert all .xml files for f in *.xml; do echo "Converting $f..." mv $f $f.old dolfin-convert -i xml-old $f.old $f done # Pack all .xml files for f in *.xml; do echo "Packing $f..." gzip $f done dolfin-1.3.0/utils/octave/0000755000175000017500000000000012263014601015262 5ustar johannrjohannrdolfin-1.3.0/utils/octave/pdemesh.m0000644000175000017500000000165712263014601017076 0ustar johannrjohannrfunction h = pdemesh(p, e, t, u) % Plots the mesh described by p, e, t (points, edges, triangles). % % Copyright (C) 2004-2005 Johan Jansson % % This file is part of DOLFIN. % % DOLFIN is free software: you can redistribute it and/or modify % it under the terms of the GNU Lesser General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % DOLFIN is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU Lesser General Public License for more details. % % You should have received a copy of the GNU Lesser General Public License % along with DOLFIN. If not, see . % % First added: 2004-01-23 % Last changed: 2005 if(nargin == 3) u = zeros(size(p, 2), 1); end pdeplot(p, [], t, 'xydata', u) dolfin-1.3.0/utils/octave/pdesurf.m0000644000175000017500000000162712263014601017116 0ustar johannrjohannrfunction h = pdesurf(p, t, u) % Plots the scalar solution u on the mesh described by p, t (points, % triangles). % % Copyright (C) 2004-2005 Johan Jansson % % This file is part of DOLFIN. % % DOLFIN is free software: you can redistribute it and/or modify % it under the terms of the GNU Lesser General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % DOLFIN is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU Lesser General Public License for more details. % % You should have received a copy of the GNU Lesser General Public License % along with DOLFIN. If not, see . % % First added: 2004-01-23 % Last changed: 2005 pdeplot(p, [], t, 'xydata', u) dolfin-1.3.0/utils/octave/README0000644000175000017500000000157312263014601016150 0ustar johannrjohannrNotes about the pdeplot, pdesurf and pdemesh Octave functions: These functions are Free Software reimplementations of the corresponding functions in Matlab's PDE Toolbox. They require the external program "ivview" included in the open source Open Inventor distribution which can be obtained from http://oss.sgi.com/projects/inventor/. Open Inventor also exists in the package system of some Linux distributions, such as Debian (the package inventor-clients). They have been verified to work in Octave 2.1.50. Example usage: > pdemesh(points, edges, cells) > pdesurf(points, cells, u) Bugs and comments on features: The functions use the "popen2" call in Octave to communicate with "ivview", and this does not always work correctly, "ivview" can sometimes hang. This is presumably an Octave bug. The pdeplot function is a far from complete reimplementation of the Matlab pdeplot. dolfin-1.3.0/utils/octave/pdeplot.m0000644000175000017500000001257312263014601017117 0ustar johannrjohannrfunction h = pdeplot(p, e, t, p1, u) % Plots the scalar solution u on the mesh described by p, e, t (points, edges, % triangles). % % Copyright (C) 2004-2005 Johan Jansson % % This file is part of DOLFIN. % % DOLFIN is free software: you can redistribute it and/or modify % it under the terms of the GNU Lesser General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % DOLFIN is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU Lesser General Public License for more details. % % You should have received a copy of the GNU Lesser General Public License % along with DOLFIN. If not, see . % % First added: 2004-01-23 % Last changed: 2005 %u = v1; color1 = [0.0 1.0 0.0]; color2 = [1.0 0.0 0.0]; %Compute some useful information about the geometry pmax = max(p'); pmin = min(p'); umin = min(u); umax = max(u); urange = umax - umin; if(urange == 0) urange = 1; end %offset = max([umax / 100 1e-3]); offset = urange / 100; % offset % center = [(max(p(1, :)) + min(p(1, :))) / 2 % (max(p(2, :)) + min(p(2, :))) / 2]; % centeru = (max(u) + min(u)) / 2; center = (pmax + pmin) / 2; centeru = (umax + umin) / 2; %Assume that u is xydata fname = tempname; %[fd, fdout, pid] = popen2('ivview', 'w'); [fd, fdout, pid] = popen2('ivview', ''); %[fd, fdout, pid] = popen2('SceneViewer -', ''); %fd = fopen(fname, 'w'); fprintf(fd, '#Inventor V2.1 ascii\n\n'); fprintf(fd, 'Separator\n'); fprintf(fd, '{\n'); fprintf(fd, ' OrthographicCamera\n'); fprintf(fd, ' {\n'); fprintf(fd, ' position %f %f %f\n', 0, 0, 5); fprintf(fd, ' focalDistance %f\n', 5); fprintf(fd, ' }\n'); fprintf(fd, ' ShapeHints\n'); fprintf(fd, ' {\n'); fprintf(fd, ' creaseAngle 1.5\n'); fprintf(fd, ' vertexOrdering COUNTERCLOCKWISE\n'); fprintf(fd, ' }\n'); fprintf(fd, ' Scale\n'); fprintf(fd, ' {\n'); fprintf(fd, ' scaleFactor %f %f %f\n', 1.5 / (2 * center(1)), 1.5 / (2 * center(2)), 1 / (urange)); fprintf(fd, ' }\n'); fprintf(fd, ' Translation\n'); fprintf(fd, ' {\n'); fprintf(fd, ' translation %f %f %f\n', -center(1), -center(2), -centeru); fprintf(fd, ' }\n'); fprintf(fd, ' LightModel\n'); fprintf(fd, ' {\n'); % fprintf(fd, ' model PHONG\n'); fprintf(fd, ' model BASE_COLOR\n'); fprintf(fd, ' }\n'); fprintf(fd, 'Separator\n'); fprintf(fd, '{\n'); fprintf(fd, ' Font\n'); fprintf(fd, ' {\n'); fprintf(fd, ' size 20\n'); fprintf(fd, ' }\n'); fprintf(fd, ' Translation\n'); fprintf(fd, ' {\n'); fprintf(fd, ' translation 0.0 1.05 0\n'); fprintf(fd, ' }\n'); fprintf(fd, ' Text2\n'); fprintf(fd, ' {\n'); fprintf(fd, ' string \"Title\"\n'); fprintf(fd, ' }\n'); fprintf(fd, '}\n'); fprintf(fd, ' Material\n'); fprintf(fd, ' {\n'); fprintf(fd, ' ambientColor 0.5 0.5 0.5\n'); fprintf(fd, ' specularColor 0.8 0.8 0.8\n'); fprintf(fd, ' diffuseColor\n'); fprintf(fd, ' [\n'); for i = 1:size(u, 1) value = (u(i) - umin) / urange; color = (1 - value) * color1 + value * color2; %color if(i < size(u, 1)) fprintf(fd, ' %f %f %f,\n', color(1), color(2), color(3)); else fprintf(fd, ' %f %f %f\n', color(1), color(2), color(3)); end end fprintf(fd, ' ]\n'); fprintf(fd, ' }\n'); fprintf(fd, ' MaterialBinding\n'); fprintf(fd, ' {\n'); fprintf(fd, ' value PER_VERTEX_INDEXED\n'); fprintf(fd, ' }\n'); fprintf(fd, ' Coordinate3\n'); fprintf(fd, ' {\n'); fprintf(fd, ' point\n'); fprintf(fd, ' [\n'); for i = 1:size(p, 2) if(i < size(p, 2)) fprintf(fd, ' %f %f %f,\n', p(1, i), p(2, i), u(i)); else fprintf(fd, ' %f %f %f\n', p(1, i), p(2, i), u(i)); end end fprintf(fd, ' ]\n'); fprintf(fd, ' }\n'); fprintf(fd, ' IndexedFaceSet\n'); fprintf(fd, ' {\n'); fprintf(fd, ' coordIndex\n'); fprintf(fd, ' [\n'); for i = 1:size(t, 2) if(i < size(t, 2)) fprintf(fd, ' %d, %d, %d, -1,\n', t(1, i) - 1, t(2, i) - 1, t(3, i) - 1); else fprintf(fd, ' %d, %d, %d, -1\n', t(1, i) - 1, t(2, i) - 1, t(3, i) - 1); end end fprintf(fd, ' ]\n'); fprintf(fd, ' }\n'); fprintf(fd, ' Material\n'); fprintf(fd, ' {\n'); fprintf(fd, ' diffuseColor 0.1 0.1 0.1\n'); fprintf(fd, ' }\n'); fprintf(fd, ' MaterialBinding\n'); fprintf(fd, ' {\n'); fprintf(fd, ' value OVERALL\n'); fprintf(fd, ' }\n'); fprintf(fd, ' Coordinate3\n'); fprintf(fd, ' {\n'); fprintf(fd, ' point\n'); fprintf(fd, ' [\n'); for i = 1:size(p, 2) if(i < size(p, 2)) fprintf(fd, ' %f %f %f,\n', p(1, i), p(2, i), u(i) + offset); else fprintf(fd, ' %f %f %f\n', p(1, i), p(2, i), u(i) + offset); end end fprintf(fd, ' ]\n'); fprintf(fd, ' }\n'); fprintf(fd, ' IndexedLineSet\n'); fprintf(fd, ' {\n'); fprintf(fd, ' coordIndex\n'); fprintf(fd, ' [\n'); for i = 1:size(t, 2) if(i < size(t, 2)) fprintf(fd, ' %d, %d, -1,\n', t(1, i) - 1, t(2, i) - 1); fprintf(fd, ' %d, %d, -1,\n', t(2, i) - 1, t(3, i) - 1); fprintf(fd, ' %d, %d, -1,\n', t(3, i) - 1, t(1, i) - 1); else fprintf(fd, ' %d, %d, -1,\n', t(1, i) - 1, t(2, i) - 1); fprintf(fd, ' %d, %d, -1,\n', t(2, i) - 1, t(3, i) - 1); fprintf(fd, ' %d, %d, -1\n', t(3, i) - 1, t(1, i) - 1); end end fprintf(fd, ' ]\n'); fprintf(fd, ' }\n'); fprintf(fd, '}\n'); fclose(fd); %cmd = sprintf('SceneViewer %s', fname); %system(cmd, 1, 'async'); %sleep(1); %unlink(fname); dolfin-1.3.0/utils/gid/0000755000175000017500000000000012263014601014544 5ustar johannrjohannrdolfin-1.3.0/utils/gid/DOLFIN.bas0000644000175000017500000000111612263014601016205 0ustar johannrjohannr*#FILE_EXTENSION .xml *realformat "%-f" *loop nodes *end nodes *loop elems *end elems dolfin-1.3.0/utils/system/0000755000175000017500000000000012263014601015325 5ustar johannrjohannrdolfin-1.3.0/utils/system/monitor0000644000175000017500000000235512263014601016744 0ustar johannrjohannr#!/bin/sh # # Copyright (C) 2005 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2005-12-13 # Last changed: 2005-12-13 # # Monitor memory usage for given command. This script # will probably only work on Linux. # # Note that this script runs the given command as a new # process, so killing the script (ctrl-c) won't kill the # running process. exec $* & pid="$!" echo "Monitoring memory usage for process with id $pid..." PIDFILE="/proc/$pid/status" while [ 1 ]; do if [ -e $PIDFILE ]; then cat $PIDFILE | grep VmSize | awk '{ print $2/1024" MB"}' else exit 0 fi sleep 1 done dolfin-1.3.0/utils/scripts/0000755000175000017500000000000012263014601015470 5ustar johannrjohannrdolfin-1.3.0/utils/scripts/plotklocs0000644000175000017500000000464412263014601017435 0ustar johannrjohannr#!/usr/bin/env python # # Copyright (C) 2013 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2013-02-26 # Last changed: 2013-02-26 # # Plot growth of code as function of time. This script should be # run rom the top level directory. from commands import getoutput from datetime import datetime import pylab as pl # Suffixes to check suffixes = [".h", ".hh", ".cpp", ".C"] # Paths to skip skip = ["demo", "bench", "test", "local", "build"] # Get time stamps timestamps = getoutput("bzr log | grep timestamp | awk '{print $3}'") t = [] for timestamp in timestamps.split("\n"): y, m, d = timestamp.split("-") t.append(datetime(int(y), int(m), int(d))) t.reverse() # Revisions to check revisions = range(len(t)) # For quick testing #revisions = revisions[-10:] #t = t[-10:] # Iterate over revisions locs = [] for i, r in enumerate(revisions): print "Updating to revision %r %s" % (r, t[i]) # Update repository getoutput("bzr update -r %d" % r) # Count the lines of code n_total = 0 for suffix in suffixes: skips = " | ".join("grep -v %s" % s for s in skip) n = getoutput("""find . -name *%s \ | %s \ | xargs wc -l \ | grep total \ | awk '{print $1}'""" % (suffix, skips)) if n.isdigit(): n_total += int(n) # Store lines of code print "%d lines of code" % n_total locs.append(n_total) # Store results to file f = open("klocs.csv", "w") f.write("\n".join("%d-%d-%d,%d" % \ (t[i].year, t[i].month, t[i].day, locs[i]) \ for i in range(len(revisions)))) f.close() # Plot results pl.plot(t, locs) pl.grid(True) pl.ylabel("Lines of code") pl.title("Code growth for DOLFIN %d - %d" % (t[0].year, t[-1].year)) pl.show() dolfin-1.3.0/utils/scripts/makedoc0000755000175000017500000000054512263014601017025 0ustar johannrjohannr#!/bin/sh # This script uses doxygen to create documentation. # Simple test to see where we are # FIXME: Does not work when typing ./scripts/... CHECK=`echo $0 | cut -d'/' -f1` if [ "$CHECK" != "utils" ]; then echo "This script must be run from the top level directory." exit 1 fi # Run doxygen /usr/bin/doxygen doc/progr_reference/html/Doxyfile dolfin-1.3.0/utils/scripts/code-formatting0000755000175000017500000001507012263014601020503 0ustar johannrjohannr#!/usr/bin/env python # # Copyright (C) 2009 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Check and fix coding style in all files (currently very limited) # # Modified by Chris Richardson, 2013 # # Last changed: 2013-05-10 # import os, sys, re, getopt # Camelcaps exceptions camelcaps_exceptions = ["cGq", "dGq", # ODE solver "addListener", "addTest", "getRegistry", "makeTest", "wasSuccessful", # cppunit "tagName", "tagNames", "documentElement", "childNodes", # doscstrings "nodeType", "firstChild", "parentNode", # docstrings "doubleArray", "intArray", # swig "fatalError", "xmlChar", "xmlNode", "xmlStrcasecmp", # libxml2 "startDocument", "endDocument", "startElement", "endElement"] # libxml2 def camelcaps2underscore(word): "Convert fooBar to foo_bar." new_word = "" for c in word: if c.isupper() and len(new_word) > 0: new_word += "_" + c.lower() else: new_word += c return new_word def check_camelcaps(code): "Check for fooBar (should be foo_bar)" problems=[] for i,line in enumerate(code.split("\n")): if(re.search(r"//",line)): continue words = re.findall(r"\b([a-z]+[A-Z][a-z]+)\b", line) for word in words: if word in camelcaps_exceptions: continue if re.match("vtk",word): continue problems.append("[camelCaps ] Line %d: %s"%(i+1,line)) return code, problems def check_trailing_whitespace(code): "Remove trailing spaces at end of lines." problems = [] lines = [] for i,line in enumerate(code.split("\n")): new_line = line.rstrip() lines.append(new_line) if new_line == line: continue problems.append("[trailing whitespace] Line %d: %s"%(i+1,line.replace(" ","_").replace("\r","^M"))) new_code = "\n".join(lines) if len(new_code) > 0 and not new_code[-1] == "\n": new_code += "\n" return new_code, problems def check_tabs(code): "Check for TAB character" problems = [] lines =[] for i,line in enumerate(code.split("\n")): if(re.search("\t",line)): problems.append("[tab ] Line %d: %s"%(i+1,line.replace("\t",r"\t "))) lines.append(re.sub("\t"," ",line)) else: lines.append(line) new_code = "\n".join(lines) if len(new_code) > 0 and not new_code[-1] == "\n": new_code += "\n" return new_code, problems def check_symbol_spacing(code): "Add spaces around +,-,= etc." problems = [] for i,line in enumerate(code.split("\n")): if(re.search(r"//",line)): continue words = re.findall(r"\b[=|+|-|==]\b", line) if(len(words)>0): problems.append("[symbol spacing ] Line %d: %s"%(i,line)) words = re.findall(r"\b,\b", line) if(len(words)>0): problems.append("[comma spacing ] Line %d: %s"%(i,line)) return code, problems def part_of_dolfin(code): "Look for DOLFIN in file" if re.search("DOLFIN",code): return True else: return False def detect_bad_formatting(filename, opts): """Detect where code formatting appears to be wrong. opts Flags: -c for checking camelCaps -w for checking whitespace -s for checking symbol spacing, i.e. =, +, - etc. -wf to fix whitespace errors """ # Open file f = open(filename, "r") code = f.read() f.close() if(not part_of_dolfin(code)): problems = ['[part of dolfin ] Does not contain "DOLFIN" - skipping'] else: # Checks problems = [] if("-c" in opts): code, p = check_camelcaps(code) problems.extend(p) if("-w" in opts): code, p1 = check_trailing_whitespace(code) problems.extend(p1) code, p2 = check_tabs(code) problems.extend(p2) # Rewrite corrected file (only corrects whitespace errors) if("-f" in opts and (len(p1)!=0 or len(p2)!=0)): problems.append('Rewriting file %s'%filename) f = open(filename, "w") f.write(code) f.close() if("-s" in opts): code, p = check_symbol_spacing(code) problems.extend(p) if(len(problems) != 0): print "================================================================================" print filename print "================================================================================" for p in problems: print p def usage(name): print print name," [-c|-w|-s|-f] path" print "\n Check formatting of code in the folders and subfolders of path\n" print " -c check camelCaps" print " -w check white space and tabs" print " -s check symbol spacing" print " -wf fix whitespace errors" print " default: check all" if __name__ == "__main__": try: opts, args = getopt.getopt(sys.argv[1:], "cwsf") except getopt.GetoptError as err: print str(err) # will print something like "option -a not recognized" usage(sys.argv[0]) sys.exit(0) if(len(args)==0): usage(sys.argv[0]) sys.exit(0) filepath = args[0] options=[] for opt, arg in opts: options.append(opt) if len(options)==0: options=['-c','-w','-s'] # Iterate over all source files for root, dirs, files in os.walk(filepath): for file in files: if not file.endswith((".cpp", ".h", ".py", ".i")): continue filename = os.path.join(root, file) detect_bad_formatting(filename, options) dolfin-1.3.0/utils/scripts/notinuse0000755000175000017500000000123712263014601017265 0ustar johannrjohannr#!/bin/sh # notinuse # # Scan subdirectories for files that may not be in use, # that is, old files that should be removed. # # This script should be run from the top level directory. # Simple test to see where we are # FIXME: Does not work when typing ./scripts/... CHECK=`echo $0 | cut -d'/' -f1` if [ "$CHECK" != "scripts" ]; then echo "This script must be run from the top level directory." exit 1 fi for f in `find . -name '*.h' -printf '%f '`; do a=`rgrep $f * | grep include` if [ "x$a" == "x" ]; then echo File $f may not be used. fi done dolfin-1.3.0/utils/scripts/pdebug0000755000175000017500000000037512263014601016671 0ustar johannrjohannr#!/bin/bash echo "Running \"$2\" on $1 processes through gdb debugger." env="" # Example of how to set the environment, if needed #env="source /home/skavhaug/.setups/alt1; source ../../dolfin.conf;" mpirun -np $1 -x DISPLAY=:0.0 xterm -e "$env gdb $2" dolfin-1.3.0/utils/scripts/dolfinreplace0000755000175000017500000001031712263014601020227 0ustar johannrjohannr#!/usr/bin/python # # Replace string in dolfin files # # dolfinreplace s0 s1 [-sv] # # Example: # # dolfinreplace foo bar # # Johan hake, 2008-19-09 # # Modified by Anders Logg, 2008. from os import path import glob # File post fixes to look in post_fixes = [".h", ".cpp", ".i", ".tex", ".py", ".rst"] # Directories to explude exclude_dir = [".bzr", "build", "local"] # Global variables count = 0 changed_files = 0 report_lines = [] dolfin_root = path.abspath(path.join(path.dirname(path.abspath(__file__)), path.pardir, path.pardir)) # Output strings post_fix_string = ", ".join( "'%s'"%s for s in post_fixes) start_str = """Replacing '%s' with '%s' in all %s files...""" report_str = """ %d occurences replaced in %d files: %s %s""" def replace(args, dirname, filenames): """ Replace replaces[0] with replaces[1] In all fnames with post fixes in 'post_fixes' replace replaces[0] with replaces[1] """ global count, report_lines, changed_files (s0, s1), options = args for exclude in exclude_dir: if exclude in filenames: filenames.remove(exclude) #print dirname for filename in glob.glob(path.join(dirname, options.pattern)): if path.splitext(filename)[1] in post_fixes: fullpath_filename = path.join(dirname,filename) f = open(fullpath_filename, "r") if options.verbose: changed_lines = [] lines = f.readlines() num_changed = 0 for i, line in enumerate(lines): num = line.count(s0) if num>0: num_changed += num changed_lines.append(" "*8+line.replace(s0,\ "\033[4m%s\033[0;0m"%s0).strip()) lines[i] = line.replace(s0, s1) count += num_changed output = "".join(lines) else: input = f.read() num_changed = input.count(s0) count += num_changed output = input.replace(s0, s1) f.close() if not options.simulate and num_changed > 0: f = open(fullpath_filename, "w") f.write(output) f.close() if num_changed > 0: changed_files += 1 report_lines.append(" "*4+fullpath_filename) if options.verbose: report_lines.extend(changed_lines) report_lines.append("") def options_parser(): import optparse usage ="""Usage: %prog [options] arg1 arg2 Replaces string 'arg1' with 'arg2' in files in the present directory tree. """ parser = optparse.OptionParser(usage=usage) parser.add_option("-s", "--simulate", help="simulate the replacement", action="store_true", dest="simulate", default=False) parser.add_option("-p", "--pattern", help="a glob compatible pattern " "for which files should be looked into. "\ "[default: '%default']", action="store",\ dest="pattern", default="*") parser.add_option("-v", "--verbose", help="verbosely print each line that"\ " includes the searched pattern.", action="store_true", \ dest="verbose", default=False) return parser def main(): parser = options_parser() options, args = parser.parse_args() if len(args) != 2: parser.error("incorrect number of arguments") s0, s1 = args[0].replace("\\", ""), args[1].replace("\\", "") print start_str%(s0,s1,post_fix_string) # Do it! path.walk(dolfin_root, replace, ((s0, s1), options)) if count > 0: if options.simulate: simulate_str = "\nSimulating, no replacement done..." else: simulate_str = "" if report_lines[-1]: report_lines.pop(-1) print report_str % (count, changed_files, "\n".\ join(report_lines), simulate_str) else: print "Done\n\nNo occurens of '%s' found"%args[0] if __name__ == "__main__": main() dolfin-1.3.0/utils/scripts/fixme0000755000175000017500000000017012263014601016524 0ustar johannrjohannr#!/bin/sh # Find all FIXMEs in the code find . -name '*.h' | xargs grep FIXME find . -name '*.cpp' | xargs grep FIXME dolfin-1.3.0/utils/scripts/broken0000755000175000017500000000017412263014601016700 0ustar johannrjohannr#!/bin/sh # Find all BROKENs in the code find . -name '*.h' | xargs grep BROKEN find . -name '*.cpp' | xargs grep BROKEN dolfin-1.3.0/utils/scripts/klocs0000755000175000017500000000116312263014601016532 0ustar johannrjohannr#!/bin/sh # klocs # # Count the number of kilos of lines of code (klocs) # in the directory src. # # This script should be run from the top level directory. IMPL=`find dolfin -name '*.cpp' | xargs wc -l | grep total | awk '{ printf "%d", $1/1000 }'` HEAD=`find dolfin -name '*.h' | grep -v elements | grep -v ffc-forms | xargs wc -l | grep total | awk '{ printf "%d", $1/1000 }'` TOTAL=`echo $IMPL $HEAD | awk '{ print $1 + $2 }'` echo $HEAD' klocs in .h files' echo $IMPL' klocs in .cpp files' echo $TOTAL' klocs total' dolfin-1.3.0/utils/scripts/formatcode0000755000175000017500000001011212263014601017534 0ustar johannrjohannr#!/usr/bin/env python # # Copyright (C) 2009 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Check and fix coding style in all files (currently very limited) import os, sys, re # Camelcaps exceptions camelcaps_exceptions = ["cGq", "dGq", # ODE solver "addListener", "addTest", "getRegistry", "makeTest", "wasSuccessful", # cppunit "tagName", "tagNames", "documentElement", "childNodes", # doscstrings "nodeType", "firstChild", "parentNode", # docstrings "doubleArray", "intArray", # swig "fatalError", "xmlChar", "xmlNode", "xmlStrcasecmp", # libxml2 "startDocument", "endDocument", "startElement", "endElement"] # libxml2 def camelcaps2underscore(word): "Convert fooBar to foo_bar." new_word = "" for c in word: if c.isupper() and len(new_word) > 0: new_word += "_" + c.lower() else: new_word += c return new_word def check_camelcaps(code, replacements): "Replace fooBar by foo_bar." words = re.findall(r"\b([a-z]+[A-Z][a-z]+)\b", code) for word in words: if word in camelcaps_exceptions: continue new_word = camelcaps2underscore(word) code = code.replace(word, new_word) r = (word, new_word) if r in replacements: replacements[r] += 1 else: replacements[r] = 1 print " Replacing: %s --> %s" % r return code def check_trailing_whitespace(code, replacements): "Remove trailing spaces at end of lines." lines = [] for line in code.split("\n"): new_line = line.rstrip() lines.append(new_line) if new_line == line: continue r = ("trailing whitespace", "") if r in replacements: replacements[r] += 1 else: replacements[r] = 1 print " Removing trailing whitespace" new_code = "\n".join(lines) if len(new_code) > 0 and not new_code[-1] == "\n": new_code += "\n" return new_code def replace(filename, replacements): "Make replacements for given filename." print "Checking %s..." % filename # Open file f = open(filename, "r") code = f.read() f.close() # Checks new_code = check_camelcaps(code, replacements) new_code = check_trailing_whitespace(code, replacements) # Write file f = open(filename, "w") f.write(new_code) f.close() # Iterate over all source files replacements = {} for root, dirs, files in os.walk("dolfin"): for file in files: if not file.endswith((".cpp", ".h", ".py", ".i")): continue filename = os.path.join(root, file) replace(filename, replacements) for root, dirs, files in os.walk("demo"): for file in files: if not file.endswith((".cpp", ".h", ".py")): continue filename = os.path.join(root, file) replace(filename, replacements) # Report replacements if len(replacements) == 0: print "No replacements were made, unchanged." else: print "" print "The following replacements were made:" lines = [] for r in replacements: lines.append(" %s --> %s (%d occurences)" % (r[0], r[1], replacements[r])) lines.sort() print "\n".join(lines) dolfin-1.3.0/utils/tetgen/0000755000175000017500000000000012263014601015267 5ustar johannrjohannrdolfin-1.3.0/utils/tetgen/dolfin-tetgen0000755000175000017500000000224312263014601017755 0ustar johannrjohannr#!/usr/bin/env python # # Copyright (C) 2009 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # Simple script for mesh STL geometry with TetGen and converting to DOLFIN XML format import sys, os # Check command-line arguments if len(sys.argv) != 3: print "Usage: dolfin-tetgen mesh.stl mesh.xml" sys.exit(1) stl_file = sys.argv[1] xml_file = sys.argv[2] # Run TetGen os.system("tetgen -g -p %s" % stl_file) # Convert to DOLFIN mesh_file = stl_file.split(".stl")[0] + ".1" + ".mesh" os.system("dolfin-convert %s %s" % (mesh_file, xml_file)) dolfin-1.3.0/utils/swig/0000755000175000017500000000000012263014601014752 5ustar johannrjohannrdolfin-1.3.0/utils/swig/dolfin-swig0000755000175000017500000000655712263014601017137 0ustar johannrjohannr#!/usr/bin/env python import os, sys from dolfin_utils.commands import getoutput debug = False # Simple tool to automatically convert a header file (with # implementation) including DOLFIN classes or functions to a Python # module. usage = """ Usage: %s sourcefile [modulename] Example: dolfin-swig Poisson3D.h poisson3dform """ % os.path.basename(sys.argv[0]) if len(sys.argv) < 2: print usage name = sys.argv[1] name = name.rstrip(".h") if(len(sys.argv) > 2): modulename = sys.argv[2] else: lowername = name.lower() modulename = lowername swigfile = modulename + ".i" print "Generating the SWIG interface file for the %s module" % name swigsource = """%%module %s %%{ #include #include #include \"%s.h\" using namespace dolfin; %%} %%typemap(python,in) real = double; %%typemap(python,out) real = double; %%typemap(python,in) uint = int; %%typemap(python,out) uint = int; // Typemaps for dolfin::real array arguments in virtual methods // probably not very safe %%typemap(directorin) dolfin::real [] { { // Custom typemap $input = SWIG_NewPointerObj((void *) $1_name, $1_descriptor, $owner); } } %%typemap(directorin) dolfin::real const [] { { // Custom typemap $input = SWIG_NewPointerObj((void *) $1_name, $1_descriptor, $owner); } } %%include \"typemaps.i\" %%include \"std_string.i\" %%include \"carrays.i\" %%include \"%s.i\" %%array_functions(dolfin::real, realArray); %%feature(\"director\") Function; %%feature(\"director\") BoundaryCondition; %%feature(\"director\") ODE; %%ignore dolfin::dolfin_set; %%ignore dolfin::dolfin_set_aptr; %%import \"dolfin.h\" %%import \"dolfin/constants.h\" /* function imports */ %%import \"dolfin/Function.h\" /* fem imports */ %%include \"dolfin/FiniteElementSpec.h\" %%include \"dolfin/BoundaryCondition.h\" %%include \"dolfin/FiniteElement.h\" /* form imports */ %%include \"dolfin/Form.h\" %%include \"dolfin/BilinearForm.h\" %%include \"dolfin/LinearForm.h\" /* form include */ %%include \"%s.h\" """ % (modulename, name, name, name) swigoutput = open(swigfile, 'w') swigoutput.write(swigsource) swigoutput.close() #print "Building the Python module" debugout = getoutput("swig -python -c++ -nodefault -dirprot `pkg-config --cflags-only-I dolfin` -o %s_wrap.cpp %s" % (modulename, swigfile)) if debug: print debugout # FIXME: Workaround for apparent bug in SWIG, try to fix the bug. interfacefile = open("%s_wrap.cpp" % modulename) tmpfile = open("tmp.cpp", 'w') stext = "dolfin::%s::dolfin::" % name rtext = "dolfin::" for s in interfacefile.xreadlines(): tmpfile.write(s.replace(stext, rtext)) interfacefile.close() tmpfile.close() debugout = getoutput("mv tmp.cpp %s_wrap.cpp" % modulename) if debug: print debugout # FIXME: # Compilation still not compiler-independent #print "Compiling generated code" debugout = getoutput("`pkg-config --variable=compiler dolfin` `pkg-config --variable=swigcflags dolfin` `pkg-config --cflags-only-I dolfin` -I. -g -fPIC -c -o %s_wrap.o %s_wrap.cpp" % (modulename, modulename)) if debug: print debugout # FIXME: # Generating shared library still not compiler-independent (syntax likely # only works for GCC) #print "Linking generated code" debugout = getoutput("`pkg-config --variable=compiler dolfin` -g -shared %s_wrap.o -o _%s.so `pkg-config --libs dolfin`" % (modulename, modulename)) if debug: print debugout dolfin-1.3.0/utils/emacs/0000755000175000017500000000000012263014601015071 5ustar johannrjohannrdolfin-1.3.0/utils/emacs/macros0000644000175000017500000000663012263014601016305 0ustar johannrjohannr;; Macro for DOLFIN .h file (fset 'dolfin\.h [?/ ?/ ? ?C ?o ?p ?y ?r ?i ?g ?h ?t ? ?( ?C ?) ? ?2 ?0 ?0 ?6 ? ?Y ?o ?u ?r ? ?N ?a ?m ?e ?. return ?/ ?/ ? ?L ?i ?c ?e ?n ?s ?e ?d ? ?u ?n ?d ?e ?r ? ?t ?h ?e ? ?G ?N ?U ?\S- ?G ?P ?L ?\S- ?V ?e ?r ?s ?i ?o ?n ? ?2 ?. return ?/ ?/ return ?/ ?/ ? ?F ?i ?r ?s ?t ? ?a ?d ?d ?e ?d ?: ? ? ?2 ?0 ?0 ?6 ?- ?0 ?1 ?- ?0 ?1 return ?/ ?/ ? ?L ?a ?s ?t ? ?c ?h ?a ?n ?g ?e ?d ?: ? ?2 ?0 ?0 ?6 ?- ?0 ?1 ?- ?0 ?1 return return ?# ?i ?f ?n ?d ?e ?f ? ?_ ?_ ?F ?O ?O ?_ ?H return ?# ?d ?e ?f ?i ?n ?e ? ?_ ?_ ?F ?O ?O ?_ ?H return return ?# ?i ?n ?c ?l ?u ?d ?e ? ?< ?d ?o ?l ?f ?i ?n ?/ ?c ?o ?n ?s ?t ?a ?n ?t ?s ?. ?h ?> return return ?n ?a ?m ?e ?s ?p ?a ?c ?e ? ?d ?o ?l ?f ?i ?n return ?{ return return ? ? ?/ ?/ ?/ ? ?D ?o ?c ?u ?m ?e ?n ?t ?a ?t ?i ?o ?n ? ?o ?f ? ?c ?l ?a ?s ?s return return ? ? ?c ?l ?a ?s ?s ? ?F ?o ?o return ? ? ?{ return ? ? ?p ?u ?b ?l ?i ?c ?: return return ? ? ? ? ?/ ?/ ?/ ? ?C ?o ?n ?s ?t ?r ?u ?c ?t ?o ?r return ? ? ? ? ?F ?o ?o ?( ?) ?\; return return ? ? ? ? ?/ ?/ ?/ ? ?D ?e ?s ?t ?r ?u ?c ?t ?o ?r return ? ? ? ? ?~ ?F ?o ?o ?( ?) ?\; return return ? ? ?p ?r ?i ?v ?a ?t ?e ?: return return ? ? ?} ?\; return return ?} return return ?# ?e ?n ?d ?i ?f return ?\M-x ?e ?n ?d tab ?k tab]) ;; Macro for DOLFIN .cpp file (fset 'dolfin\.cpp [?/ ?/ ? ?C ?o ?p ?y ?r ?i ?g ?h ?t ? ?( ?C ?) ? ?2 ?0 ?0 ?6 ? ?Y ?o ?u ?r ? ?N ?a ?m ?e ?. return ?/ ?/ ? ?L ?i ?c ?e ?n ?s ?e ?d ? ?u ?n ?d ?e ?r ? ?t ?h ?e ? ?G ?N ?U ?\S- ?G ?P ?L ?\S- ?V ?e ?r ?s ?i ?o ?n ? ?2 ?. return ?/ ?/ return ?/ ?/ ? ?F ?i ?r ?s ?t ? ?a ?d ?d ?e ?d ?: ? ? ?2 ?0 ?0 ?6 ?- ?0 ?1 ?- ?0 ?1 return ?/ ?/ ? ?L ?a ?s ?t ? ?c ?h ?a ?n ?g ?e ?d ?: ? ?2 ?0 ?0 ?6 ?- ?0 ?1 ?- ?0 ?1 return return ?# ?i ?n ?c ?l ?u ?d ?e ? ?< ?d ?o ?l ?f ?i ?n ?/ ?F ?o ?o ?. ?h ?> return return ?u ?s ?i ?n ?g ? ?n ?a ?m ?e ?s ?p ?a ?c ?e ? ?d ?o ?l ?f ?i ?n ?\; return return ?/ ?/ ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- return ?F ?o ?o ?: ?: ?F ?o ?o ?( ?) return ?{ return ? ? ?/ ?/ ? ?D ?o ? ?n ?o ?t ?h ?i ?n ?g return ?} return ?/ ?/ ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- return ?F ?o ?o ?: ?: ?~ ?F ?o ?o ?( ?) return ?{ return ? ? ?/ ?/ ? ?D ?o ? ?n ?o ?t ?h ?i ?n ?g return ?} return ?/ ?/ ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- ?- return ?\M-x ?e ?n ?d tab ?k tab]) ;; Update time stamp for DOLFIN source code (setq time-stamp-start "Last changed:\\\\? "; start of pattern time-stamp-end "\\\\?\n" ; end of pattern time-stamp-active t ; do enable time-stamps time-stamp-line-limit 20 ; check first 20 lines time-stamp-format "%04y-%02m-%02d") ; date format ;; Update timestamp before saving (add-hook 'before-save-hook 'time-stamp) ;; Remove trailing whitespaces before saving (add-hook 'before-save-hook 'delete-trailing-whitespace) dolfin-1.3.0/utils/matlab/0000755000175000017500000000000012263014601015241 5ustar johannrjohannrdolfin-1.3.0/utils/matlab/xmlmesh.m0000644000175000017500000000530512263014601017077 0ustar johannrjohannrfunction xmlmesh(filename, p, t) % XMLMESH - SAVE MATLAB 2D (AND FEMLAB 3D) MESH TO DOLFIN XML FORMAT % % Usage: xmlmesh(filename,p,t) % % p - points (exported from PDE Toolbox) % t - triangles (exported from PDE Toolbox) % % Copyright (C) 2004 Erik Svensson % % This file is part of DOLFIN. % % DOLFIN is free software: you can redistribute it and/or modify % it under the terms of the GNU Lesser General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % DOLFIN is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU Lesser General Public License for more details. % % You should have received a copy of the GNU Lesser General Public License % along with DOLFIN. If not, see . % % Modified by Anders Logg 2004-2005. % Modified by Marie Rognes 2009. % % First added: 2004-02-10 % Last changed: 2009-11-18 % Open file fp = fopen(filename, 'w'); disp('Exporting mesh to DOLFIN XML format') % Get number of points and triangles np = size(p, 2); nt = size(t, 2); % Write header fprintf(fp,'\n\n'); fprintf(fp,'\n'); % 2D mesh if (size(p, 1) == 2) % Write nodes fprintf(fp,' \n'); disp('Writing vertices...') fprintf(fp,' \n',np); for n=1:np fprintf(fp,' \n', ... n - 1, p(1, n), p(2, n)); end fprintf(fp,' \n'); % Write cells disp('Writing cells...') fprintf(fp,' \n',nt); for n=1:nt fprintf(fp,' \n', ... n - 1, t(1, n) - 1, t(2, n) - 1, t(3, n) - 1); end fprintf(fp,' \n'); fprintf(fp,' \n'); fprintf(fp,'\n'); % 3D mesh elseif (size(p, 1) == 3) % Write nodes disp('Writing nodes...') fprintf(fp,' \n'); fprintf(fp,' \n',np); for n=1:np fprintf(fp,' \n', ... n - 1, p(1, n), p(2, n), p(3, n)); end fprintf(fp,' \n'); % Write cells disp('Writing cells...') fprintf(fp,' \n',nt); for n=1:nt fprintf(fp,' \n', ... n-1, t (1, n) - 1, t(2, n) - 1, t(3, n) - 1, t(4, n) - 1); end fprintf(fp,' \n'); fprintf(fp,' \n'); fprintf(fp,'\n'); end % Close file fclose(fp); disp('Done') dolfin-1.3.0/utils/matlab/xmlvector.m0000644000175000017500000000272212263014601017445 0ustar johannrjohannrfunction xmlvector(filename, x) % XMLVECTOR - SAVE VECTOR TO DOLFIN IN XML FORMAT % % Usage: xmlvector(filename, x) % % x - a vector % % Copyright (C) 2004 Georgios Foufas % % This file is part of DOLFIN. % % DOLFIN is free software: you can redistribute it and/or modify % it under the terms of the GNU Lesser General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % DOLFIN is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU Lesser General Public License for more details. % % You should have received a copy of the GNU Lesser General Public License % along with DOLFIN. If not, see . % % Modified by Anders Logg 2004-2005. % % First added: 2004-02-10 % Last changed: 2005 % Open file fp = fopen(filename,'w'); % Row or column vector?? ssize = size(x,1); if(ssize == 1) ssize = size(x,2); end % Write header fprintf(fp,'\n\n'); fprintf(fp,'\n'); % Write vector values disp('Writing vector...') fprintf(fp,' \n',ssize); for n = 1:ssize fprintf(fp,' \n', n-1, x(n)); end fprintf(fp,' \n'); fprintf(fp,'\n'); % Close file fclose(fp); disp('Done') dolfin-1.3.0/utils/matlab/meshindex.m0000644000175000017500000000256512263014601017413 0ustar johannrjohannrfunction index = meshindex(p, t) % MESHINDEX - COMPUTE APPROXIMATE MULTI-ADAPTIVE EFFICIENCY INDEX FOR MESH % % Usage: index = meshindex(p, t) % % p - points (exported from PDE Toolbox) % t - triangles (exported from PDE Toolbox) % % Copyright (C) 2005 Anders Logg % % This file is part of DOLFIN. % % DOLFIN is free software: you can redistribute it and/or modify % it under the terms of the GNU Lesser General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % DOLFIN is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU Lesser General Public License for more details. % % You should have received a copy of the GNU Lesser General Public License % along with DOLFIN. If not, see . hmin = 1.0; hlist = hmin*ones(size(p, 2), 1); for triangle = t i0 = triangle(1); i1 = triangle(2); i2 = triangle(3); p0 = p(:, i0); p1 = p(:, i1); p2 = p(:, i2); h0 = norm(p1 - p0); h1 = norm(p2 - p1); h2 = norm(p0 - p2); h = min([h0, h1, h2]); hlist(i0) = min(hlist(i0), h); hlist(i1) = min(hlist(i1), h); hlist(i2) = min(hlist(i2), h); hmin = min(h, hmin); end index = (length(hlist) / hmin) / sum(1.0 ./ hlist); dolfin-1.3.0/utils/matlab/plotcontroller.m0000644000175000017500000000175312263014601020507 0ustar johannrjohannr% Copyright (C) 2005 Anders Logg % % This file is part of DOLFIN. % % DOLFIN is free software: you can redistribute it and/or modify % it under the terms of the GNU Lesser General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % DOLFIN is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU Lesser General Public License for more details. % % You should have received a copy of the GNU Lesser General Public License % along with DOLFIN. If not, see . % % Simple script for evaluating the performance of % different time step controllers. clf subplot(2,1,1) plot(t, k) subplot(2,1,2) e = k.*abs(r); semilogy(t, e); hold on plot(t, 2.0*tol*ones(size(t))) plot(t, 1.0*tol*ones(size(t))) plot(t, 0.5*tol*ones(size(t))) grid on xlabel('t') ylabel('e') dolfin-1.3.0/utils/matlab/xmlmatrix.m0000644000175000017500000000340412263014601017445 0ustar johannrjohannrfunction xmlmatrix(filename, A) % XMLMATRIX - SAVE MATRIX TO DOLFIN IN XML FORMAT % % Usage: xmlmatrix(filename, A) % % A - a matrix % % Copyright (C) 2004 Georgios Foufas % % This file is part of DOLFIN. % % DOLFIN is free software: you can redistribute it and/or modify % it under the terms of the GNU Lesser General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % DOLFIN is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU Lesser General Public License for more details. % % You should have received a copy of the GNU Lesser General Public License % along with DOLFIN. If not, see . % % Modified by Anders Logg 2004-2005. % % First added: 2004-02-10 % Last changed: 2005 % Tolerance for sparse matrix tol = 1e-16; % Open file fp = fopen(filename,'w'); %Get matrix size nrows = size(A,1); ncols = size(A,2); % Write header fprintf(fp,'\n\n'); fprintf(fp,'\n'); % Write matrix values disp('Writing matrix...') fprintf(fp,' \n',nrows,ncols); for i=1:nrows % Compute size of row size = round(length(find(abs(A(i,:)) > tol))); fprintf(fp,' \n', i-1, size); for j=1:ncols element = A(i,j); if abs(element) > tol fprintf(fp,' \n', j-1, A(i,j)); end end fprintf(fp,' \n'); end fprintf(fp,' \n'); fprintf(fp,'\n'); % Close file fclose(fp); disp('Done') dolfin-1.3.0/utils/matlab/plotslab.m0000644000175000017500000000764012263014601017246 0ustar johannrjohannr% Copyright (C) 2003-2005 Anders Logg % Copyright (C) 2003 Johan Hoffman % % This file is part of DOLFIN. % % DOLFIN is free software: you can redistribute it and/or modify % it under the terms of the GNU Lesser General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % DOLFIN is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU Lesser General Public License for more details. % % You should have received a copy of the GNU Lesser General Public License % along with DOLFIN. If not, see . % % First added: 2003-11-07 % Last changed: 2005 function M = plotslab(debugfile, interval, drawupdates, drawtext, saveps, savepng) % Usage: M = plotslab(debugfile, interval, drawupdates, drawtext, saveps, savepng) % % Draws and creates a movie M of a time slab. A debug file % is created by DOLFIN when the option 'debug time steps' % is specified. % % Arguments: % % debugfile - name of file containing time stepping data % interval - plot elements within interval % drawupdates - blink element updates % drawtext - draw extra text % saveps - save a postscript file for each frame % savepng - save a png file for each frame % Load the steps disp('Loading file...') timesteps = load(debugfile); % Get the number of components N = max(timesteps(:,2)) + 1; % Get the time interval T1 = interval(1); T2 = interval(2); % Create figure clf axis([T1 T2 -0.3*N 1.2*N]) axis off hold on if drawtext h1 = text(T1,1.1*N,'Action:'); h2 = text(T1,-0.1*N,['t = ' num2str(T1)]); h3 = text(T1,-0.15*N,['i = ' num2str(0)]); end plot([T1 T2],[0 0],'k'); framecount = 1; iterations = 0; % Clear the movie clear M % Step to the correct position for i = 1:size(timesteps,1) a = timesteps(i,1); n = timesteps(i,2); t1 = timesteps(i,3); t2 = timesteps(i,4); if t2 >= T1 break; end end % Draw the elements for j = i:size(timesteps, 1) % Get next element a = timesteps(j,1); n = timesteps(j,2); t1 = timesteps(j,3); t2 = timesteps(j,4); % Go to next element if we don't want to draw updates if ~drawupdates & a == 1 continue end % Check if we have finished if t1 > T2 break end % Check action switch a case 0 % Draw a new box %c = [128 156 178]/256; c = 'b'; drawbox([t1 n], [t2 (n+1)], c); % Draw text if ( drawtext ) set(h1, 'String', 'Action: Creating new element') set(h2, 'String', ['t = ' num2str(t1)]) set(h3, 'String', ['i = ' num2str(n)]) end case 1 % Blink box %c = [0 98 178]/256; c = 'r'; cc = [250 130 180]/256; drawbox([t1 n], [t2 (n+1)], c); % Draw text if ( drawtext ) set(h1, 'String', 'Action: Updating element') set(h2, 'String', ['t = ' num2str(t1)]) set(h3, 'String', ['i = ' num2str(n)]) end % Save frame drawnow M(framecount) = getframe; if saveps print('-depsc', ['frame_' sprintf('%.4d', framecount) '.eps']) elseif savepng print('-dpng', '-r0', ['frame_' sprintf('%.4d', framecount) '.png']) else disp('Press any key to continue') pause end framecount = framecount + 1; % Restore box %c = [128 156 178]/256; c = 'b'; drawbox([t1 n], [t2 (n+1)], c); end % Save frame drawnow M(framecount) = getframe; if saveps print('-depsc', ['frame_' sprintf('%.4d', framecount) '.eps']) elseif savepng print('-dpng', '-r0', ['frame_' sprintf('%.4d', framecount) '.png']) else disp('Press any key to continue') pause end framecount = framecount + 1; end function drawbox(x, y, c) % This function draws a box from x to y with color c x1 = [x(1) y(1) y(1) x(1)]; x2 = [x(2) x(2) y(2) y(2)]; fill(x1, x2, c) dolfin-1.3.0/utils/python/0000755000175000017500000000000012263014601015322 5ustar johannrjohannrdolfin-1.3.0/utils/python/extract2d0000755000175000017500000000452612263014601017157 0ustar johannrjohannr#!/usr/bin/env python # # Extract two-dimensional DOLFIN mesh from three-dimensional DOLFIN mesh. # # Usage: extract2d mesh.xml # # Copyright (C) 2008 Anders Logg # # This file is part of DOLFIN. # # DOLFIN is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # DOLFIN is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with DOLFIN. If not, see . # # First added: 2007-09-02 # Last changed: 2008-09-12 import sys if not len(sys.argv) == 2: print "Usage: extract2D mesh.xml" sys.exit(1) from dolfin import * # Read mesh filename = sys.argv[1] mesh = Mesh(filename) # Check geometry if not mesh.geometry().dim() == 3: print "Not a 3D mesh" sys.exit(1) # Create boundary mesh boundary = BoundaryMesh(mesh) # Extract cells and vertices on the boundary eps = 1e-12 cells = [] coordinates = boundary.coordinates() vertex_map = {} vertex_coordinates = [] k = 0 for cell in boundary.cells(): xs = coordinates[cell] if all([x[2] < eps for x in xs]): cells.append(cell) for vertex in cell: if not vertex in vertex_map: vertex_map[vertex] = k vertex_coordinates.append(coordinates[vertex]) k += 1 # Write mesh file = open(filename.split(".")[0] + "-2d.xml", "w") file.write("""\ """ % len(vertex_map)) for i in range(len(vertex_map)): x = vertex_coordinates[i] file.write(' \n' % (i, x[0], x[1])) file.write("""\ """ % len(cells)) for i in range(len(cells)): v = [vertex_map[v] for v in cells[i]] file.write(' \n' % (i, v[0], v[1], v[2])) file.write(""" """) file.close() dolfin-1.3.0/utils/python/README0000644000175000017500000000017212263014601016202 0ustar johannrjohannrPlace for random Python utilities that we may or may not want to include as part of the official DOLFIN Python interface. dolfin-1.3.0/dolfin/0000755000175000017500000000000012263014601014114 5ustar johannrjohannrdolfin-1.3.0/dolfin/generation/0000755000175000017500000000000012263014601016247 5ustar johannrjohannrdolfin-1.3.0/dolfin/generation/PolyhedronUtils.cpp0000644000175000017500000004625312263014601022131 0ustar johannrjohannr// Copyright (C) 2012 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2012-10-31 // Last changed: 2012-11-14 #ifdef HAS_CGAL #include #include #include #include #include #include "PolyhedronUtils.h" #include #include #include #include #include #include #include #include #define BOOST_FILESYSTEM_NO_DEPRECATED #include #include #include #include #include using namespace dolfin; static inline double strToDouble(const std::string& s, bool print=false) { std::istringstream is(s); double val; is >> val; if (print) cout << "to_double " << s << " : " << val << endl; return val; } dolfin::LogStream& operator << (dolfin::LogStream& stream, const boost::tuple& obj) { stream << obj.get<0>() << " " << obj.get<1>() << " " << obj.get<2>(); return stream; } template class BuildFromSTL : public CGAL::Modifier_base { public: BuildFromSTL(std::string filename) : _filename(filename){} void operator()(HDS& hds) { cout << "Reading surface from " << _filename << endl; CGAL::Polyhedron_incremental_builder_3 builder( hds, true); builder.begin_surface(100000, 100000); typedef boost::tokenizer > tokenizer; std::ifstream file(_filename.c_str()); if (!file.is_open()) { dolfin_error("PolyhedronUtils.cpp", "open .stl file to read 3D surface", "Failed to open file"); } std::size_t num_vertices = 0; std::map, std::size_t> vertex_map; std::vector > facets; std::string line; const boost::char_separator sep(" "); // Read the first line and trim away whitespaces std::getline(file, line); boost::algorithm::trim(line); if (line.substr(0, 5) != "solid") { dolfin_error("PolyhedronUtils.cpp", "open .stl file to read 3D surface", "File does not start with \"solid\""); } // TODO: Read name of solid std::getline(file, line); boost::algorithm::trim(line); while (file.good()) { //bool has_normal = false; //Point normal; // Read the line "facet normal n1 n2 n3" { tokenizer tokens(line, sep); tokenizer::iterator tok_iter = tokens.begin(); if (*tok_iter != "facet") dolfin_error("PolyhedronUtils.cpp", "open .stl file to read 3D surface", "Expected keyword \"facet\""); ++tok_iter; // Check if a normal different from zero is given if (tok_iter != tokens.end()) { //cout << "Expecting normal" << endl; if (*tok_iter != "normal") dolfin_error("PolyhedronUtils.cpp", "open .stl file to read 3D surface", "Expected keyword \"normal\""); ++tok_iter; //cout << "Read line: " << line << endl; // for (std::size_t i = 0; i < 3; ++i) // { // normal[i] = strToDouble(*tok_iter); // ++tok_iter; // } //cout << "Normal: " << normal << endl; // if (normal.norm() > DOLFIN_EPS) // has_normal = true; // if (tok_iter != tokens.end()) // dolfin_error("PolyhedronUtils.cpp", // "open .stl file to read 3D surface", // "Expected end of line"); } } // Read "outer loop" line std::getline(file, line); boost::algorithm::trim(line); if (line != "outer loop") dolfin_error("PolyhedronUtils.cpp", "open .stl file to read 3D surface", "Expected key word outer loop"); std::vector v_indices(3); // Read lines with vertices for (std::size_t i = 0; i < 3; ++i) { std::getline(file, line); boost::algorithm::trim(line); //cout << "read line: " << line << endl; tokenizer tokens(line, sep); tokenizer::iterator tok_iter = tokens.begin(); if (*tok_iter != "vertex") { dolfin_error("PolyhedronUtils.cpp", "open .stl file to read 3D surface", "Expected key word vertex"); } ++tok_iter; const double x = strToDouble(*tok_iter); ++tok_iter; const double y = strToDouble(*tok_iter); ++tok_iter; const double z = strToDouble(*tok_iter); ++tok_iter; boost::tuple v(x, y, z); if (vertex_map.count(v) > 0) v_indices[i] = vertex_map[v]; else { vertex_map[v] = num_vertices; v_indices[i] = num_vertices; builder.add_vertex(csg::Exact_Point_3(x, y, z)); num_vertices++; } } // TODO // if (has_normal) // { // cout << "Has normal" << endl; // } builder.add_facet(v_indices.begin(), v_indices.end()); // Read 'endloop' line std::getline(file, line); boost::algorithm::trim(line); if (line != "endloop") { dolfin_error("PolyhedronUtils.cpp", "open .stl file to read 3D surface", "Expected key word endloop"); } std::getline(file, line); boost::algorithm::trim(line); if (line != "endfacet") { dolfin_error("PolyhedronUtils.cpp", "open .stl file to read 3D surface", "Expected key word endfacet"); } std::getline(file, line); boost::algorithm::trim(line); if (line.substr(0, 5) != "facet") break; } // Read the 'endsolid' line tokenizer tokens(line, sep); tokenizer::iterator tok_iter = tokens.begin(); if (*tok_iter != "endsolid") { dolfin_error("PolyhedronUtils.cpp", "open .stl file to read 3D surface", "Expected key word endsolid"); } ++tok_iter; builder.end_surface(); // TODO: Check name of solid cout << "Done reading surface" << endl; } const std::string _filename; }; //----------------------------------------------------------------------------- void PolyhedronUtils::readSurfaceFile(std::string filename, csg::Exact_Polyhedron_3& p) { boost::filesystem::path fpath(filename); if (fpath.extension() == ".stl") { readSTLFile(filename, p); } else if(fpath.extension() == ".off") { // TODO: Let cgal parse the file } else { dolfin_error("PolyhedronUtils.cpp", "open file to read 3D surface", "Unknown file type"); } } //----------------------------------------------------------------------------- void PolyhedronUtils::readSTLFile(std::string filename, csg::Exact_Polyhedron_3& p) { BuildFromSTL stl_builder(filename); p.delegate(stl_builder); } //----------------------------------------------------------------------------- CGAL::Bbox_3 PolyhedronUtils::getBoundingBox(csg::Polyhedron_3& polyhedron) { csg::Polyhedron_3::Vertex_iterator it = polyhedron.vertices_begin(); // Initialize bounding box with the first point csg::Polyhedron_3::Point_3 p0 = it->point(); CGAL::Bbox_3 b(p0[0], p0[1], p0[2], p0[0], p0[1], p0[2]); ++it; for (; it != polyhedron.vertices_end(); ++it) { csg::Polyhedron_3::Point_3 p1 = it->point(); b = b + CGAL::Bbox_3(p1[0], p1[1], p1[2], p1[0], p1[1], p1[2]); } return b; } //----------------------------------------------------------------------------- double PolyhedronUtils::getBoundingSphereRadius(csg::Polyhedron_3& polyhedron) { typedef double FT; typedef CGAL::Cartesian_d K; typedef CGAL::Min_sphere_of_spheres_d_traits_d MinSphereTraits; typedef CGAL::Min_sphere_of_spheres_d Min_sphere; typedef MinSphereTraits::Sphere Sphere; typedef K::Point_d Point_d; std::vector S; FT coord[3]; for (csg::Polyhedron_3::Vertex_iterator it=polyhedron.vertices_begin(); it != polyhedron.vertices_end(); ++it) { coord[0] = it->point().x(); coord[1] = it->point().y(); coord[2] = it->point().z(); Point_d p(3, coord,coord+3); S.push_back(Sphere(p, 0.0)); } Min_sphere ms(S.begin(), S.end()); CGAL_assertion(ms.is_valid()); return CGAL::to_double(ms.radius()); } //----------------------------------------------------------------------------- template static inline double get_edge_length(typename Polyhedron::Halfedge::Halfedge_handle halfedge) { return CGAL::to_double((halfedge->vertex()->point() - halfedge->opposite()->vertex()->point()).squared_length()); } //----------------------------------------------------------------------------- template static inline double get_triangle_area(typename Polyhedron::Facet_handle facet) { const typename Polyhedron::Halfedge_handle edge = facet->halfedge(); const typename Polyhedron::Point_3 a = edge->vertex()->point(); const typename Polyhedron::Point_3 b = edge->next()->vertex()->point(); const typename Polyhedron::Point_3 c = edge->next()->next()->vertex()->point(); return CGAL::to_double(CGAL::cross_product(b-a, c-a).squared_length()); } //----------------------------------------------------------------------------- template static inline double get_min_edge_length(typename Polyhedron::Facet_handle facet) { typename Polyhedron::Facet::Halfedge_around_facet_circulator half_edge = facet->facet_begin(); double min_length = CGAL::to_double((half_edge->vertex()->point() - half_edge->opposite()->vertex()->point()).squared_length()); half_edge++; min_length = std::min(min_length, get_edge_length(half_edge)); half_edge++; min_length = std::min(min_length, get_edge_length(half_edge)); return min_length; } //----------------------------------------------------------------------------- template bool facet_is_degenerate(typename Polyhedron::Facet_handle facet, const double threshold) { return get_min_edge_length(facet) < threshold || get_triangle_area(facet) < threshold; } //----------------------------------------------------------------------------- template static int number_of_degenerate_facets(Polyhedron& p, const double threshold) { int count = 0; for (typename Polyhedron::Facet_iterator facet = p.facets_begin(); facet != p.facets_end(); facet++) { dolfin_assert(facet->is_triangle()); if ( facet_is_degenerate(facet, threshold) ) count++; } return count; } //----------------------------------------------------------------------------- template static typename Polyhedron::Halfedge_handle get_longest_edge(typename Polyhedron::Facet_handle facet) { typename Polyhedron::Halfedge_handle edge = facet->halfedge(); double length = get_edge_length(edge); { typename Polyhedron::Halfedge_handle e_tmp = edge->next(); if (get_edge_length(e_tmp) > length) { length = get_edge_length(e_tmp); edge = e_tmp; } } { typename Polyhedron::Halfedge_handle e_tmp = edge->next()->next(); if ( get_edge_length(e_tmp) > length ) { length = get_edge_length(e_tmp); edge = e_tmp; } } return edge; } //----------------------------------------------------------------------------- template double shortest_edge(Polyhedron& p) { double shortest = std::numeric_limits::max(); for (typename Polyhedron::Halfedge_iterator halfedge = p.halfedges_begin(); halfedge != p.halfedges_end(); halfedge++) { const double length = get_edge_length(halfedge); shortest = std::min(shortest, length); } return shortest; } //----------------------------------------------------------------------------- template static void remove_edge(Polyhedron& p, typename Polyhedron::Halfedge_handle& edge) { // // FIXME: Is it possible to do this in a smarter way than a linear scan // for (csg::Polyhedron_3::Facet_iterator facet = p.facets_begin(); // facet != p.facets_end(); facet++) // { // if ( facet_is_degenerate(facet, threshold) ) // { // //print_facet(facet); // // Find a short edge // csg::Polyhedron_3::Halfedge::Halfedge_handle shortest_edge = facet->facet_begin(); // csg::Polyhedron_3::Facet::Halfedge_around_facet_circulator current_edge = facet->facet_begin(); // double min_length = get_edge_length(current_edge); // for (int i = 0; i < 2; i++) // { // current_edge++; // if (get_edge_length(current_edge) < min_length) // { // shortest_edge = current_edge; // min_length = get_edge_length(current_edge); // } // } // Join small triangles with neighbor facets edge = p.join_facet(edge->next()); p.join_facet(edge->opposite()->prev()); // The joined facets are now quads // Join the two close vertices p.join_vertex(edge); } //----------------------------------------------------------------------------- template static void remove_short_edges(Polyhedron& p, const double threshold) { while (true) { bool removed = false; for (typename Polyhedron::Halfedge_iterator halfedge = p.halfedges_begin(); halfedge != p.halfedges_end(); halfedge++) { if (get_edge_length(halfedge) < threshold) { remove_edge(p, halfedge); removed = true; break; } } if (!removed) break; } } //----------------------------------------------------------------------------- template static typename Polyhedron::Point_3 facet_midpoint(typename Polyhedron::Facet_handle facet) { typename Polyhedron::Point_3 p(CGAL::ORIGIN); typename Polyhedron::Facet::Halfedge_around_facet_circulator half_edge = facet->facet_begin(); for (std::size_t i = 0; i < facet->facet_degree(); i++) { p = p + (half_edge->vertex()->point() - CGAL::ORIGIN); half_edge++; } p = CGAL::ORIGIN + (p - CGAL::ORIGIN)/static_cast(facet->facet_degree()); // std::cout << "Center coordinates computed: " << p << std::endl; // half_edge = facet->facet_begin(); // for (std::size_t i = 0; i < facet->facet_degree(); i++) // { // std::cout << "Distance to point << " << half_edge->vertex()->point() << " = " << (half_edge->vertex()->point() - p).squared_length() << std::endl; // half_edge++; // } return p; } //----------------------------------------------------------------------------- template static void remove_triangle(Polyhedron& p, typename Polyhedron::Facet_handle facet) { dolfin_assert(facet->is_triangle()); // cout << "Removing triangle" << endl; // print_facet(facet); // Find the longest edge typename Polyhedron::Halfedge_handle edge = get_longest_edge(facet); // cout << "Longest edge" << endl; // print_halfedge(edge); // cout << "Opposite triangle" << endl; // print_facet(edge->opposite()->facet()); edge = p.join_facet(edge); // cout << "Edge after join: " << endl; // print_halfedge(edge); // cout << "Facet after join" << endl; // print_facet(edge->facet()); typename Polyhedron::Point_3 new_center = facet_midpoint(edge->facet()); edge = p.create_center_vertex(edge); edge->vertex()->point() = new_center; // std::cout << "Center vertex: " << edge->vertex()->point() << std::endl; // for (std::size_t i=0; i < 4; i++) // { // print_facet(edge->facet()); // edge = edge->next()->opposite(); // } } //----------------------------------------------------------------------------- template static void remove_small_triangles(Polyhedron& p, const double threshold) { int n = number_of_degenerate_facets(p, threshold); while (n > 0) { for (typename Polyhedron::Facet_iterator facet = p.facets_begin(); facet != p.facets_end(); facet++) { dolfin_assert(facet->is_triangle()); if (get_triangle_area(facet) < threshold) { // cout << "Small triangle detected" << endl; // print_facet(facet); remove_triangle(p, facet); n = number_of_degenerate_facets(p, threshold); break; } } } } //----------------------------------------------------------------------------- void PolyhedronUtils::remove_degenerate_facets(csg::Exact_Polyhedron_3& p, const double threshold) { int degenerate_facets = number_of_degenerate_facets(p, threshold); cout << "Number of degenerate facets: " << degenerate_facets << endl; // FIXME: Use has_degenerate_facets() when debugging is done if (degenerate_facets > 0) { dolfin_assert(p.is_pure_triangle()); shortest_edge(p); cout << "Removing triangles with short edges" << endl; remove_short_edges(p, threshold); cout << "Number of degenerate facets: " << number_of_degenerate_facets(p, threshold) << endl; cout << "Removing small triangles" << endl; remove_small_triangles(p, threshold); cout << "Number of degenerate facets: " << number_of_degenerate_facets(p, threshold) << endl; // Removal of triangles should preserve the triangular structure // of the polyhedron dolfin_assert(p.is_pure_triangle()); } } //----------------------------------------------------------------------------- bool PolyhedronUtils::has_degenerate_facets(csg::Exact_Polyhedron_3& p, double threshold) { for (csg::Exact_Polyhedron_3::Facet_iterator facet = p.facets_begin(); facet != p.facets_end(); facet++) { dolfin_assert(facet->is_triangle()); if (facet_is_degenerate(facet, threshold)) return true; } return false; } //----------------------------------------------------------------------------- #endif dolfin-1.3.0/dolfin/generation/ImplicitDomainMeshGenerator.h0000644000175000017500000000357312263014601024016 0ustar johannrjohannr// Copyright (C) 2013 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-07-07 // Last changed: #ifndef __DOLFIN_IMPLICITDOMAINMESHGENERATOR_H #define __DOLFIN_IMPLICITDOMAINMESHGENERATOR_H #ifdef HAS_CGAL #include #include namespace dolfin { // Forward declarations class ImplicitSurface; class Mesh; /// Generate surface or volume meshes from implicit representations /// of a domain modelled by the abstract dolfin::ImplicitSurface /// class. CGAL is used for the mesh generation. class ImplicitDomainMeshGenerator { public: /// Create volume mesh from implicit surface representation static void generate(Mesh& mesh, const ImplicitSurface& surface, double cell_size); /// Create surface mesh from implicit surface representation. This /// function uses the CGAL 3D mesh genrator static void generate_surface(Mesh& mesh, const ImplicitSurface& surface, double cell_size); private: // Build CGAL triangulation template static X build_cgal_triangulation(const ImplicitSurface& surface, const Y& mesh_criteria); }; } #endif #endif dolfin-1.3.0/dolfin/generation/CSGMeshGenerator.h0000644000175000017500000000273312263014601021525 0ustar johannrjohannr// Copyright (C) 2012 Anders Logg (and others, add authors) // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Benjamin Kehlet, 2012 // Modified by Joachim B Haga, 2012 // // First added: 2012-04-13 // Last changed: 2012-09-06 #ifndef __CSG_MESH_GENERATOR_H #define __CSG_MESH_GENERATOR_H #include #include "CSGGeometry.h" namespace dolfin { // Forward declarations class Mesh; class BoundaryMesh; /// Mesh generator for Constructive Solid Geometry (CSG) class CSGMeshGenerator { public : /// Generate mesh from CSG geometry static void generate(Mesh& mesh, const CSGGeometry& geometry, std::size_t resolution); /// Generate boundary mesh from the surface of a CSG geometry static void generate(BoundaryMesh& mesh, const CSGGeometry& geometry); }; } #endif dolfin-1.3.0/dolfin/generation/dolfin_generation.h0000644000175000017500000000265312263014601022114 0ustar johannrjohannr#ifndef __DOLFIN_GENERATION_H #define __DOLFIN_GENERATION_H // DOLFIN mesh generation interface #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif dolfin-1.3.0/dolfin/generation/UnitInterval.h0000644000175000017500000000273212263014601021050 0ustar johannrjohannr// Copyright (C) 2012 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2012-11-09 // Last changed: 2013-01-07 #ifndef __UNIT_INTERVAL_H #define __UNIT_INTERVAL_H #include "UnitIntervalMesh.h" #include namespace dolfin { /// A mesh of the unit interval (0, 1) with a given number of cells /// (nx) in the axial direction. The total number of intervals will /// be nx and the total number of vertices will be (nx + 1). /// /// This class has been deprecated. Use _UnitIntervalMesh_. class UnitInterval : public UnitIntervalMesh { public: /// Create mesh of unit interval UnitInterval(std::size_t nx=1) : UnitIntervalMesh(nx) { deprecation("UnitInterval", "1.1.0", "The class UnitInterval has been replaced by UnitIntervalMesh."); } }; } #endif dolfin-1.3.0/dolfin/generation/CSGCGALMeshGenerator3D.h0000644000175000017500000000423312263014601022340 0ustar johannrjohannr// Copyright (C) 2012 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Joachim B Haga 2012 // // First added: 2012-05-10 // Last changed: 2012-09-06 #ifndef __CSG_CGAL_MESH_GENERATOR3D_H #define __CSG_CGAL_MESH_GENERATOR3D_H #include #include namespace dolfin { // Forward declarations class Mesh; class CSGGeometry; /// Mesh generator for Constructive Solid Geometry (CSG) /// utilizing CGALs boolean operation on Nef_polyhedrons. class CSGCGALMeshGenerator3D : public Variable { public : CSGCGALMeshGenerator3D(const CSGGeometry& geometry); CSGCGALMeshGenerator3D(boost::shared_ptr geometry); ~CSGCGALMeshGenerator3D(); void generate(Mesh& mesh) const; void save_off(std::string filename) const; /// Default parameter values static Parameters default_parameters() { Parameters p("csg_cgal_meshgenerator"); p.add("mesh_resolution", 64); p.add("perturb_optimize", false); p.add("exude_optimize", false); p.add("lloyd_optimize", false); p.add("odt_optimize", false); p.add("edge_size", 0.025); p.add("facet_angle", 25.0); p.add("facet_size", 0.05); p.add("facet_distance", 0.005); p.add("cell_radius_edge_ratio", 3.0); p.add("cell_size", 0.05); p.add("remove_degenerated", true); p.add("detect_sharp_features", true); return p; } private: boost::shared_ptr _geometry; }; } #endif dolfin-1.3.0/dolfin/generation/cgal_csg3d.h0000644000175000017500000000345412263014601020417 0ustar johannrjohannr#ifdef HAS_CGAL #define CGAL_NO_DEPRECATED_CODE #define CGAL_MESH_3_VERBOSE //#define PROTECTION_DEBUG #define CGAL_MESH_3_NO_DEPRECATED_SURFACE_INDEX #define CGAL_MESH_3_NO_DEPRECATED_C3T3_ITERATORS #include #include #include #include #include #include #include #include #include #include #include #include #include namespace dolfin { namespace csg { // Exact polyhedron typedef CGAL::Exact_predicates_exact_constructions_kernel Exact_Kernel; typedef Exact_Kernel::Triangle_3 Exact_Triangle_3; typedef CGAL::Nef_polyhedron_3 Nef_polyhedron_3; typedef CGAL::Polyhedron_3 Exact_Polyhedron_3; typedef Exact_Polyhedron_3::HalfedgeDS Exact_HalfedgeDS; typedef Nef_polyhedron_3::Point_3 Exact_Point_3; // Domain typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Mesh_polyhedron_3::type Polyhedron_3; typedef K::Point_3 Point_3; typedef K::Vector_3 Vector_3; typedef K::Triangle_3 Triangle_3; typedef CGAL::Polyhedral_mesh_domain_with_features_3 Mesh_domain; // Triangulation typedef CGAL::Mesh_triangulation_3::type Tr; typedef CGAL::Mesh_complex_3_in_triangulation_3< Tr,Mesh_domain::Corner_index,Mesh_domain::Curve_segment_index> C3t3; // Criteria typedef CGAL::Mesh_criteria_3 Mesh_criteria; } } #endif dolfin-1.3.0/dolfin/generation/PolyhedronUtils.h0000644000175000017500000000425412263014601021571 0ustar johannrjohannr// Copyright (C) 2012 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2012-10-31 // Last changed: 2012-11-14 // Some utilities for working with cgal polyhedrons #ifndef __POLYHEDRON_UTILS_H #define __POLYHEDRON_UTILS_H #ifdef HAS_CGAL #include "cgal_csg3d.h" #include "self_intersect.h" // This file should be be included in any other header files to avoid // CGAL leaking into the DOLFIN code. namespace dolfin { class PolyhedronUtils { public: static void readSurfaceFile(std::string filename, csg::Exact_Polyhedron_3& p); static void readSTLFile(std::string filename, csg::Exact_Polyhedron_3& p); static CGAL::Bbox_3 getBoundingBox(csg::Polyhedron_3& polyhedron); static double getBoundingSphereRadius(csg::Polyhedron_3& polyhedron); static bool has_degenerate_facets(csg::Exact_Polyhedron_3& p, double threshold); static void remove_degenerate_facets(csg::Exact_Polyhedron_3& p, const double threshold); template bool has_self_intersections(Polyhedron& p) { typedef typename Polyhedron::Triangle_3 Triangle; typedef typename std::back_insert_iterator > OutputIterator; std::list triangles; // intersecting triangles ::self_intersect(p, std::back_inserter(triangles)); return triangles.size() > 0; } }; } #endif #endif dolfin-1.3.0/dolfin/generation/RectangleMesh.h0000644000175000017500000000377612263014601021156 0ustar johannrjohannr// Copyright (C) 2005-2011 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2005-12-02 // Last changed: 2012-11-12 #ifndef __RECTANGLE_MESH_H #define __RECTANGLE_MESH_H #include namespace dolfin { /// Triangular mesh of the 2D rectangle (x0, y0) x (x1, y1). /// Given the number of cells (nx, ny) in each direction, /// the total number of triangles will be 2*nx*ny and the /// total number of vertices will be (nx + 1)*(ny + 1). /// /// *Arguments* /// x0 (double) /// :math:`x`-min. /// y0 (double) /// :math:`y`-min. /// x1 (double) /// :math:`x`-max. /// y1 (double) /// :math:`y`-max. /// xn (double) /// Number of cells in :math:`x`-direction. /// yn (double) /// Number of cells in :math:`y`-direction. /// diagonal (string) /// Direction of diagonals: "left", "right", "left/right", "crossed" /// /// *Example* /// .. code-block:: c++ /// /// // Mesh with 6 cells in each direction on the /// // set [-1,2] x [-1,2] /// Box mesh(-1, -1, 2, 2, 6, 6; class RectangleMesh : public Mesh { public: RectangleMesh(double x0, double y0, double x1, double y1, std::size_t nx, std::size_t ny, std::string diagonal="right"); }; } #endif dolfin-1.3.0/dolfin/generation/UnitTetrahedronMesh.cpp0000644000175000017500000000412612263014601022712 0ustar johannrjohannr// Copyright (C) 2010 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2010-10-19 // Last changed: 2012-11-09 #include #include #include #include "UnitTetrahedronMesh.h" using namespace dolfin; //----------------------------------------------------------------------------- UnitTetrahedronMesh::UnitTetrahedronMesh() : Mesh() { // Receive mesh according to parallel policy if (MPI::is_receiver()) { MeshPartitioning::build_distributed_mesh(*this); return; } // Open mesh for editing MeshEditor editor; editor.open(*this, CellType::tetrahedron, 3, 3); // Create vertices editor.init_vertices(4); std::vector x(3); x[0] = 0.0; x[1] = 0.0; x[2] = 0.0; editor.add_vertex(0, x); x[0] = 1.0; x[1] = 0.0; x[2] = 0.0; editor.add_vertex(1, x); x[0] = 0.0; x[1] = 1.0; x[2] = 0.0; editor.add_vertex(2, x); x[0] = 0.0; x[1] = 0.0; x[2] = 1.0; editor.add_vertex(3, x); // Create cells editor.init_cells(1); std::vector cell_data(4); cell_data[0] = 0; cell_data[1] = 1; cell_data[2] = 2; cell_data[3] = 3; editor.add_cell(0, cell_data); // Close mesh editor editor.close(); // Broadcast mesh according to parallel policy if (MPI::is_broadcaster()) { MeshPartitioning::build_distributed_mesh(*this); return; } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/generation/ImplicitDomainMeshGenerator.cpp0000644000175000017500000001624512263014601024351 0ustar johannrjohannr// Copyright (C) 2012 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2012-02-03 // Last changed: 2012-02-16 #ifdef HAS_CGAL #include #include #include #include #include #include #include #include #include #include #include #if CGAL_VERSION_NR >= 1040301000 #include #endif #include #include #include #include #include #include #include #include #include #include #include "CGALMeshBuilder.h" #include "ImplicitDomainMeshGenerator.h" // CGAL kernel typedefs typedef CGAL::Exact_predicates_inexact_constructions_kernel K; // Point typedef K::Point_3 Point_3; typedef CGAL::Robust_weighted_circumcenter_filtered_traits_3 Geom_traits; // Call-back function typedef boost::function Function; // Mesh domain typedef CGAL::Implicit_mesh_domain_3 Mesh_domain0; typedef CGAL::Mesh_domain_with_polyline_features_3 Mesh_domain; // CGAL 3D triangulation vertex typedefs typedef CGAL::Triangulation_vertex_base_3 Tvb3_base; typedef CGAL::Triangulation_vertex_base_with_info_3 Tvb3; typedef CGAL::Mesh_vertex_base_3 Vertex_base; // CGAL 3D triangulation cell typedefs #if CGAL_VERSION_NR >= 1040301000 typedef CGAL::Compact_mesh_cell_base_3 Cb; typedef CGAL::Triangulation_cell_base_with_info_3 Cell_base; #else typedef CGAL::Triangulation_cell_base_3 Tcb3_base; typedef CGAL::Triangulation_cell_base_with_info_3 Tcb3; typedef CGAL::Mesh_cell_base_3 Cell_base; #endif // CGAL 3D triangulation typedefs typedef CGAL::Triangulation_data_structure_3 Tds_mesh; typedef CGAL::Regular_triangulation_3 Tr; // Triangulation typedef CGAL::Mesh_complex_3_in_triangulation_3 C3t3; // Criteria typedef CGAL::Mesh_criteria_3 Mesh_criteria; using namespace dolfin; // Lightweight class for wrapping callback to // ImplicitSurface::operator() class ImplicitSurfaceWrapper { public: ImplicitSurfaceWrapper(const ImplicitSurface& surface) : _surface(surface) {} ~ImplicitSurfaceWrapper() {} double f(const Point_3& p) { _p[0] = p[0]; _p[1] = p[1]; _p[2] = p[2]; return _surface(_p); } private: const ImplicitSurface& _surface; Point _p; }; //----------------------------------------------------------------------------- void ImplicitDomainMeshGenerator::generate(Mesh& mesh, const ImplicitSurface& surface, double cell_size) { if (MPI::process_number() == 0) { // Mesh criteria Mesh_criteria criteria(CGAL::parameters::edge_size=cell_size, CGAL::parameters::facet_angle=30, CGAL::parameters::facet_size=cell_size, CGAL::parameters::cell_size=cell_size); // Build CGAL mesh C3t3 c3t3 = build_cgal_triangulation(surface, criteria); // Build DOLFIN mesh from CGAL 3D mesh/triangulation CGALMeshBuilder::build_from_mesh(mesh, c3t3); } // Build distributed mesh MeshPartitioning::build_distributed_mesh(mesh); } //----------------------------------------------------------------------------- void ImplicitDomainMeshGenerator::generate_surface(Mesh& mesh, const ImplicitSurface& surface, double cell_size) { if (MPI::process_number() == 0) { // CGAL mesh paramters Mesh_criteria criteria(CGAL::parameters::edge_size=cell_size, CGAL::parameters::facet_angle=30, CGAL::parameters::facet_size=cell_size, CGAL::parameters::cell_size=0.0); // Build CGAL mesh C3t3 c3t3 = build_cgal_triangulation(surface, criteria); // Build surface DOLFIN mesh from CGAL 3D mesh/triangulation CGALMeshBuilder::build_surface_mesh_c3t3(mesh, c3t3, &surface); } // Build distributed mesh MeshPartitioning::build_distributed_mesh(mesh); } //----------------------------------------------------------------------------- template X ImplicitDomainMeshGenerator::build_cgal_triangulation(const ImplicitSurface& surface, const Y& mesh_criteria) { // Wrap implicit surface ImplicitSurfaceWrapper surface_wrapper(surface); boost::function f(boost::bind(&ImplicitSurfaceWrapper::f, &surface_wrapper, _1)); // Create CGAL bounding sphere const Point c = surface.sphere.c; dolfin_assert(surface.sphere.r > 0.0); K::Sphere_3 bounding_sphere(Point_3(c[0], c[1], c[2]), surface.sphere.r*surface.sphere.r); // Create mesh domain Mesh_domain domain(f, bounding_sphere, 1.0e-5); // Add polylines (if any) std::list > cgal_polylines; std::list >::const_iterator polyline; const std::list >& polylines = surface.polylines; for (polyline = polylines.begin(); polyline != polylines.end(); ++polyline) { std::vector _line; _line.reserve(polyline->size()); std::vector::const_iterator p; for (p = polyline->begin(); p != polyline->end(); ++p) _line.push_back(Point_3(p->x(), p->y(), p->z())); cgal_polylines.push_back(_line); } // Add polyline features domain.add_features(cgal_polylines.begin(), cgal_polylines.end()); // Generate CGAL mesh return CGAL::make_mesh_3(domain, mesh_criteria); } //----------------------------------------------------------------------------- #endif dolfin-1.3.0/dolfin/generation/Interval.h0000644000175000017500000000344012263014601020205 0ustar johannrjohannr// Copyright (C) 2012 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2012-11-10 // Last changed: 2012-11-10 #ifndef __INTERVAL_H #define __INTERVAL_H #include "dolfin/generation/IntervalMesh.h" namespace dolfin { /* /// Interval mesh of the 1D line [a,b]. Given the number of cells /// (nx) in the axial direction, the total number of intervals will /// be nx and the total number of vertices will be (nx + 1). /// /// This class is deprecated. Use _IntervalMesh_. class Interval : public IntervalMesh { public: /// Constructor /// /// *Arguments* /// nx (std::size_t) /// The number of cells. /// a (double) /// The minimum point (inclusive). /// b (double) /// The maximum point (inclusive). /// /// *Example* /// .. code-block:: c++ /// /// // Create a mesh of 25 cells in the interval [-1,1] /// Interval mesh(25, -1.0, 1.0); /// Interval(std::size_t nx, double a, double b) : IntervalMesh(nx, a, b) { warning("Interval is deprecated. Use IntervalMesh."); } }; */ } #endif dolfin-1.3.0/dolfin/generation/UnitCircleMesh.h0000644000175000017500000000252012263014601021275 0ustar johannrjohannr// Copyright (C) 2005-2006 Anders Logg // AL: I don't think I wrote this file, who did? // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Nuno Lopes 2008 // Modified by Anders Logg 2012 // Modified by Benjamin Kehlet 2012 // // First added: 2005-12-02 // Last changed: 2012-11-09 #ifndef __UNIT_CIRCLE_MESH_H #define __UNIT_CIRCLE_MESH_H #include #include namespace dolfin { /// This class is deprecated. class UnitCircleMesh : public CircleMesh { public: /// This class is deprecated UnitCircleMesh(std::size_t n, std::string diagonal="crossed", std::string transformation="rotsumn"); }; } #endif dolfin-1.3.0/dolfin/generation/UnitSquareMesh.h0000644000175000017500000000407712263014601021345 0ustar johannrjohannr// Copyright (C) 2005-2009 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2005-12-02 // Last changed: 2012-11-09 #ifndef __UNIT_SQUARE_MESH_H #define __UNIT_SQUARE_MESH_H #include #include "RectangleMesh.h" namespace dolfin { /// Triangular mesh of the 2D unit square [0,1] x [0,1]. /// Given the number of cells (nx, ny) in each direction, /// the total number of triangles will be 2*nx*ny and the /// total number of vertices will be (nx + 1)*(ny + 1). /// /// std::string diagonal ("left", "right", "right/left", "left/right", /// or "crossed") indicates the direction of the diagonals. class UnitSquareMesh : public RectangleMesh { public: /// Create a uniform finite element _Mesh_ over the unit square /// [0,1] x [0,1]. /// /// *Arguments* /// nx (std::size_t) /// Number of cells in horizontal direction. /// ny (std::size_t) /// Number of cells in vertical direction. /// diagonal (std::string) /// Optional argument: A std::string indicating /// the direction of the diagonals. /// /// *Example* /// .. code-block:: c++ /// /// UnitSquare mesh1(32, 32); /// UnitSquare mesh2(32, 32, "crossed"); /// UnitSquareMesh(std::size_t nx, std::size_t ny, std::string diagonal="right") : RectangleMesh(0.0, 0.0, 1.0, 1.0, nx, ny, diagonal) {} }; } #endif dolfin-1.3.0/dolfin/generation/CSGOperators.cpp0000644000175000017500000001031212263014601021263 0ustar johannrjohannr// Copyright (C) 2012 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Johannes Ring, 2012 // Modified by Benjamin Kehlet, 2013 // // First added: 2012-04-13 // Last changed: 2013-06-24 #include #include #include #include "CSGOperators.h" using namespace dolfin; //----------------------------------------------------------------------------- // CSGUnion //----------------------------------------------------------------------------- CSGUnion::CSGUnion(boost::shared_ptr g0, boost::shared_ptr g1) : _g0(g0), _g1(g1) { assert(g0); assert(g1); // Check dimensions if (g0->dim() != g1->dim()) { dolfin_error("CSGOperators.cpp", "create union of CSG geometries", "Dimensions of geomestries don't match (%d vs %d)", g0->dim(), g1->dim()); } dim_ = g0->dim(); } //----------------------------------------------------------------------------- std::string CSGUnion::str(bool verbose) const { assert(_g0); assert(_g1); std::stringstream s; if (verbose) { s << "\n" << "{\n" << indent(_g0->str(true)) << "\n" << indent(_g1->str(true)) << "\n}"; } else { s << "(" << _g0->str(false) << " + " << _g1->str(false) << ")"; } return s.str(); } //----------------------------------------------------------------------------- // CSGDifference //----------------------------------------------------------------------------- CSGDifference::CSGDifference(boost::shared_ptr g0, boost::shared_ptr g1) : _g0(g0), _g1(g1) { assert(g0); assert(g1); // Check dimensions if (g0->dim() != g1->dim()) { dolfin_error("CSGOperators.cpp", "create difference of CSG geometries", "Dimensions of geomestries don't match (%d vs %d)", g0->dim(), g1->dim()); } dim_ = g0->dim(); } //----------------------------------------------------------------------------- std::string CSGDifference::str(bool verbose) const { assert(_g0); assert(_g1); std::stringstream s; if (verbose) { s << "\n" << "{\n" << indent(_g0->str(true)) << "\n" << indent(_g1->str(true)) << "\n}"; } else { s << "(" << _g0->str(false) << " - " << _g1->str(false) << ")"; } return s.str(); } //----------------------------------------------------------------------------- // CSGIntersection //----------------------------------------------------------------------------- CSGIntersection::CSGIntersection(boost::shared_ptr g0, boost::shared_ptr g1) : _g0(g0), _g1(g1) { assert(g0); assert(g1); // Check dimensions if (g0->dim() != g1->dim()) { dolfin_error("CSGOperators.cpp", "create intersection of CSG geometries", "Dimensions of geomestries don't match (%d vs %d)", g0->dim(), g1->dim()); } dim_ = g0->dim(); } //----------------------------------------------------------------------------- std::string CSGIntersection::str(bool verbose) const { assert(_g0); assert(_g1); std::stringstream s; if (verbose) { s << "\n" << "{\n" << indent(_g0->str(true)) << "\n" << indent(_g1->str(true)) << "\n}"; } else { s << "(" << _g0->str(false) << " * " << _g1->str(false) << ")"; } return s.str(); } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/generation/GeometryToCGALConverter.cpp0000644000175000017500000005275212263014601023403 0ustar johannrjohannr// Copyright (C) 2012 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2012-05-10 // Last changed: 2012-05-10 // This class is capable of converting a 3D dolfin::CSGGeometry to a // CGAL::Polyhedron_3 #ifdef HAS_CGAL #include #include #include "GeometryToCGALConverter.h" #include "CSGGeometry.h" #include "CSGOperators.h" #include "PolyhedronUtils.h" #include "CSGPrimitives3D.h" #include #include #include #include "cgal_csg3d.h" using namespace dolfin; //----------------------------------------------------------------------------- // Taken from demo/Polyhedron/Scene_nef_polyhedron_item.cpp in the // CGAL source tree. // Quick hacks to convert polyhedra from exact to inexact and // vice-versa template struct Copy_polyhedron_to : public CGAL::Modifier_base { Copy_polyhedron_to(const Polyhedron_input& in_poly) : _in_poly(in_poly) {} void operator()(typename Polyhedron_output::HalfedgeDS& out_hds) { typedef typename Polyhedron_output::HalfedgeDS Output_HDS; CGAL::Polyhedron_incremental_builder_3 builder(out_hds); typedef typename Polyhedron_input::Vertex_const_iterator Vertex_const_iterator; typedef typename Polyhedron_input::Facet_const_iterator Facet_const_iterator; typedef typename Polyhedron_input::Halfedge_around_facet_const_circulator HFCC; builder.begin_surface(_in_poly.size_of_vertices(), _in_poly.size_of_facets(), _in_poly.size_of_halfedges()); for(Vertex_const_iterator vi = _in_poly.vertices_begin(), end = _in_poly.vertices_end(); vi != end ; ++vi) { typename Polyhedron_output::Point_3 p(::CGAL::to_double( vi->point().x()), ::CGAL::to_double( vi->point().y()), ::CGAL::to_double( vi->point().z())); builder.add_vertex(p); } typedef CGAL::Inverse_index Index; Index index(_in_poly.vertices_begin(), _in_poly.vertices_end()); for(Facet_const_iterator fi = _in_poly.facets_begin(), end = _in_poly.facets_end(); fi != end; ++fi) { HFCC hc = fi->facet_begin(); HFCC hc_end = hc; builder.begin_facet (); do { builder.add_vertex_to_facet(index[hc->vertex()]); ++hc; } while( hc != hc_end); builder.end_facet(); } builder.end_surface(); } // end operator()(..) private: const Polyhedron_input& _in_poly; }; // end Copy_polyhedron_to<> template void copy_to(const Poly_A& poly_a, Poly_B& poly_b) { Copy_polyhedron_to modifier(poly_a); poly_b.delegate(modifier); CGAL_assertion(poly_b.is_valid()); } //----------------------------------------------------------------------------- // Convenience routine to make debugging easier. Remove before releasing. static void add_facet(CGAL::Polyhedron_incremental_builder_3& builder, std::vector& vertices, bool print=false) { static int facet_no = 0; if (print) { cout << "Begin facet " << facet_no << endl; if (!vertices.size()) { cout << "No vertices in facet!" << endl; return; } // Print vertices for (std::vector::iterator it=vertices.begin(); it != vertices.end(); it++) cout << "Vertex: " << (*it) << endl; if (builder.test_facet(vertices.begin(), vertices.end())) cout << "Facet ok, size: " << vertices.size() << endl; else cout << "Facet not ok" << endl; } builder.begin_facet(); for (std::vector::iterator it=vertices.begin(); it != vertices.end(); it++) builder.add_vertex_to_facet(*it); builder.end_facet(); if (print) cout << "End facet" << endl; facet_no++; } //----------------------------------------------------------------------------- static void add_vertex(CGAL::Polyhedron_incremental_builder_3& builder, const csg::Exact_Point_3& point, bool print=false) { static int vertex_no = 0; if (print) std::cout << "Adding vertex " << vertex_no << " at " << point << std::endl; builder.add_vertex(point); vertex_no++; } //----------------------------------------------------------------------------- // Sphere //----------------------------------------------------------------------------- class Build_sphere : public CGAL::Modifier_base { public: Build_sphere(const Sphere& sphere) : _sphere(sphere) {} void operator()( csg::Exact_HalfedgeDS& hds ) { const std::size_t num_slices = _sphere._slices; const std::size_t num_sectors = _sphere._slices*2 + 1; const dolfin::Point top = _sphere.c + Point(_sphere.r, 0, 0); const dolfin::Point bottom = _sphere.c - Point(_sphere.r, 0, 0); const dolfin::Point axis = Point(1, 0, 0); const int num_vertices = num_slices*num_sectors+2; const int num_facets = num_sectors*2*num_slices; CGAL::Polyhedron_incremental_builder_3 builder( hds, true ); builder.begin_surface(num_vertices, num_facets); const Point slice_rotation_axis(0, 1, 0); for (std::size_t i = 0; i < num_slices; i++) { const Point sliced = axis.rotate(slice_rotation_axis, (i+1)*DOLFIN_PI/(num_slices+1)); for (std::size_t j = 0; j < num_sectors; j++) { const Point direction = sliced.rotate(axis, j*2.0*DOLFIN_PI/num_sectors); const Point v = _sphere.c + direction*_sphere.r; add_vertex(builder, csg::Exact_Point_3 (v.x(), v.y(), v.z())); } } // Add bottom has index num_vertices-1, top has index num_vertices-2 add_vertex(builder, csg::Exact_Point_3(top.x(), top.y(), top.z())); add_vertex(builder, csg::Exact_Point_3(bottom.x(), bottom.y(), bottom.z())); // Add the side facets for (std::size_t i = 0; i < num_slices-1; i++) { for (std::size_t j = 0; j < num_sectors; j++) { const std::size_t offset1 = i*num_sectors; const std::size_t offset2 = (i+1)*num_sectors; { std::vector f; f.push_back(offset1 + j); f.push_back(offset1 + (j+1)%num_sectors); f.push_back(offset2 + j); add_facet(builder, f); } { std::vector f; f.push_back(offset2 + (j+1)%num_sectors); f.push_back(offset2 + j); f.push_back(offset1 + (j+1)%num_sectors); add_facet(builder, f); } } } // Add the top and bottom facets const std::size_t top_offset = num_sectors*(num_slices-1); for (std::size_t i = 0; i < num_sectors; i++) { { // Bottom facet std::vector f; f.push_back( num_vertices-2 ); f.push_back( (i+1)%num_sectors ); f.push_back(i); add_facet(builder, f); } { // Top facet std::vector f; f.push_back( num_vertices-1 ); f.push_back( top_offset + (i%num_sectors) ); f.push_back( top_offset + (i+1)%num_sectors ); add_facet(builder, f); } } builder.end_surface(); } private: const Sphere& _sphere; }; //----------------------------------------------------------------------------- static void make_sphere(const Sphere* s, csg::Exact_Polyhedron_3& P) { Build_sphere builder(*s); P.delegate(builder); dolfin_assert(P.is_valid()); dolfin_assert(P.is_closed()); } //----------------------------------------------------------------------------- class Build_box : public CGAL::Modifier_base { public: Build_box(const Box* box) : _box(box) {} void operator()( csg::Exact_HalfedgeDS& hds ) { CGAL::Polyhedron_incremental_builder_3 builder(hds, true); builder.begin_surface(8, 12); const double x0 = std::min(_box->_x0, _box->_y0); const double y0 = std::max(_box->_x0, _box->_y0); const double x1 = std::min(_box->_x1, _box->_y1); const double y1 = std::max(_box->_x1, _box->_y1); const double x2 = std::min(_box->_x2, _box->_y2); const double y2 = std::max(_box->_x2, _box->_y2); add_vertex(builder, csg::Exact_Point_3(y0, x1, x2)); add_vertex(builder, csg::Exact_Point_3(x0, x1, y2)); add_vertex(builder, csg::Exact_Point_3(x0, x1, x2)); add_vertex(builder, csg::Exact_Point_3(x0, y1, x2)); add_vertex(builder, csg::Exact_Point_3(y0, x1, y2)); add_vertex(builder, csg::Exact_Point_3(x0, y1, y2)); add_vertex(builder, csg::Exact_Point_3(y0, y1, x2)); add_vertex(builder, csg::Exact_Point_3(y0, y1, y2)); { std::vector f; f.push_back(1); f.push_back(2); f.push_back(3); add_facet(builder, f); } { std::vector f; f.push_back(1); f.push_back(3); f.push_back(5); add_facet(builder, f); } { std::vector f; f.push_back(1); f.push_back(5); f.push_back(4); add_facet(builder, f); } { std::vector f; f.push_back(4); f.push_back(5); f.push_back(7); add_facet(builder, f); } { std::vector f; f.push_back(4); f.push_back(7); f.push_back(0); add_facet(builder, f); } { std::vector f; f.push_back(0); f.push_back(7); f.push_back(6); add_facet(builder, f); } { std::vector f; f.push_back(0); f.push_back(6); f.push_back(2); add_facet(builder, f); } { std::vector f; f.push_back(2); f.push_back(6); f.push_back(3); add_facet(builder, f); } { std::vector f; f.push_back(7); f.push_back(5); f.push_back(6); add_facet(builder, f); } { std::vector f; f.push_back(6); f.push_back(5); f.push_back(3); add_facet(builder, f); } { std::vector f; f.push_back(1); f.push_back(4); f.push_back(2); add_facet(builder, f); } { std::vector f; f.push_back(2); f.push_back(4); f.push_back(0); add_facet(builder, f); } builder.end_surface(); } const Box* _box; }; //----------------------------------------------------------------------------- static void make_box(const Box* b, csg::Exact_Polyhedron_3& P) { Build_box builder(b); P.delegate(builder); dolfin_assert(P.is_closed()); dolfin_assert(P.is_valid()); } //----------------------------------------------------------------------------- static void make_tetrahedron(const Tetrahedron* b, csg::Exact_Polyhedron_3& P) { P.make_tetrahedron(csg::Exact_Point_3(b->_x0.x(), b->_x0.y(), b->_x0.z()), csg::Exact_Point_3(b->_x1.x(), b->_x1.y(), b->_x1.z()), csg::Exact_Point_3(b->_x2.x(), b->_x2.y(), b->_x2.z()), csg::Exact_Point_3(b->_x3.x(), b->_x3.y(), b->_x3.z())); } //----------------------------------------------------------------------------- // Return some vector orthogonal to a static Point generate_orthogonal(const Point& a) { const Point b(0, 1, 0); const Point c(0, 0, 1); // Find a vector not parallel to a. const Point d = (fabs(a.dot(b)) < fabs(a.dot(c))) ? b : c; return a.cross(d); } //----------------------------------------------------------------------------- class Build_cone : public CGAL::Modifier_base { public: Build_cone(const Cone* cone) : _cone(cone) {} void operator()(csg::Exact_HalfedgeDS& hds) { const dolfin::Point axis = (_cone->_top - _cone->_bottom)/(_cone->_top - _cone->_bottom).norm(); dolfin::Point initial = generate_orthogonal(axis); CGAL::Polyhedron_incremental_builder_3 builder(hds, true); const int num_sides = _cone->_slices; const bool top_degenerate = near(_cone->_top_radius, 0.0); const bool bottom_degenerate = near(_cone->_bottom_radius, 0.0); const int num_vertices = (top_degenerate || bottom_degenerate) ? num_sides+2 : num_sides*2+2; builder.begin_surface(num_vertices, num_sides*4); const double delta_theta = 2.0 * DOLFIN_PI / num_sides; for (int i = 0; i < num_sides; ++i) { const double theta = i*delta_theta; const Point rotated = initial.rotate(axis, theta); if (!bottom_degenerate) { const Point p = _cone->_bottom + rotated*_cone->_bottom_radius; const csg::Exact_Point_3 p_(p.x(), p.y(), p.z()); add_vertex(builder, p_); } if (!top_degenerate) { const Point p = _cone->_top + rotated*_cone->_top_radius; const csg::Exact_Point_3 p_(p.x(), p.y(), p.z()); add_vertex(builder, p_); } } // The top and bottom vertices add_vertex(builder, csg::Exact_Point_3(_cone->_bottom.x(), _cone->_bottom.y(), _cone->_bottom.z())); add_vertex(builder, csg::Exact_Point_3(_cone->_top.x(), _cone->_top.y(), _cone->_top.z())); // bottom vertex has index num_vertices-2, top vertex has index num_vertices-1 // Construct the facets on the side. // Vertices must be sorted counter clockwise seen from inside. for (int i = 0; i < num_sides; ++i) { if (top_degenerate) { std::vector f; f.push_back((i + 1)%num_sides); f.push_back(i); f.push_back(num_vertices - 1); add_facet(builder, f); } else if (bottom_degenerate) { std::vector f; f.push_back( (i) ); f.push_back( (i + 1) % num_sides); f.push_back(num_vertices - 1); add_facet(builder, f); } else { //Draw the sides as triangles. const int vertex_offset = i*2; // First triangle std::vector f; f.push_back(vertex_offset); f.push_back(vertex_offset + 1); f.push_back((vertex_offset + 2) % (num_sides*2)); add_facet(builder, f); // Second triangle std::vector g; g.push_back((vertex_offset + 3) % (num_sides*2)); g.push_back((vertex_offset + 2) % (num_sides*2)); g.push_back(vertex_offset + 1); add_facet(builder, g); } } // Construct the bottom facet. if (!bottom_degenerate) { for (int i = num_sides-1; i >= 0; i -= 1) { std::vector f; if (!top_degenerate) { f.push_back(num_vertices-2); f.push_back( i*2); f.push_back( ( (i+1)*2) % (num_sides*2)); } else { f.push_back(num_vertices-2); f.push_back(i); f.push_back( (i+1)%num_sides ); } add_facet(builder, f); } } // Construct the the top facet if (!top_degenerate) { for (int i = 0; i < num_sides; i++) { if (!bottom_degenerate) { std::vector f; f.push_back(num_vertices-1); f.push_back( ( (i+1)*2)%(num_sides*2) +1 ); f.push_back( i*2 + 1 ); add_facet(builder, f); } else { std::vector f; f.push_back(num_vertices-2); f.push_back( (i+1)%num_sides); f.push_back(i); add_facet(builder, f); } } } builder.end_surface(); } private: const Cone* _cone; }; //----------------------------------------------------------------------------- static void make_cone(const Cone* c, csg::Exact_Polyhedron_3& P) { Build_cone builder(c); P.delegate(builder); dolfin_assert(P.is_closed()); dolfin_assert(P.is_valid()); } //----------------------------------------------------------------------------- static void make_surface3D(const Surface3D* s, csg::Exact_Polyhedron_3& P) { dolfin_assert(s); PolyhedronUtils::readSurfaceFile(s->_filename, P); } //----------------------------------------------------------------------------- static boost::shared_ptr convertSubTree(const CSGGeometry *geometry) { switch (geometry->getType()) { case CSGGeometry::Union : { const CSGUnion* u = dynamic_cast(geometry); dolfin_assert(u); boost::shared_ptr g0 = convertSubTree(u->_g0.get()); boost::shared_ptr g1 = convertSubTree(u->_g1.get()); (*g0) += (*g1); return g0; break; } case CSGGeometry::Intersection : { const CSGIntersection* u = dynamic_cast(geometry); dolfin_assert(u); boost::shared_ptr g0 = convertSubTree(u->_g0.get()); boost::shared_ptr g1 = convertSubTree(u->_g1.get()); (*g0) *= (*g1); return g0; break; } case CSGGeometry::Difference : { const CSGDifference* u = dynamic_cast(geometry); dolfin_assert(u); boost::shared_ptr g0 = convertSubTree(u->_g0.get()); boost::shared_ptr g1 = convertSubTree(u->_g1.get()); (*g0) -= (*g1); return g0; break; } case CSGGeometry::Cone : { const Cone* c = dynamic_cast(geometry); dolfin_assert(c); csg::Exact_Polyhedron_3 P; make_cone(c, P); return boost::shared_ptr(new csg::Nef_polyhedron_3(P)); break; } case CSGGeometry::Sphere : { const Sphere* s = dynamic_cast(geometry); dolfin_assert(s); csg::Exact_Polyhedron_3 P; make_sphere(s, P); return boost::shared_ptr(new csg::Nef_polyhedron_3(P)); break; } case CSGGeometry::Box : { const Box* b = dynamic_cast(geometry); dolfin_assert(b); csg::Exact_Polyhedron_3 P; make_box(b, P); return boost::shared_ptr(new csg::Nef_polyhedron_3(P)); break; } case CSGGeometry::Tetrahedron : { const Tetrahedron* b = dynamic_cast(geometry); dolfin_assert(b); csg::Exact_Polyhedron_3 P; make_tetrahedron(b, P); return boost::shared_ptr(new csg::Nef_polyhedron_3(P)); break; } case CSGGeometry::Surface3D : { const Surface3D* b = dynamic_cast(geometry); dolfin_assert(b); csg::Exact_Polyhedron_3 P; make_surface3D(b, P); return boost::shared_ptr(new csg::Nef_polyhedron_3(P)); break; } default: dolfin_error("GeometryToCGALConverter.cpp", "converting geometry to cgal polyhedron", "Unhandled primitive type"); } // Make compiler happy. return boost::shared_ptr(new csg::Nef_polyhedron_3); } //----------------------------------------------------------------------------- void GeometryToCGALConverter::convert(const CSGGeometry& geometry, csg::Polyhedron_3 &p, bool remove_degenerated) { csg::Exact_Polyhedron_3 P; // If the tree has only one node, we don't have to convert to Nef // polyhedrons for csg manipulations if (!geometry.is_operator()) { switch (geometry.getType()) { case CSGGeometry::Cone : { const Cone* c = dynamic_cast(&geometry); dolfin_assert(c); make_cone(c, P); break; } case CSGGeometry::Sphere : { const Sphere* s = dynamic_cast(&geometry); dolfin_assert(s); make_sphere(s, P); break; } case CSGGeometry::Box : { const Box* b = dynamic_cast(&geometry); dolfin_assert(b); make_box(b, P); break; } case CSGGeometry::Tetrahedron : { const Tetrahedron* b = dynamic_cast(&geometry); dolfin_assert(b); make_tetrahedron(b, P); break; } case CSGGeometry::Surface3D : { const Surface3D* b = dynamic_cast(&geometry); dolfin_assert(b); make_surface3D(b, P); break; } default: dolfin_error("GeometryToCGALConverter.cpp", "converting geometry to cgal polyhedron", "Unhandled primitive type"); } } else { cout << "Convert to nef polyhedron" << endl; boost::shared_ptr cgal_geometry = convertSubTree(&geometry); dolfin_assert(cgal_geometry->is_valid()); dolfin_assert(cgal_geometry->is_simple()); cgal_geometry->convert_to_polyhedron(P); } if (remove_degenerated) { cout << "Removing degenerated facets" << endl; PolyhedronUtils::remove_degenerate_facets(P, DOLFIN_SQRT_EPS); } copy_to(P, p); cout << "Number of vertices: " << p.size_of_vertices() << endl; cout << "Number of facets: " << p.size_of_facets() << endl; } //----------------------------------------------------------------------------- #endif dolfin-1.3.0/dolfin/generation/UnitSquare.h0000644000175000017500000000432512263014601020524 0ustar johannrjohannr// Copyright (C) 2012 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2012-11-09 // Last changed: 2013-01-07 #ifndef __UNIT_SQUARE_H #define __UNIT_SQUARE_H #include "UnitSquareMesh.h" namespace dolfin { /// Triangular mesh of the 2D unit square [0,1] x [0,1]. /// Given the number of cells (nx, ny) in each direction, /// the total number of triangles will be 2*nx*ny and the /// total number of vertices will be (nx + 1)*(ny + 1). /// /// std::string diagonal ("left", "right", "right/left", "left/right", /// or "crossed") indicates the direction of the diagonals. /// /// This class is deprecated. Use _UnitSquareMesh_. class UnitSquare : public UnitSquareMesh { public: /// Create a uniform finite element _Mesh_ over the unit square /// [0,1] x [0,1]. /// /// *Arguments* /// nx (std::size_t) /// Number of cells in horizontal direction. /// ny (std::size_t) /// Number of cells in vertical direction. /// diagonal (std::string) /// Optional argument: A std::string indicating /// the direction of the diagonals. /// /// *Example* /// .. code-block:: c++ /// /// UnitSquare mesh1(32, 32); /// UnitSquare mesh2(32, 32, "crossed"); /// UnitSquare(std::size_t nx, std::size_t ny, std::string diagonal="right") : UnitSquareMesh(nx, ny, diagonal) { deprecation("UnitSquare", "1.1.0", "The class UnitSquare has been replaced by UnitSquareMesh."); } }; } #endif dolfin-1.3.0/dolfin/generation/BoxMesh.cpp0000644000175000017500000001117712263014601020327 0ustar johannrjohannr// Copyright (C) 2005-2008 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Garth N. Wells, 2007. // Modified by Nuno Lopes, 2008. // // First added: 2005-12-02 // Last changed: 2012-11-12 #include #include #include #include #include #include "BoxMesh.h" using namespace dolfin; //----------------------------------------------------------------------------- BoxMesh::BoxMesh(double x0, double y0, double z0, double x1, double y1, double z1, std::size_t nx, std::size_t ny, std::size_t nz) : Mesh() { Timer timer("Generate Box mesh"); // Receive mesh according to parallel policy if (MPI::is_receiver()) { MeshPartitioning::build_distributed_mesh(*this); return; } const double a = x0; const double b = x1; const double c = y0; const double d = y1; const double e = z0; const double f = z1; if (std::abs(x0 - x1) < DOLFIN_EPS || std::abs(y0 - y1) < DOLFIN_EPS || std::abs(z0 - z1) < DOLFIN_EPS ) { dolfin_error("BoxMesh.cpp", "create box", "Box seems to have zero width, height or depth. Consider checking your dimensions"); } if ( nx < 1 || ny < 1 || nz < 1 ) { dolfin_error("BoxMesh.cpp", "create box", "BoxMesh has non-positive number of vertices in some dimension: number of vertices must be at least 1 in each dimension"); } rename("mesh", "Mesh of the cuboid (a,b) x (c,d) x (e,f)"); // Open mesh for editing MeshEditor editor; editor.open(*this, CellType::tetrahedron, 3, 3); // Storage for vertex coordinates std::vector x(3); // Create vertices editor.init_vertices((nx + 1)*(ny + 1)*(nz + 1)); std::size_t vertex = 0; for (std::size_t iz = 0; iz <= nz; iz++) { x[2] = e + (static_cast(iz))*(f-e) / static_cast(nz); for (std::size_t iy = 0; iy <= ny; iy++) { x[1] = c + (static_cast(iy))*(d-c) / static_cast(ny); for (std::size_t ix = 0; ix <= nx; ix++) { x[0] = a + (static_cast(ix))*(b-a) / static_cast(nx); editor.add_vertex(vertex, x); vertex++; } } } // Create tetrahedra editor.init_cells(6*nx*ny*nz); std::size_t cell = 0; std::vector > cells(6, std::vector(4)); for (std::size_t iz = 0; iz < nz; iz++) { for (std::size_t iy = 0; iy < ny; iy++) { for (std::size_t ix = 0; ix < nx; ix++) { const std::size_t v0 = iz*(nx + 1)*(ny + 1) + iy*(nx + 1) + ix; const std::size_t v1 = v0 + 1; const std::size_t v2 = v0 + (nx + 1); const std::size_t v3 = v1 + (nx + 1); const std::size_t v4 = v0 + (nx + 1)*(ny + 1); const std::size_t v5 = v1 + (nx + 1)*(ny + 1); const std::size_t v6 = v2 + (nx + 1)*(ny + 1); const std::size_t v7 = v3 + (nx + 1)*(ny + 1); // Note that v0 < v1 < v2 < v3 < vmid. cells[0][0] = v0; cells[0][1] = v1; cells[0][2] = v3; cells[0][3] = v7; cells[1][0] = v0; cells[1][1] = v1; cells[1][2] = v7; cells[1][3] = v5; cells[2][0] = v0; cells[2][1] = v5; cells[2][2] = v7; cells[2][3] = v4; cells[3][0] = v0; cells[3][1] = v3; cells[3][2] = v2; cells[3][3] = v7; cells[4][0] = v0; cells[4][1] = v6; cells[4][2] = v4; cells[4][3] = v7; cells[5][0] = v0; cells[5][1] = v2; cells[5][2] = v6; cells[5][3] = v7; // Add cells std::vector >::const_iterator _cell; for (_cell = cells.begin(); _cell != cells.end(); ++_cell) editor.add_cell(cell++, *_cell); } } } // Close mesh editor editor.close(); // Broadcast mesh according to parallel policy if (MPI::is_broadcaster()) { MeshPartitioning::build_distributed_mesh(*this); return; } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/generation/CSGGeometries3D.h0000644000175000017500000000346712263014601021261 0ustar johannrjohannr// Copyright (C) 2012 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Johannes Ring, 2012 // // First added: 2012-05-12 // Last changed: 2012-05-14 #ifndef __CSG_GEOMETRIES_H #define __CSG_GEOMETRIES_H #include #include #include "CSGGeometry.h" namespace dolfin { class CSGGeometries { public: // A standard LEGO brick starting at the point x with (n0, n1) // knobs and height n2. The height should be 1 for a thin brick or 3 // for a regular brick. static boost::shared_ptr lego(std::size_t n0, std::size_t n1, std::size_t n2, double x0, double x1, double x2); // A simple propeller with parameters r - radius of center body, R - length of blades, // w - width of blades and h - thicknes of blades static boost::shared_ptr propeller(double r=0.125, double R=0.5, double w=0.3, double h=0.025 ); }; } #endif dolfin-1.3.0/dolfin/generation/compute_normal.h0000644000175000017500000000253112263014601021445 0ustar johannrjohannr#ifndef _COMPUTE_NORMAL_ #define _COMPUTE_NORMAL_ template typename Kernel::Vector_3 compute_facet_normal(const Facet& f) { typedef typename Kernel::Point_3 Point; typedef typename Kernel::Vector_3 Vector; typedef typename Facet::Halfedge_around_facet_const_circulator HF_circulator; Vector normal = CGAL::NULL_VECTOR; HF_circulator he = f.facet_begin(); HF_circulator end = he; CGAL_For_all(he,end) { const Point& prev = he->prev()->vertex()->point(); const Point& curr = he->vertex()->point(); const Point& next = he->next()->vertex()->point(); Vector n = CGAL::cross_product(next-curr,prev-curr); normal = normal + n; } return normal / std::sqrt(normal * normal); } template typename Kernel::Vector_3 compute_vertex_normal(const Vertex& v) { typedef typename Kernel::Vector_3 Vector; typedef typename Vertex::Halfedge_around_vertex_const_circulator HV_circulator; typedef typename Vertex::Facet Facet; Vector normal = CGAL::NULL_VECTOR; HV_circulator he = v.vertex_begin(); HV_circulator end = he; CGAL_For_all(he,end) { if(!he->is_border()) { Vector n = compute_facet_normal(*he->facet()); normal = normal + (n / std::sqrt(n*n)); } } return normal / std::sqrt(normal * normal); } #endif // _COMPUTE_NORMAL_ dolfin-1.3.0/dolfin/generation/UnitCircleMesh.cpp0000644000175000017500000000272612263014601021640 0ustar johannrjohannr// Copyright (C) 2013 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Garth N. Wells 2007 // Modified by Nuno Lopes 2008 // Modified by Anders Logg 2012 // // First added: 2005-12-02 // Last changed: 2012-03-06 #include #include #include "UnitCircleMesh.h" using namespace dolfin; //----------------------------------------------------------------------------- UnitCircleMesh::UnitCircleMesh(std::size_t n, std::string diagonal, std::string transformation) : CircleMesh(Point(0.0, 0.0), 1.0, 1.0/n) { deprecation("UnitCircleMesh", "1.3", "UnitCircleMesh is deprecated. Calling CircleMesh to create unstructured mesh instead"); } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/generation/CSGCGALMeshGenerator3D.cpp0000644000175000017500000002017512263014601022676 0ustar johannrjohannr// Copyright (C) 2012 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Joachim B Haga 2012 // // First added: 2012-05-10 // Last changed: 2012-11-14 #include "CSGCGALMeshGenerator3D.h" #include "CSGGeometry.h" #include "GeometryToCGALConverter.h" #include "PolyhedronUtils.h" #include #include #include #include using namespace dolfin; #ifdef HAS_CGAL #include "cgal_csg3d.h" #include //----------------------------------------------------------------------------- static void build_dolfin_mesh(const csg::C3t3& c3t3, Mesh& mesh) { typedef csg::C3t3 C3T3; typedef C3T3::Triangulation Triangulation; typedef Triangulation::Vertex_handle Vertex_handle; // CGAL triangulation const Triangulation& triangulation = c3t3.triangulation(); // Clear mesh mesh.clear(); // Count cells in complex std::size_t num_cells = 0; for(csg::C3t3::Cells_in_complex_iterator cit = c3t3.cells_in_complex_begin(); cit != c3t3.cells_in_complex_end(); ++cit) { num_cells++; } // Create and initialize mesh editor dolfin::MeshEditor mesh_editor; mesh_editor.open(mesh, 3, 3); mesh_editor.init_vertices(triangulation.number_of_vertices()); mesh_editor.init_cells(num_cells); // Add vertices to mesh std::size_t vertex_index = 0; std::map vertex_id_map; for (Triangulation::Finite_vertices_iterator cgal_vertex = triangulation.finite_vertices_begin(); cgal_vertex != triangulation.finite_vertices_end(); ++cgal_vertex) { vertex_id_map[cgal_vertex] = vertex_index; // Get vertex coordinates and add vertex to the mesh Point p(cgal_vertex->point()[0], cgal_vertex->point()[1], cgal_vertex->point()[2]); mesh_editor.add_vertex(vertex_index, p); ++vertex_index; } // Add cells to mesh std::size_t cell_index = 0; for(csg::C3t3::Cells_in_complex_iterator cit = c3t3.cells_in_complex_begin(); cit != c3t3.cells_in_complex_end(); ++cit) { mesh_editor.add_cell(cell_index, vertex_id_map[cit->vertex(0)], vertex_id_map[cit->vertex(1)], vertex_id_map[cit->vertex(2)], vertex_id_map[cit->vertex(3)]); ++cell_index; } // Close mesh editor mesh_editor.close(); } //----------------------------------------------------------------------------- CSGCGALMeshGenerator3D::CSGCGALMeshGenerator3D(const CSGGeometry& geometry) { boost::shared_ptr tmp = reference_to_no_delete_pointer(geometry); _geometry = tmp; parameters = default_parameters(); } //----------------------------------------------------------------------------- CSGCGALMeshGenerator3D::CSGCGALMeshGenerator3D(boost::shared_ptr geometry) : _geometry(geometry) { parameters = default_parameters(); } //----------------------------------------------------------------------------- CSGCGALMeshGenerator3D::~CSGCGALMeshGenerator3D() {} //----------------------------------------------------------------------------- void CSGCGALMeshGenerator3D::generate(Mesh& mesh) const { csg::Polyhedron_3 p; cout << "Converting geometry to cgal types." << endl; GeometryToCGALConverter::convert(*_geometry, p, parameters["remove_degenerated"]); dolfin_assert(p.is_pure_triangle()); csg::Mesh_domain domain(p); if (parameters["detect_sharp_features"]) { cout << "Detecting sharp features" << endl; //const int feature_threshold = parameters["feature_threshold"]; domain.detect_features(); } // Workaround, cgal segfaulted when assigning new mesh criterias // within the if-else blocks. boost::scoped_ptr criteria; int mesh_resolution = parameters["mesh_resolution"]; if (mesh_resolution > 0) { // Try to compute reasonable parameters const double r = PolyhedronUtils::getBoundingSphereRadius(p); //cout << "Radius of bounding sphere: " << r << endl; //cout << "Mesh resolution" << mesh_resolution << endl; const double cell_size = r/static_cast(mesh_resolution)*2.0; //cout << "Cell size: " << cell_size << endl; criteria.reset(new csg::Mesh_criteria(CGAL::parameters::edge_size = cell_size, // ??? CGAL::parameters::facet_angle = 30.0, CGAL::parameters::facet_size = cell_size, CGAL::parameters::facet_distance = cell_size/10.0, // ??? CGAL::parameters::cell_radius_edge_ratio = 3.0, CGAL::parameters::cell_size = cell_size)); } else { // Mesh criteria criteria.reset(new csg::Mesh_criteria(CGAL::parameters::edge_size = parameters["edge_size"], CGAL::parameters::facet_angle = parameters["facet_angle"], CGAL::parameters::facet_size = parameters["facet_size"], CGAL::parameters::facet_distance = parameters["facet_distance"], CGAL::parameters::cell_radius_edge_ratio = parameters["cell_radius_edge_ratio"], CGAL::parameters::cell_size = parameters["cell_size"])); } // Mesh generation cout << "Generating mesh" << endl; csg::C3t3 c3t3 = CGAL::make_mesh_3(domain, *criteria, CGAL::parameters::no_perturb(), CGAL::parameters::no_exude()); if (parameters["odt_optimize"]) { cout << "Optimizing mesh by odt optimization" << endl; odt_optimize_mesh_3(c3t3, domain); } if (parameters["lloyd_optimize"]) { cout << "Optimizing mesh by lloyd optimization" << endl; lloyd_optimize_mesh_3(c3t3, domain); } if (parameters["perturb_optimize"]) { cout << "Optimizing mesh by perturbation" << endl; // TODO: Set time limit CGAL::perturb_mesh_3(c3t3, domain); } if (parameters["exude_optimize"]) { cout << "Optimizing mesh by sliver exudation" << endl; exude_mesh_3(c3t3); } build_dolfin_mesh(c3t3, mesh); } //----------------------------------------------------------------------------- void CSGCGALMeshGenerator3D::save_off(std::string filename) const { csg::Polyhedron_3 p; cout << "Converting geometry to cgal types." << endl; GeometryToCGALConverter::convert(*_geometry, p); cout << "Writing to file " << filename << endl; std::ofstream outfile(filename.c_str()); outfile << p; outfile.close(); } #else CSGCGALMeshGenerator3D::CSGCGALMeshGenerator3D(const CSGGeometry& geometry) { dolfin_error("CSGCGALMeshGenerator3D.cpp", "Create mesh generator", "Dolfin must be compiled with CGAL to use this feature."); } //----------------------------------------------------------------------------- CSGCGALMeshGenerator3D::CSGCGALMeshGenerator3D(boost::shared_ptr geometry) { dolfin_error("CSGCGALMeshGenerator3D.cpp", "Create mesh generator", "Dolfin must be compiled with CGAL to use this feature."); } CSGCGALMeshGenerator3D::~CSGCGALMeshGenerator3D(){} void CSGCGALMeshGenerator3D::generate(Mesh& mesh) const{} void CSGCGALMeshGenerator3D::save_off(std::string filename) const {} //----------------------------------------------------------------------------- #endif dolfin-1.3.0/dolfin/generation/UnitCube.h0000644000175000017500000000374612263014601020150 0ustar johannrjohannr// Copyright (C) 2012 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2012-11-09 // Last changed: 2013-01-07 #ifndef __UNIT_CUBE_H #define __UNIT_CUBE_H #include "UnitCubeMesh.h" #include namespace dolfin { /// Tetrahedral mesh of the 3D unit cube [0,1] x [0,1] x [0,1]. /// Given the number of cells (nx, ny, nz) in each direction, /// the total number of tetrahedra will be 6*nx*ny*nz and the /// total number of vertices will be (nx + 1)*(ny + 1)*(nz + 1). /// /// This class has been deprecated. Unit _UnitCubeMesh_. class UnitCube : public UnitCubeMesh { public: /// Create a uniform finite element _Mesh_ over the unit cube /// [0,1] x [0,1] x [0,1]. /// /// *Arguments* /// nx (std::size_t) /// Number of cells in :math:`x` direction. /// ny (std::size_t) /// Number of cells in :math:`y` direction. /// nz (std::size_t) /// Number of cells in :math:`z` direction. /// /// *Example* /// .. code-block:: c++ /// /// UnitCubeMesh mesh(32, 32, 32); /// UnitCube(std::size_t nx, std::size_t ny, std::size_t nz) : UnitCubeMesh(nx, ny, nz) { deprecation("UnitCube", "1.1.0", "The class UnitCube has been replaced by UnitCubeMesh."); } }; } #endif dolfin-1.3.0/dolfin/generation/CSGOperators.h0000644000175000017500000001314312263014601020735 0ustar johannrjohannr// Copyright (C) 2012 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Benjamin Kehlet, 2012-2013 // // First added: 2012-04-13 // Last changed: 2013-06-24 #ifndef __CSG_OPERATORS_H #define __CSG_OPERATORS_H #include #include #include "CSGGeometry.h" namespace dolfin { //--- Operator classes (nodes) --- class CSGOperator : public CSGGeometry { public: virtual bool is_operator() const { return true; } std::size_t dim() const { return dim_;} protected : std::size_t dim_; }; /// Union of CSG geometries class CSGUnion : public CSGOperator { public: /// Create union of two geometries CSGUnion(boost::shared_ptr g0, boost::shared_ptr g1); /// Informal string representation std::string str(bool verbose) const; Type getType() const { return CSGGeometry::Union; } boost::shared_ptr _g0; boost::shared_ptr _g1; }; /// Difference of CSG geometries class CSGDifference : public CSGOperator { public: /// Create union of two geometries CSGDifference(boost::shared_ptr g0, boost::shared_ptr g1); /// Informal string representation std::string str(bool verbose) const; Type getType() const { return CSGGeometry::Difference; } boost::shared_ptr _g0; boost::shared_ptr _g1; }; /// Intersection of CSG geometries class CSGIntersection : public CSGOperator { public: /// Create intersection of two geometries CSGIntersection(boost::shared_ptr g0, boost::shared_ptr g1); /// Informal string representation std::string str(bool verbose) const; Type getType() const { return CSGGeometry::Intersection; } boost::shared_ptr _g0; boost::shared_ptr _g1; }; //--- Union operators --- /// Create union of two geometries inline boost::shared_ptr operator+(boost::shared_ptr g0, boost::shared_ptr g1) { return boost::shared_ptr(new CSGUnion(g0, g1)); } /// Create union of two geometries inline boost::shared_ptr operator+(CSGGeometry& g0, boost::shared_ptr g1) { return reference_to_no_delete_pointer(g0) + g1; } /// Create union of two geometries inline boost::shared_ptr operator+(boost::shared_ptr g0, CSGGeometry& g1) { return g0 + reference_to_no_delete_pointer(g1); } /// Create union of two geometries inline boost::shared_ptr operator+(CSGGeometry& g0, CSGGeometry& g1) { return reference_to_no_delete_pointer(g0) + reference_to_no_delete_pointer(g1); } //--- Difference operators --- /// Create difference of two geometries inline boost::shared_ptr operator-(boost::shared_ptr g0, boost::shared_ptr g1) { return boost::shared_ptr(new CSGDifference(g0, g1)); } /// Create difference of two geometries inline boost::shared_ptr operator-(CSGGeometry& g0, boost::shared_ptr g1) { return reference_to_no_delete_pointer(g0) - g1; } /// Create union of two geometries inline boost::shared_ptr operator-(boost::shared_ptr g0, CSGGeometry& g1) { return g0 - reference_to_no_delete_pointer(g1); } /// Create difference of two geometries inline boost::shared_ptr operator-(CSGGeometry& g0, CSGGeometry& g1) { return reference_to_no_delete_pointer(g0) - reference_to_no_delete_pointer(g1); } //--- Intersection operators --- /// Create intersection of two geometries inline boost::shared_ptr operator*(boost::shared_ptr g0, boost::shared_ptr g1) { return boost::shared_ptr(new CSGIntersection(g0, g1)); } /// Create intersection of two geometries inline boost::shared_ptr operator*(CSGGeometry& g0, boost::shared_ptr g1) { return reference_to_no_delete_pointer(g0) * g1; } /// Create intersection of two geometries inline boost::shared_ptr operator*(boost::shared_ptr g0, CSGGeometry& g1) { return g0 * reference_to_no_delete_pointer(g1); } /// Create intersection of two geometries inline boost::shared_ptr operator*(CSGGeometry& g0, CSGGeometry& g1) { return reference_to_no_delete_pointer(g0) * reference_to_no_delete_pointer(g1); } } #endif dolfin-1.3.0/dolfin/generation/EllipseMesh.cpp0000644000175000017500000000454712263014601021177 0ustar johannrjohannr// Copyright (C) 2013 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-10-18 // Last changed: #include #include #include #include #include #include "ImplicitDomainMeshGenerator.h" #include "PolygonalMeshGenerator.h" #include "EllipseMesh.h" using namespace dolfin; //----------------------------------------------------------------------------- EllipseMesh::EllipseMesh(Point center, std::vector ellipse_dims, double cell_size) { Timer timer("Generate ellipse mesh"); #ifdef HAS_CGAL dolfin_assert(ellipse_dims.size() == 2); // Estimate circumference const double a = ellipse_dims[0]; const double b = ellipse_dims[1]; // Compute number of points to place on boundary const double circumference = DOLFIN_PI*(3.0*(a + b) - std::sqrt(10.0*a*b - 3.0*(a*a + b*b))); const int num_points = 0.7*circumference/cell_size; // Create polyhedral representation std::vector polygon; for (int i = 0; i < num_points; ++i) { const double dtheta = 2.0*DOLFIN_PI/static_cast(num_points); const double theta = i*dtheta; const double x = a*std::cos(theta) + center.x(); const double y = b*std::sin(theta) + center.y(); polygon.push_back(Point(x, y)); } polygon.push_back(polygon.front()); // Generate mesh PolygonalMeshGenerator::generate(*this, polygon, cell_size); #else dolfin_error("EllipseMesh.cpp", "generate ellipse mesh", "Generation of ellipse meshes requires DOLFIN to be configured with CGAL"); #endif } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/generation/CSGGeometry.cpp0000644000175000017500000000426212263014601021107 0ustar johannrjohannr// Copyright (C) 2012 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Benjamin Kehlet, 2013 // // First added: 2012-04-11 // Last changed: 2013-04-18 #include "CSGGeometry.h" #include using namespace dolfin; //----------------------------------------------------------------------------- CSGGeometry::CSGGeometry() { // Do nothing } //----------------------------------------------------------------------------- CSGGeometry::~CSGGeometry() { // Do nothing } //----------------------------------------------------------------------------- void CSGGeometry::set_subdomain(std::size_t i, boost::shared_ptr s) { dolfin_assert(dim() == s->dim()); if (i == 0) { error("Setting reserved CSG subdomain (0)"); } // Check if i already used std::list > >::iterator it = subdomains.begin(); while (it != subdomains.end()) { if (it->first == i) { warning("Double declaration of CSG subdomain with index %u.", i); // Remove existing declaration it = subdomains.erase(it); } else ++it; } subdomains.push_back(std::make_pair(i, s)); } //----------------------------------------------------------------------------- void CSGGeometry::set_subdomain(std::size_t i, CSGGeometry& s) { set_subdomain(i, reference_to_no_delete_pointer(s)); } //----------------------------------------------------------------------------- bool CSGGeometry::has_subdomains() const { return subdomains.size() > 0; } dolfin-1.3.0/dolfin/generation/CSGPrimitives2D.h0000644000175000017500000001265112263014601021303 0ustar johannrjohannr// Copyright (C) 2012 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Johannes Ring, 2012 // Modified by Benjamin Kehlet, 2012-2013 // // First added: 2012-04-11 // Last changed: 2013-03-13 #ifndef __CSG_PRIMITIVES_2D_H #define __CSG_PRIMITIVES_2D_H #include #include #include "CSGPrimitive.h" namespace dolfin { /// Base class for 2D primitives class CSGPrimitive2D : public CSGPrimitive { public: /// Return dimension of geometry std::size_t dim() const { return 2; } }; /// This class describes a 2D circle which can be used to build /// geometries using Constructive Solid Geometry (CSG). class Circle : public CSGPrimitive2D { public: /// Create circle at x = (x0, x1) with radius r. /// /// *Arguments* /// x0 (double) /// x0-coordinate of center. /// x1 (double) /// x1-coordinate of center. /// r (double) /// radius. /// fragments (std::size_t) /// number of fragments. Circle(double x0, double x1, double r, std::size_t fragments=32); /// Informal string representation std::string str(bool verbose) const; Type getType() const { return CSGGeometry::Circle; } /// Return center of circle Point center() const { return Point(_x0, _x1); } /// Return radius of circle double radius() const { return _r; } /// Return number of fragments around the circle std::size_t fragments() const { return _fragments; } private: double _x0, _x1, _r; const std::size_t _fragments; }; /// This class describes a 2D ellipse which can be used to build /// geometries using Constructive Solid Geometry (CSG). class Ellipse : public CSGPrimitive2D { public: /// Create ellipse at x = (x0, x1) with horizontal semi-axis a and /// vertical semi-axis b. /// /// *Arguments* /// x0 (double) /// x0-coordinate of center. /// x1 (double) /// x1-coordinate of center. /// a (double) /// horizontal semi-axis. /// b (double) /// vertical semi-axis. /// fragments (std::size_t) /// number of fragments. Ellipse(double x0, double x1, double a, double b, std::size_t fragments=32); /// Informal string representation std::string str(bool verbose) const; Type getType() const { return CSGGeometry::Ellipse; } /// Return center of ellipse Point center() const { return Point(_x0, _x1); } /// Return horizontal semi-axis double a() const { return _a; } /// Return vertical semi-axis double b() const { return _b; } /// Return number of fragments around the ellipse std::size_t fragments() const { return _fragments; } private: double _x0, _x1, _a, _b; const std::size_t _fragments; }; /// This class describes a 2D rectangle which can be used to build /// geometries using Constructive Solid Geometry (CSG). class Rectangle : public CSGPrimitive2D { public: /// Create rectangle defined by two opposite corners /// x = (x0, x1) and y = (y0, y1). /// /// *Arguments* /// x0 (double) /// x0-coordinate of first corner. /// x1 (double) /// x1-coordinate of first corner. /// y0 (double) /// y0-coordinate of second corner. /// y1 (double) /// y1-coordinate of second corner. Rectangle(double x0, double x1, double y0, double y1); /// Informal string representation std::string str(bool verbose) const; Type getType() const { return CSGGeometry::Rectangle; } /// Return first corner Point first_corner() const { return Point(_x0, _x1); } /// Return second corner Point second_corner() const { return Point(_y0, _y1); } private: double _x0, _x1, _y0, _y1; }; /// This class describes a 2D polygon which can be used to build /// geometries using Constructive Solid Geometry (CSG). class Polygon : public CSGPrimitive2D { public: /// Create polygon defined by the given vertices. /// /// *Arguments* /// vertices (std::vector<_Point_>) /// A vector of _Point_ objects. /// The points must be given in counter-clockwise order /// (without repeating the first/last vertex) and the polygon // must not self intersect. Polygon(const std::vector& vertices); /// Informal string representation std::string str(bool verbose) const; Type getType() const { return CSGGeometry::Polygon; } // Check if vertices are counter clockwise oriented bool ccw() const; /// Return vertices in polygon const std::vector& vertices() const { return _vertices; } private: const std::vector _vertices; }; } #endif dolfin-1.3.0/dolfin/generation/CSGPrimitives2D.cpp0000644000175000017500000001360012263014601021631 0ustar johannrjohannr// Copyright (C) 2012 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Johannes Ring, 2012 // Modified by Benjamin Kehlet, 2012-2013 // // First added: 2012-04-12 // Last changed: 2013-03-13 #include #include #include "CSGPrimitives2D.h" #include #include #include using namespace dolfin; //----------------------------------------------------------------------------- // Circle //----------------------------------------------------------------------------- Circle::Circle(double x0, double x1, double r, std::size_t fragments) : _x0(x0), _x1(x1), _r(r), _fragments(fragments) { if (_r < DOLFIN_EPS) { dolfin_error("CSGPrimitives2D.cpp", "create circle", "Circle with center (%f, %f) has zero or negative radius", _x0, _x1); } if (_fragments < 3) { dolfin_error("CSGPrimitives2D.cpp", "create circle", "Unable to create circle with less than 3 fragments"); } } //----------------------------------------------------------------------------- std::string Circle::str(bool verbose) const { std::stringstream s; if (verbose) { s << ""; } else { s << "Circle(" << _x0 << ", " << _x1 << ", " << _r << ")"; } return s.str(); } //----------------------------------------------------------------------------- // Ellipse //----------------------------------------------------------------------------- Ellipse::Ellipse(double x0, double x1, double a, double b, std::size_t fragments) : _x0(x0), _x1(x1), _a(a), _b(b), _fragments(fragments) { if (_a < DOLFIN_EPS || _b < DOLFIN_EPS) { dolfin_error("CSGPrimitives2D.cpp", "create ellipse", "Ellipse with center (%f, %f) has invalid semi-axis", _x0, _x1); } if (_fragments < 3) { dolfin_error("CSGPrimitives2D.cpp", "create ellipse", "Unable to create ellipse with less than 3 fragments"); } } //----------------------------------------------------------------------------- std::string Ellipse::str(bool verbose) const { std::stringstream s; if (verbose) { s << ""; } else { s << "Ellipse(" << _x0 << ", " << _x1 << ", " << _a << ", " << _b << ")"; } return s.str(); } //----------------------------------------------------------------------------- // Rectangle //----------------------------------------------------------------------------- Rectangle::Rectangle(double x0, double x1, double y0, double y1) : _x0(x0), _x1(x1), _y0(y0), _y1(y1) { if (near(x0, y0) || near(x1, y1)) { dolfin_error("CSGPrimitives2D.cpp", "create rectangle", "Rectangle with corner (%f, %f) and (%f, %f) degenerated", x0, x1, y0, y1); } } //----------------------------------------------------------------------------- std::string Rectangle::str(bool verbose) const { std::stringstream s; if (verbose) { s << ""; } else { s << "Rectangle(" << _x0 << ", " << _x1 << ", " << _y0 << ", " << _y1 << ")"; } return s.str(); } //----------------------------------------------------------------------------- // Polygon //----------------------------------------------------------------------------- Polygon::Polygon(const std::vector& vertices) : _vertices(vertices.begin(), vertices.end()) { if (_vertices.size() < 3) { dolfin_error("CSGPrimitives2D.cpp", "create polygon", "Polygon should have at least three vertices"); } if (!ccw()) dolfin_error("CSGPrimitives2D.cpp", "create polygon", "Polygonv vertices must be given in counter clockwise order"); } //----------------------------------------------------------------------------- std::string Polygon::str(bool verbose) const { std::stringstream s; if (verbose) { s << "::const_iterator p; for (p = _vertices.begin(); p != _vertices.end(); ++p) { s << "(" << p->x() << ", " << p->y() << ")"; if ((p != _vertices.end()) && (p + 1 != _vertices.end())) s << ", "; } s << ">"; } else { s << "Polygon("; std::vector::const_iterator p; for (p = _vertices.begin(); p != _vertices.end(); ++p) { s << "(" << p->x() << ", " << p->y() << ")"; if ((p != _vertices.end()) && (p + 1 != _vertices.end())) s << ", "; } s << ")"; } return s.str(); } //----------------------------------------------------------------------------- bool Polygon::ccw() const { double signed_area = 0.0; Point prev = _vertices.back(); for (std::vector::const_iterator it = _vertices.begin(), v_end = _vertices.end(); it != v_end; ++it) { signed_area += (prev.x()*it->y())-(it->x()*prev.y()); prev = *it; } return signed_area > 0; } dolfin-1.3.0/dolfin/generation/PolygonalMeshGenerator.h0000644000175000017500000000310112263014601023043 0ustar johannrjohannr// Copyright (C) 2012 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Johannes Ring, 2012 // // First added: 2012-01-05 // Last changed: 2012-05-03 #ifndef __DOLFIN_POLYGONALMESHGENERATOR_H #define __DOLFIN_POLYGONALMESHGENERATOR_H #ifdef HAS_CGAL #include namespace dolfin { class Mesh; class Point; /// Polygonal mesh generator that uses CGAL class PolygonalMeshGenerator { public: /// Generate mesh of a polygonal domain described by domain vertices static void generate(Mesh& mesh, const std::vector& vertices, double cell_size); /// Generate mesh of a domain described by a CGAL polygon template static void generate(Mesh& mesh, const T& polygon, double cell_size); private: // Check that input polygon is convex template static bool is_convex(const std::vector& vertices); }; } #endif #endif dolfin-1.3.0/dolfin/generation/GeometryToCGALConverter.h0000644000175000017500000000233412263014601023037 0ustar johannrjohannr// Copyright (C) 2012 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2012-05-10 // Last changed: 2012-05-10 // This class is capable of converting a 3D dolfin::CSGGeometry to a // CGAL::Polyhedron_3 #ifndef __CSG_GEOMETRY_TO_CGAL_CONVERTER_H #define __CSG_GEOMETRY_TO_CGAL_CONVERTER_H #ifdef HAS_CGAL #include "cgal_csg3d.h" namespace dolfin { class CSGGeometry; class GeometryToCGALConverter { public: static void convert(const CSGGeometry& geometry, csg::Polyhedron_3& p, bool remove_degenerated=true); }; } #endif #endif dolfin-1.3.0/dolfin/generation/RectangleMesh.cpp0000644000175000017500000001476012263014601021504 0ustar johannrjohannr// Copyright (C) 2005-2009 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Garth N. Wells 2007. // Modified by Nuno Lopes 2008. // Modified by Kristian B. Oelgaard 2009. // // First added: 2005-12-02 // Last changed: 2012-11-12 #include #include #include #include #include #include "RectangleMesh.h" using namespace dolfin; //----------------------------------------------------------------------------- RectangleMesh::RectangleMesh(double x0, double y0, double x1, double y1, std::size_t nx, std::size_t ny, std::string diagonal) : Mesh() { // Receive mesh according to parallel policy if (MPI::is_receiver()) { MeshPartitioning::build_distributed_mesh(*this); return; } // Check options if (diagonal != "left" && diagonal != "right" && diagonal != "right/left" && diagonal != "left/right" && diagonal != "crossed") { dolfin_error("RectangleMesh.cpp", "create rectangle", "Unknown mesh diagonal definition: allowed options are \"left\", \"right\", \"left/right\", \"right/left\" and \"crossed\""); } const double a = x0; const double b = x1; const double c = y0; const double d = y1; if (std::abs(x0 - x1) < DOLFIN_EPS || std::abs(y0 - y1) < DOLFIN_EPS) { dolfin_error("Rectangle.cpp", "create rectangle", "Rectangle seems to have zero width, height or depth. Consider checking your dimensions"); } if (nx < 1 || ny < 1) { dolfin_error("RectangleMesh.cpp", "create rectangle", "Rectangle has non-positive number of vertices in some dimension: number of vertices must be at least 1 in each dimension"); } rename("mesh", "Mesh of the unit square (a,b) x (c,d)"); // Open mesh for editing MeshEditor editor; editor.open(*this, CellType::triangle, 2, 2); // Create vertices and cells: if (diagonal == "crossed") { editor.init_vertices((nx + 1)*(ny + 1) + nx*ny); editor.init_cells(4*nx*ny); } else { editor.init_vertices((nx + 1)*(ny + 1)); editor.init_cells(2*nx*ny); } // Storage for vertices std::vector x(2); // Create main vertices: std::size_t vertex = 0; for (std::size_t iy = 0; iy <= ny; iy++) { x[1] = c + ((static_cast(iy))*(d - c)/static_cast(ny)); for (std::size_t ix = 0; ix <= nx; ix++) { x[0] = a + ((static_cast(ix))*(b - a)/static_cast(nx)); editor.add_vertex(vertex, x); vertex++; } } // Create midpoint vertices if the mesh type is crossed if (diagonal == "crossed") { for (std::size_t iy = 0; iy < ny; iy++) { x[1] = c +(static_cast(iy) + 0.5)*(d - c)/ static_cast(ny); for (std::size_t ix = 0; ix < nx; ix++) { x[0] = a + (static_cast(ix) + 0.5)*(b - a)/ static_cast(nx); editor.add_vertex(vertex, x); vertex++; } } } // Create triangles std::size_t cell = 0; if (diagonal == "crossed") { std::vector > cells(4, std::vector(3)); for (std::size_t iy = 0; iy < ny; iy++) { for (std::size_t ix = 0; ix < nx; ix++) { const std::size_t v0 = iy*(nx + 1) + ix; const std::size_t v1 = v0 + 1; const std::size_t v2 = v0 + (nx + 1); const std::size_t v3 = v1 + (nx + 1); const std::size_t vmid = (nx + 1)*(ny + 1) + iy*nx + ix; // Note that v0 < v1 < v2 < v3 < vmid. cells[0][0] = v0; cells[0][1] = v1; cells[0][2] = vmid; cells[1][0] = v0; cells[1][1] = v2; cells[1][2] = vmid; cells[2][0] = v1; cells[2][1] = v3; cells[2][2] = vmid; cells[3][0] = v2; cells[3][1] = v3; cells[3][2] = vmid; // Add cells std::vector >::const_iterator _cell; for (_cell = cells.begin(); _cell != cells.end(); ++_cell) editor.add_cell(cell++, *_cell); } } } else if (diagonal == "left" || diagonal == "right" || diagonal == "right/left" || diagonal == "left/right") { std::string local_diagonal = diagonal; std::vector > cells(2, std::vector(3)); for (std::size_t iy = 0; iy < ny; iy++) { // Set up alternating diagonal if (diagonal == "right/left") { if (iy % 2) local_diagonal = "right"; else local_diagonal = "left"; } if (diagonal == "left/right") { if (iy % 2) local_diagonal = "left"; else local_diagonal = "right"; } for (std::size_t ix = 0; ix < nx; ix++) { const std::size_t v0 = iy*(nx + 1) + ix; const std::size_t v1 = v0 + 1; const std::size_t v2 = v0 + (nx + 1); const std::size_t v3 = v1 + (nx + 1); std::vector cell_data; if(local_diagonal == "left") { cells[0][0] = v0; cells[0][1] = v1; cells[0][2] = v2; cells[1][0] = v1; cells[1][1] = v2; cells[1][2] = v3; if (diagonal == "right/left" || diagonal == "left/right") local_diagonal = "right"; } else { cells[0][0] = v0; cells[0][1] = v1; cells[0][2] = v3; cells[1][0] = v0; cells[1][1] = v2; cells[1][2] = v3; if (diagonal == "right/left" || diagonal == "left/right") local_diagonal = "left"; } editor.add_cell(cell++, cells[0]); editor.add_cell(cell++, cells[1]); } } } // Close mesh editor editor.close(); // Broadcast mesh according to parallel policy if (MPI::is_broadcaster()) { MeshPartitioning::build_distributed_mesh(*this); return; } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/generation/IntervalMesh.h0000644000175000017500000000325712263014601021030 0ustar johannrjohannr// Copyright (C) 2007 Kristian B. Oelgaard // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by N. Lopes, 2008. // // First added: 2007-11-23 // Last changed: 2012-11-12 #ifndef __INTERVAL_MESH_H #define __INTERVAL_MESH_H #include #include namespace dolfin { /// Interval mesh of the 1D line [a,b]. Given the number of cells /// (nx) in the axial direction, the total number of intervals will /// be nx and the total number of vertices will be (nx + 1). class IntervalMesh : public Mesh { public: /// Constructor /// /// *Arguments* /// nx (std::size_t) /// The number of cells. /// a (double) /// The minimum point (inclusive). /// b (double) /// The maximum point (inclusive). /// /// *Example* /// .. code-block:: c++ /// /// // Create a mesh of 25 cells in the interval [-1,1] /// Interval mesh(25, -1.0, 1.0); /// IntervalMesh(std::size_t nx, double a, double b); }; } #endif dolfin-1.3.0/dolfin/generation/UnitCircle.h0000644000175000017500000000344712263014601020471 0ustar johannrjohannr// Copyright (C) 2012 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2012-11-09 // Last changed: 2013-01-07 #ifndef __UNIT_CIRCLE_H #define __UNIT_CIRCLE_H #include #include namespace dolfin { class UnitCircle : public UnitCircleMesh { public: /// Create a uniform finite element _Mesh_ over the unit circle. /// This class is deprecated. Use _UnitCircleMesh_. /// /// *Arguments* /// n (std::size_t) /// Resolution of the mesh. /// diagonal (std::string) /// Optional argument: A std::string indicating /// the direction of the diagonals. /// transformation (std::string) /// Optional argument: A std::string indicating /// the type of transformation used. UnitCircle(std::size_t n, std::string diagonal="crossed", std::string transformation="rotsumn") : UnitCircleMesh(n, diagonal, transformation) { deprecation("UnitCircle", "1.1.0", "The class UnitCircle has been replaced by UnitCircleMesh."); } }; } #endif dolfin-1.3.0/dolfin/generation/CSGGeometry.h0000644000175000017500000000414512263014601020554 0ustar johannrjohannr// Copyright (C) 2012 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Benjamin Kehlet, 2012 // Modified by Johannes Ring, 2012 // // First added: 2012-04-11 // Last changed: 2013-11-12 #ifndef __CSG_GEOMETRY_H #define __CSG_GEOMETRY_H #include #include #include #include #include namespace dolfin { /// Geometry described by Constructive Solid Geometry (CSG) class CSGGeometry : public Variable { public: /// Constructor CSGGeometry(); /// Destructor virtual ~CSGGeometry(); /// Return dimension of geometry virtual std::size_t dim() const = 0; /// Informal string representation virtual std::string str(bool verbose) const = 0; /// Define subdomain. This feature is 2D only. /// The subdomain is itself a CSGGeometry and the corresponding /// cells in the resulting will be marked with i /// If subdomains overlap, the latest added will take precedence. void set_subdomain(std::size_t i, boost::shared_ptr s); void set_subdomain(std::size_t i, CSGGeometry& s); bool has_subdomains() const; enum Type { Box, Sphere, Cone, Tetrahedron, Surface3D, Circle, Ellipse, Rectangle, Polygon, Union, Intersection, Difference }; virtual Type getType() const = 0; virtual bool is_operator() const = 0; std::list > > subdomains; }; } #endif dolfin-1.3.0/dolfin/generation/CSGGeometries3D.cpp0000644000175000017500000001154512263014601021610 0ustar johannrjohannr// Copyright (C) 2012 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Johannes Ring, 2012 // // First added: 2012-05-12 // Last changed: 2012-12-20 #include #include "CSGGeometries3D.h" #include "CSGGeometry.h" #include "CSGPrimitives3D.h" #include "CSGOperators.h" using namespace dolfin; boost::shared_ptr CSGGeometries::lego(std::size_t n0, std::size_t n1, std::size_t n2, double x0, double x1, double x2 ) { // Standard dimensions for LEGO bricks / m const double P = 8.0 * 0.001; const double h = 3.2 * 0.001; const double D = 5.0 * 0.001; const double b = 1.7 * 0.001; const double d = 0.2 * 0.001; // Create brick boost::shared_ptr lego(new Box(x0 + 0.5*d, x1 + 0.5*d, x2, x0 + n0*P - 0.5*d, x1 + n1*P - 0.5*d, x2 + n2*h)); // Add knobs for (std::size_t i = 0; i < n0; i++) { for (std::size_t j = 0; j < n1; j++) { const double x = x0 + (i + 0.5)*P; const double y = x1 + (j + 0.5)*P; const double z = x2; boost::shared_ptr knob(new Cone(Point(x, y, z), Point(x, y, z + n2*h + b), 0.5*D, 0.5*D)); lego = lego + knob; } } return lego; } //----------------------------------------------------------------------------- boost::shared_ptr CSGGeometries::propeller(double r, double R, double w, double h) { // Parameters //const double v = 30; // initial rotation of blades //const double u = 20; // additional rotation of blades const double l = 0.8*w; // length of cone const double a = h; // radius of tip of cone // // Create blades boost::shared_ptr blade_0(new Box(0.8*r, -0.5*h, -0.5*w, R, 0.5*h, 0.5*w)); boost::shared_ptr blade_1(new Box(-R, -0.5*h, -0.5*w, -0.8*r, 0.5*h, 0.5*w)); boost::shared_ptr blade_2(new Box(-0.5*h, 0.8*r, -0.5*w, 0.5*h, R, 0.5*w)); boost::shared_ptr blade_3(new Box(-0.5*h, -R, -0.5*w, 0.5*h, -0.8*r, 0.5*w)); // // Rotate blades // // blade_0.rotate(-v, 0); // // blade_1.rotate(v, 0); // // blade_2.rotate(v, 1); // // blade_3.rotate(-v, 1); // Create blade tips boost::shared_ptr blade_tip_0(new Cylinder(Point( R, -0.5*h, 0), Point( R, 0.5*h, 0), 0.5*w)); boost::shared_ptr blade_tip_1(new Cylinder(Point(-R, -0.5*h, 0), Point(-R,0.5*h, 0), 0.5*w)); boost::shared_ptr blade_tip_2(new Cylinder(Point(-0.5*h, R, 0), Point( 0.5*h, R, 0), 0.5*w)); boost::shared_ptr blade_tip_3(new Cylinder(Point(-0.5*h, -R, 0), Point( 0.5*h, -R, 0), 0.5*w)); // // Rotate blade tips // // blade_tip_0.rotate(-v, 0); // // blade_tip_1.rotate(v, 0); // // blade_tip_2.rotate(v, 1); // // blade_tip_3.rotate(-v, 1); // Add blade tips blade_0 = blade_0 + blade_tip_0; blade_1 = blade_1 + blade_tip_1; blade_2 = blade_2 + blade_tip_2; blade_3 = blade_3 + blade_tip_3; // // Add blades boost::shared_ptr blades = blade_0 + blade_1 + blade_2 + blade_3; // Create outer cylinder boost::shared_ptr cylinder_outer(new Cylinder(Point(0, 0, -0.5*w), Point(0, 0, 0.5*w), r)); // Create inner cylinder boost::shared_ptr cylinder_inner(new Cylinder(Point(0, 0, -0.5*w), Point(0, 0, 0.5*w), 0.5*r)); // Create center cone boost::shared_ptr cone( new Cone(Point(0, 0, -0.5*w), Point(0, 0, -0.5*w - l), r, a)); // Create sphere for tip of cone const double d = a*(r - a) / l; boost::shared_ptr tip(new Sphere(Point(0, 0, -0.5*w - l + d), sqrt(a*a + d*d))); // Build propeller from parts return cylinder_outer - cylinder_inner + cone + tip + blades; } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/generation/UnitTriangleMesh.cpp0000644000175000017500000000376212263014601022205 0ustar johannrjohannr// Copyright (C) 2010 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2010-10-19 // Last changed: 2012-11-09 #include #include #include #include #include "UnitTriangleMesh.h" using namespace dolfin; //----------------------------------------------------------------------------- UnitTriangleMesh::UnitTriangleMesh() : Mesh() { // Receive mesh according to parallel policy if (MPI::is_receiver()) { MeshPartitioning::build_distributed_mesh(*this); return; } // Open mesh for editing MeshEditor editor; editor.open(*this, CellType::triangle, 2, 2); // Create vertices editor.init_vertices(3); std::vector x(2); x[0] = 0.0; x[1] = 0.0; editor.add_vertex(0, x); x[0] = 1.0; x[1] = 0.0; editor.add_vertex(1, x); x[0] = 0.0; x[1] = 1.0; editor.add_vertex(2, x); // Create cells editor.init_cells(1); std::vector cell_data(3); cell_data[0] = 0; cell_data[1] = 1; cell_data[2] = 2; editor.add_cell(0, cell_data); // Close mesh editor editor.close(); // Broadcast mesh according to parallel policy if (MPI::is_broadcaster()) { MeshPartitioning::build_distributed_mesh(*this); return; } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/generation/PolyhedralMeshGenerator.h0000644000175000017500000000522712263014601023215 0ustar johannrjohannr// Copyright (C) 2012 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2012-02-03 // Last changed: 2012-02-16 #ifndef __DOLFIN_POLYHEDRALMESHGENERATOR_H #define __DOLFIN_POLYHEDRALMESHGENERATOR_H #ifdef HAS_CGAL #include #include namespace dolfin { // Forward declarations class Mesh; /// Polyhedral mesh generator that uses CGAL. Volume and surfaces of /// polyhedra (closed surface) can be generated from polyhedra /// defined via polygonal facets. class PolyhedralMeshGenerator { public: /// Create volume mesh from Object File Format (.off) file static void generate(Mesh& mesh, const std::string off_file, double cell_size, bool detect_sharp_features=true); /// Create volume mesh from a collection of facets static void generate(Mesh& mesh, const std::vector& vertices, const std::vector >& facets, double cell_size, bool detect_sharp_features=true); /// Create surface mesh from a collection of facets static void generate_surface_mesh(Mesh& mesh, const std::vector& vertices, const std::vector >& facets, double cell_size, bool detect_sharp_features=true); /// Create a surface mesh from Object File Format (.off) file static void generate_surface_mesh(Mesh& mesh, const std::string off_file, double cell_size, bool detect_sharp_features=true); private: /// Create mesh from a CGAL polyhedron template static void cgal_generate(Mesh& mesh, T& p, double cell_size, bool detect_sharp_features); /// Create surface mesh from a CGAL polyhedron template static void cgal_generate_surface_mesh(Mesh& mesh, T& p, double cell_size, bool detect_sharp_features); }; } #endif #endif dolfin-1.3.0/dolfin/generation/CSGCGALDomain2D.h0000644000175000017500000000366312263014601021011 0ustar johannrjohannr// Copyright (C) 2013 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-06-22 // Last changed: 2013-08-06 #ifdef HAS_CGAL #include "CSGGeometry.h" #include #include struct CSGCGALDomain2DImpl; namespace dolfin { class CSGCGALDomain2D { public: // Create empty polygon CSGCGALDomain2D(); // Construct polygon from Dolfin CSG geometry CSGCGALDomain2D(const CSGGeometry *csg); // Destructor ~CSGCGALDomain2D(); // Copy constructor CSGCGALDomain2D(const CSGCGALDomain2D &other); CSGCGALDomain2D &operator=(const CSGCGALDomain2D &other); // Boolean operators void join_inplace(const CSGCGALDomain2D& other); void intersect_inplace(const CSGCGALDomain2D& other); void difference_inplace(const CSGCGALDomain2D& other); bool point_in_domain(Point p) const; double compute_boundingcircle_radius() const ; // TODO: Replace this with a more C++-ish // implementation, ie, take an outputiterator as arugment // or define iterator void get_vertices(std::list >& v, double truncate_threshold) const; void get_holes(std::list >& h, double truncate_threshold) const; boost::scoped_ptr impl; }; } #endif dolfin-1.3.0/dolfin/generation/IntervalMesh.cpp0000644000175000017500000000540112263014601021354 0ustar johannrjohannr// Copyright (C) 2007 Kristian B. Oelgaard // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by N. Lopes, 2008. // // First added: 2007-11-23 // Last changed: 2012-11-12 #include "dolfin/common/MPI.h" #include "dolfin/common/constants.h" #include "dolfin/mesh/CellType.h" #include "dolfin/mesh/MeshEditor.h" #include "dolfin/mesh/MeshPartitioning.h" #include "IntervalMesh.h" using namespace dolfin; //----------------------------------------------------------------------------- IntervalMesh::IntervalMesh(std::size_t nx, double a, double b) : Mesh() { // Receive mesh according to parallel policy if (MPI::is_receiver()) { MeshPartitioning::build_distributed_mesh(*this); return; } if (std::abs(a - b) < DOLFIN_EPS) { dolfin_error("Interval.cpp", "create interval", "Length of interval is zero. Consider checking your dimensions"); } if (b < a) { dolfin_error("Interval.cpp", "create interval", "Length of interval is negative. Consider checking the order of your arguments"); } if (nx < 1) { dolfin_error("Interval.cpp", "create interval", "Number of points on interval is (%d), it must be at least 1", nx); } rename("mesh", "Mesh of the interval (a, b)"); // Open mesh for editing MeshEditor editor; editor.open(*this, CellType::interval, 1, 1); // Create vertices and cells: editor.init_vertices((nx+1)); editor.init_cells(nx); // Create main vertices: for (std::size_t ix = 0; ix <= nx; ix++) { const std::vector x(1, a + (static_cast(ix)*(b - a)/static_cast(nx))); editor.add_vertex(ix, x); } // Create intervals for (std::size_t ix = 0; ix < nx; ix++) { std::vector cell(2); cell[0] = ix; cell[1] = ix + 1; editor.add_cell(ix, cell); } // Close mesh editor editor.close(); // Broadcast mesh according to parallel policy if (MPI::is_broadcaster()) { MeshPartitioning::build_distributed_mesh(*this); return; } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/generation/UnitTetrahedronMesh.h0000644000175000017500000000236512263014601022362 0ustar johannrjohannr// Copyright (C) 2010 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Benjamin Kehlet 2012 // // First added: 2010-10-19 // Last changed: 2012-11-09 #ifndef __UNIT_TETRAHEDRON_MESH_H #define __UNIT_TETRAHEDRON_MESH_H #include namespace dolfin { /// A mesh consisting of a single tetrahedron with vertices at /// /// (0, 0, 0) /// (1, 0, 0) /// (0, 1, 0) /// (0, 0, 1) /// /// This class is useful for testing. class UnitTetrahedronMesh : public Mesh { public: /// Create mesh of unit tetrahedron UnitTetrahedronMesh(); }; } #endif dolfin-1.3.0/dolfin/generation/CSGCGALMeshGenerator2D.h0000644000175000017500000000350412263014601022337 0ustar johannrjohannr// Copyright (C) 2012 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Johannes Ring, 2012 // // First added: 2012-05-10 // Last changed: 2013-04-05 #ifndef __CSG_CGAL_MESH_GENERATOR2D_H #define __CSG_CGAL_MESH_GENERATOR2D_H #include namespace dolfin { // Forward declarations class Mesh; class CSGGeometry; /// Mesh generator for Constructive Solid Geometry (CSG) /// utilizing CGALs 2D Regularized Boolean Set-Operations class CSGCGALMeshGenerator2D : public Variable { public : CSGCGALMeshGenerator2D(const CSGGeometry& geometry); //CSGCGALMeshGenerator2D(const std::vector >& subdomains); ~CSGCGALMeshGenerator2D(); void generate(Mesh& mesh); /// Default parameter values static Parameters default_parameters() { Parameters p("csg_cgal_meshgenerator"); p.add("mesh_resolution", 64); p.add("triangle_shape_bound", 0.125); p.add("cell_size", 0.25); // shorter edges in the domain will be collapsed before meshing p.add("edge_minimum", 10e-5); return p; } private: const CSGGeometry &geometry; }; } #endif dolfin-1.3.0/dolfin/generation/Triangulate.h0000644000175000017500000000273312263014601020704 0ustar johannrjohannr// Copyright (C) 2012 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2012-02-02 // Last changed: #ifndef __DOLFIN_TRIANGULATEGENERATOR_H #define __DOLFIN_TRIANGULATEGENERATOR_H #ifdef HAS_CGAL #include namespace dolfin { class Mesh; class Point; /// Create mesh from a triangulation of points class Triangulate { public: /// Create mesh from a triangulation of points static void triangulate(Mesh& mesh, const std::vector& vertices, std::size_t gdim); private: // Create 2D mesh from a triangulation of points static void triangulate2D(Mesh& mesh, const std::vector& vertices); // Create 3D mesh from a triangulation of points static void triangulate3D(Mesh& mesh, const std::vector& vertices); }; } #endif #endif dolfin-1.3.0/dolfin/generation/BoxMesh.h0000644000175000017500000000447112263014601017773 0ustar johannrjohannr// Copyright (C) 2005-2011 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Nuno Lopes, 2008. // // First added: 2005-12-02 // Last changed: 2012-11-12 #ifndef __BOX_H #define __BOX_H #include #include namespace dolfin { /// Tetrahedral mesh of the 3D rectangular prism [x0, x1] x [y0, y1] /// x [z0, z1]. Given the number of cells (nx, ny, nz) in each /// direction, the total number of tetrahedra will be 6*nx*ny*nz and /// the total number of vertices will be (nx + 1)*(ny + 1)*(nz + 1). class BoxMesh : public Mesh { public: /// Create a uniform finite element _Mesh_ over the rectangular prism /// [x0, x1] x [y0, y1] x [z0, z1]. /// /// *Arguments* /// x0 (double) /// :math:`x`-min. /// y0 (double) /// :math:`y`-min. /// z0 (double) /// :math:`z`-min. /// x1 (double) /// :math:`x`-max. /// y1 (double) /// :math:`y`-max. /// z1 (double) /// :math:`z`-max. /// xn (double) /// Number of cells in :math:`x`-direction. /// yn (double) /// Number of cells in :math:`y`-direction. /// zn (double) /// Number of cells in :math:`z`-direction. /// /// *Example* /// .. code-block:: c++ /// /// // Mesh with 6 cells in each direction on the /// // set [-1,2] x [-1,2] x [-1,2]. /// BoxMesh mesh(-1, -1, -1, 2, 2, 2, 6, 6, 6); /// BoxMesh(double x0, double y0, double z0, double x1, double y1, double z1, std::size_t nx, std::size_t ny, std::size_t nz); }; } #endif dolfin-1.3.0/dolfin/generation/EllipsoidMesh.cpp0000644000175000017500000000460312263014601021517 0ustar johannrjohannr// Copyright (C) 2013 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-10-18 // Last changed: #include #include #include #include #include #include #include "ImplicitDomainMeshGenerator.h" #include "EllipsoidMesh.h" using namespace dolfin; // Surface representation class class EllipsoidSurface : public dolfin::ImplicitSurface { public: EllipsoidSurface(Point center, std::vector dims) : ImplicitSurface(Sphere(center, *std::max_element(dims.begin(), dims.end()) ), "manifold"), _center(center), _dims(dims) {} double operator()(const dolfin::Point& p) const { double d = 0.0; for (int i = 0; i < 3; ++i) { const double x = p[i] - _center[i]; d += x*x/(_dims[i]*_dims[i]); } return d - 1.0; } const Point _center; const std::vector _dims; }; //----------------------------------------------------------------------------- EllipsoidMesh::EllipsoidMesh(Point center, std::vector ellipsoid_dims, double cell_size) { Timer timer("Generate ellipsoid mesh"); // Create implicit representation of ellipsoid EllipsoidSurface surface(center, ellipsoid_dims); // Generate mesh #ifdef HAS_CGAL ImplicitDomainMeshGenerator::generate(*this, surface, cell_size) ; #else dolfin_error("EllipsoidMesh.cpp", "generate ellipsoid mesh", "Generation of ellipsoid meshes requires DOLFIN to be configured with CGAL"); #endif } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/generation/EllipsoidMesh.h0000644000175000017500000000462412263014601021167 0ustar johannrjohannr// Copyright (C) 2013 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-10-18 // Last changed: #ifndef __ELLIPSOID_MESH_H #define __ELLIPSOID_MESH_H #include #include namespace dolfin { class Point; /// Tetrahedral mesh of an ellipsoid. CGAL is used to generate the /// mesh. class EllipsoidMesh : public Mesh { public: /// Create an unstructured _Mesh_ of an ellipsoid /// /// *Arguments* /// center (_Point)) /// Center of the ellipsoid /// dims (std::vector) /// Axes lengths /// cell_size (double) /// Cell size measure /// /// *Example* /// .. code-block:: c++ /// /// // Create elliposid mesh /// std::vector dims(3); // dims[0] = 1.0; dims[1] = 2.0; dims[2] = 1.5; /// EllipsoidMesh mesh(Point(1.0, 2.0, -1.0), dims, 0.2); /// EllipsoidMesh(Point p, std::vector ellipsoid_dims, double cell_size); }; class SphereMesh : public EllipsoidMesh { public: /// Create an unstructured _Mesh_ of a sphere /// /// *Arguments* /// center (_Point_) /// Center of the ellipsoid /// radius (double) /// Axes lengths /// cell_size (double) /// Cell size measure /// /// *Example* /// .. code-block:: c++ /// /// // Create sphere with center (1.0, 2.0, -1.0) and /// // radius 3.0. Cell size is 0.2. /// SphereMesh mesh(Point(1.0, 2.0, -1.0), 3.0, 0.2); /// SphereMesh(Point p, double radius, double cell_size) : EllipsoidMesh(p, std::vector(3, radius), cell_size) {} }; } #endif dolfin-1.3.0/dolfin/generation/CSGMeshGenerator.cpp0000644000175000017500000000666312263014601022066 0ustar johannrjohannr// Copyright (C) 2012 Anders Logg, Benjamin Kehlet, Johannes Ring // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Joachim B Haga 2012 // // First added: 2012-01-01 // Last changed: 2013-03-15 #include #include #include "CSGMeshGenerator.h" #include "CSGGeometry.h" #include "CSGCGALMeshGenerator2D.h" #include "CSGCGALMeshGenerator3D.h" using namespace dolfin; #ifdef HAS_CGAL //----------------------------------------------------------------------------- void CSGMeshGenerator::generate(Mesh& mesh, const CSGGeometry& geometry, std::size_t resolution) { if (geometry.dim() == 2) { CSGCGALMeshGenerator2D generator(geometry); generator.parameters["mesh_resolution"] = static_cast(resolution); generator.generate(mesh); } else if (geometry.dim() == 3) { CSGCGALMeshGenerator3D generator(geometry); generator.parameters["mesh_resolution"] = static_cast(resolution); generator.generate(mesh); } else { dolfin_error("CSGMeshGenerator.cpp", "create mesh from CSG geometry", "Unhandled geometry dimension %d", geometry.dim()); } } //----------------------------------------------------------------------------- void CSGMeshGenerator::generate(BoundaryMesh& mesh, const CSGGeometry& geometry) { if (geometry.dim() == 2) { // Generate boundary mesh directly from 2D CSGGeometry is not // implemented. Instead, generate the full mesh and extract its boundary. CSGCGALMeshGenerator2D generator(geometry); Mesh full_mesh; generator.generate(full_mesh); mesh = BoundaryMesh(full_mesh, "exterior"); } else if (geometry.dim() == 3) { CSGCGALMeshGenerator3D generator(geometry); generator.generate(mesh); } else { dolfin_error("CSGMeshGenerator.cpp", "create boundary mesh from CSG geometry", "Unhandled geometry dimension %d", geometry.dim()); } } //----------------------------------------------------------------------------- #else void CSGMeshGenerator::generate(Mesh& mesh, const CSGGeometry& geometry, std::size_t resolution) { dolfin_error("CSGMeshGenerator.cpp", "create mesh from CSG geometry", "Mesh generation not available. Dolfin has been compiled without CGAL."); } //----------------------------------------------------------------------------- void CSGMeshGenerator::generate(BoundaryMesh& mesh, const CSGGeometry& geometry) { dolfin_error("CSGMeshGenerator.cpp", "create boundary mesh from CSG geometry", "Mesh generation not available. Dolfin has been compiled without CGAL."); } #endif dolfin-1.3.0/dolfin/generation/CSGPrimitive.h0000644000175000017500000000220712263014601020726 0ustar johannrjohannr// Copyright (C) 2012 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Benjamin Kehlet, 2012-2013 // // First added: 2012-04-11 // Last changed: 2013-06-24 #ifndef __CSG_PRIMITIVE_H #define __CSG_PRIMITIVE_H #include "CSGGeometry.h" namespace dolfin { /// Base class for Constructive Solid Geometry (CSG) primitives. class CSGPrimitive : public CSGGeometry { public: virtual bool is_operator() const { return false; } virtual std::size_t dim() const = 0; }; } #endif dolfin-1.3.0/dolfin/generation/UnitTriangleMesh.h0000644000175000017500000000231012263014601021636 0ustar johannrjohannr// Copyright (C) 2010 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Benjamin Kehlet 2012 // // First added: 2010-10-19 // Last changed: 2012-11-09 #ifndef __UNIT_TRIANGLE_MESH_H #define __UNIT_TRIANGLE_MESH_H #include namespace dolfin { /// A mesh consisting of a single triangle with vertices at /// /// (0, 0) /// (1, 0) /// (0, 1) /// /// This class is useful for testing. class UnitTriangleMesh : public Mesh { public: /// Create mesh of unit triangle UnitTriangleMesh(); }; } #endif dolfin-1.3.0/dolfin/generation/EllipseMesh.h0000644000175000017500000000453612263014601020642 0ustar johannrjohannr// Copyright (C) 2013 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-10-18 // Last changed: #ifndef __ELLIPSE_MESH_H #define __ELLIPSE_MESH_H #include #include namespace dolfin { class Point; /// Triangular mesh of an ellipse. CGAL is used to generate the /// mesh. class EllipseMesh : public Mesh { public: /// Create an unstructured _Mesh_ of an ellipse /// /// *Arguments* /// center (_Point)) /// Center of the ellipsoid /// dims (std::vector) /// Axes lengths /// cell_size (double) /// Cell size measure /// /// *Example* /// .. code-block:: c++ /// /// // Create elliposid mesh /// std::vector dims(2); // dims[0] = 1.0; dims[1] = 2.0; /// EllipsoidMesh mesh(Point(1.0, 2.0), dims, 0.2); /// EllipseMesh(Point p, std::vector ellipse_dims, double cell_size); }; class CircleMesh : public EllipseMesh { public: /// Create an unstructured _Mesh_ of a circle /// /// *Arguments* /// center (_Point_) /// Center of the ellipsoid /// radius (double) /// Axes lengths /// cell_size (double) /// Cell size measure /// /// *Example* /// .. code-block:: c++ /// /// // Create sphere with center (1.0, 2.0) and /// // radius 3.0. Cell size is 0.2. /// SphereMesh mesh(Point(1.0, 2.0), 3.0, 0.2); /// CircleMesh(Point p, double radius, double cell_size) : EllipseMesh(p, std::vector(2, radius), cell_size) {} }; } #endif dolfin-1.3.0/dolfin/generation/self_intersect.h0000644000175000017500000001120612263014601021431 0ustar johannrjohannr// compute self-intersection of a CGAL triangle polyhedron mesh // original code from Lutz Kettner #ifndef _SELF_INTERSECT_H_ #define _SELF_INTERSECT_H_ #include #include #include template struct Intersect_facets { typedef typename Kernel::Point_3 Point; typedef typename Kernel::Vector_3 Vector; typedef typename Kernel::Segment_3 Segment; typedef typename Kernel::Triangle_3 Triangle; typedef typename Polyhedron::Facet_const_handle Facet_const_handle; typedef typename Polyhedron::Facet_const_iterator Facet_const_iterator; typedef typename Polyhedron::Halfedge_const_handle Halfedge_const_handle; typedef typename CGAL::Box_intersection_d::Box_with_handle_d Box; mutable OutputIterator m_iterator; public: Intersect_facets(OutputIterator it) : m_iterator(it) { } void operator()(const Box* b, const Box* c) const { Halfedge_const_handle h = b->handle()->halfedge(); // check for shared egde --> no intersection if(h->opposite()->facet() == c->handle() || h->next()->opposite()->facet() == c->handle() || h->next()->next()->opposite()->facet() == c->handle()) return; // check for shared vertex --> maybe intersection, maybe not Halfedge_const_handle g = c->handle()->halfedge(); Halfedge_const_handle v; if(h->vertex() == g->vertex()) v = g; if(h->vertex() == g->next()->vertex()) v = g->next(); if(h->vertex() == g->next()->next()->vertex()) v = g->next()->next(); if(v == Halfedge_const_handle()) { h = h->next(); if(h->vertex() == g->vertex()) v = g; if(h->vertex() == g->next()->vertex()) v = g->next(); if(h->vertex() == g->next()->next()->vertex()) v = g->next()->next(); if(v == Halfedge_const_handle()) { h = h->next(); if(h->vertex() == g->vertex()) v = g; if(h->vertex() == g->next()->vertex()) v = g->next(); if(h->vertex() == g->next()->next()->vertex()) v = g->next()->next(); } } if(v != Halfedge_const_handle()) { // found shared vertex: CGAL_assertion(h->vertex() == v->vertex()); // geometric check if the opposite segments intersect the triangles Triangle t1( h->vertex()->point(), h->next()->vertex()->point(), h->next()->next()->vertex()->point()); Triangle t2( v->vertex()->point(), v->next()->vertex()->point(), v->next()->next()->vertex()->point()); Segment s1( h->next()->vertex()->point(), h->next()->next()->vertex()->point()); Segment s2( v->next()->vertex()->point(), v->next()->next()->vertex()->point()); if(CGAL::do_intersect(t1,s2)) { *m_iterator++ = t1; *m_iterator++ = t2; } else if(CGAL::do_intersect(t2,s1)) { *m_iterator++ = t1; *m_iterator++ = t2; } return; } // check for geometric intersection Triangle t1( h->vertex()->point(), h->next()->vertex()->point(), h->next()->next()->vertex()->point()); Triangle t2( g->vertex()->point(), g->next()->vertex()->point(), g->next()->next()->vertex()->point()); if(CGAL::do_intersect(t1, t2)) { *m_iterator++ = t1; *m_iterator++ = t2; } } // end operator () }; // end struct Intersect_facets template void self_intersect(const Polyhedron& polyhedron, OutputIterator out) { typedef typename Polyhedron::Facet_const_iterator Facet_const_iterator; typedef typename Polyhedron::Facet_const_handle Facet_const_handle; typedef typename CGAL::Box_intersection_d::Box_with_handle_d Box; // make one box per facet std::vector boxes; boxes.reserve(polyhedron.size_of_facets()); Facet_const_iterator f; for(f = polyhedron.facets_begin(); f != polyhedron.facets_end(); f++) boxes.push_back(Box( f->halfedge()->vertex()->point().bbox() + f->halfedge()->next()->vertex()->point().bbox() + f->halfedge()->next()->next()->vertex()->point().bbox(), f)); // generate box pointers std::vector box_ptr; box_ptr.reserve(polyhedron.size_of_facets()); typename std::vector::iterator b; for(b = boxes.begin(); b != boxes.end(); b++) box_ptr.push_back(&*b); // compute self-intersections filtered out by boxes Intersect_facets intersect_facets(out); std::ptrdiff_t cutoff = 2000; CGAL::box_self_intersection_d(box_ptr.begin(), box_ptr.end(),intersect_facets,cutoff); } // end self_intersect #endif // _SELF_INTERSECT_H_ dolfin-1.3.0/dolfin/generation/cgal_triangulate_polyhedron.h0000644000175000017500000001703712263014601024200 0ustar johannrjohannr// Copyright (c) 2010-2011 GeometryFactory Sarl (France). // All rights reserved. // // This file is part of CGAL (www.cgal.org). // You can redistribute it and/or modify it under the terms of the GNU // General Public License as published by the Free Software Foundation, // either version 3 of the License, or (at your option) any later version. // // Licensees holding a valid commercial license may use this file in // accordance with the commercial license agreement provided with the software. // // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // // $URL: svn+ssh://scm.gforge.inria.fr/svn/cgal/branches/next/Polyhedron/demo/Polyhedron/include/CGAL/triangulate_polyhedron.h $ // $Id: triangulate_polyhedron.h 67117 2012-01-13 18:14:48Z lrineau $ // // // Author(s) : Laurent Rineau #ifndef CGAL_TRIANGULATE_POLYHEDRON_H #include #include #include #include #include #include #include // TODO: submit this file to CGAL too #include "compute_normal.h" #include #include #include namespace CGAL { template class Triangulate_modifier : public CGAL::Modifier_base { typedef typename Polyhedron::HalfedgeDS HDS; typedef typename Polyhedron::Traits Traits; typedef typename Polyhedron::Halfedge_handle Halfedge_handle; typedef typename Polyhedron::Facet Facet; typedef typename Polyhedron::Facet_iterator Facet_iterator; typedef typename Polyhedron::Facet_handle Facet_handle; typedef CGAL::Triangulation_2_filtered_projection_traits_3 P_traits; typedef CGAL::Triangulation_vertex_base_with_info_2 Vb; struct Face_info { typename Polyhedron::Halfedge_handle e[3]; bool is_external; }; typedef CGAL::Triangulation_face_base_with_info_2 Fb1; typedef CGAL::Constrained_triangulation_face_base_2 Fb; typedef CGAL::Triangulation_data_structure_2 TDS; typedef CGAL::No_intersection_tag Itag; typedef CGAL::Constrained_Delaunay_triangulation_2 CDTbase; typedef CGAL::Constrained_triangulation_plus_2 CDT; public: Triangulate_modifier() {} bool is_external(typename CDT::Face_handle fh) const { return fh->info().is_external; } void operator()(HDS& hds) { CGAL::HalfedgeDS_decorator decorator(hds); typedef typename HDS::Halfedge Halfedge; // One need to store facet handles into a vector, because the list of // facets of the polyhedron will be modified during the loop, and // that invalidates the range [facets_begin(), facets_end()[. std::vector facets; facets.reserve(hds.size_of_faces()); for(Facet_iterator fit = hds.faces_begin(), end = hds.faces_end(); fit != end; ++fit) { facets.push_back(fit); } // Iterates on the vector of facet handles for (typename std::vector::iterator fit_it = facets.begin(), end0 = facets.end(); fit_it != end0; ++fit_it) { Facet_handle fit0 = *fit_it; typename Traits::Vector_3 normal = compute_facet_normal(*fit0); P_traits cdt_traits(normal); CDT cdt(cdt_traits); typename Facet::Halfedge_around_facet_circulator he_circ = fit0->facet_begin(), he_circ_end(he_circ); typename CDT::Vertex_handle previous, first; do { typename CDT::Vertex_handle vh = cdt.insert(he_circ->vertex()->point()); if (first == 0) first = vh; vh->info() = he_circ; if(previous != 0 && previous != vh) cdt.insert_constraint(previous, vh); previous = vh; } while (++he_circ != he_circ_end); cdt.insert_constraint(previous, first); // sets mark is_external for(typename CDT::All_faces_iterator fit = cdt.all_faces_begin(), end = cdt.all_faces_end(); fit != end; ++fit) { fit->info().is_external = false; } std::queue face_queue; face_queue.push(cdt.infinite_vertex()->face()); while (!face_queue.empty()) { typename CDT::Face_handle fh = face_queue.front(); face_queue.pop(); if(fh->info().is_external) continue; fh->info().is_external = true; for (int i = 0; i < 3; ++i) { if (!cdt.is_constrained(std::make_pair(fh, i))) face_queue.push(fh->neighbor(i)); } } // then modify the polyhedron decorator.make_hole(fit0->halfedge()); for(typename CDT::Finite_edges_iterator eit = cdt.finite_edges_begin(), end = cdt.finite_edges_end(); eit != end; ++eit) { typename CDT::Face_handle fh = eit->first; const int index = eit->second; typename CDT::Face_handle opposite_fh = fh->neighbor(eit->second); const int opposite_index = opposite_fh->index(fh); const typename CDT::Vertex_handle va = fh->vertex(cdt. cw(index)); const typename CDT::Vertex_handle vb = fh->vertex(cdt.ccw(index)); if (!(is_external(fh) && is_external(opposite_fh)) && ! cdt.is_constrained(*eit) ) { // strictly internal edge Halfedge_handle h = hds.edges_push_back(Halfedge(), Halfedge()); fh->info().e[index] = h; opposite_fh->info().e[opposite_index] = h->opposite(); decorator.set_vertex(h, va->info()->vertex()); decorator.set_vertex(h->opposite(), vb->info()->vertex()); } if( cdt.is_constrained(*eit) ) { if(!is_external(fh)) fh->info().e[index] = va->info(); if(!is_external(opposite_fh)) opposite_fh->info().e[opposite_index] = vb->info(); } } for (typename CDT::Finite_faces_iterator fit = cdt.finite_faces_begin(), end = cdt.finite_faces_end(); fit != end; ++fit) { if (!is_external(fit)) { Halfedge_handle h0 = fit->info().e[0]; Halfedge_handle h1 = fit->info().e[1]; Halfedge_handle h2 = fit->info().e[2]; CGAL_assertion(h0 != Halfedge_handle()); CGAL_assertion(h1 != Halfedge_handle()); CGAL_assertion(h2 != Halfedge_handle()); typedef typename Halfedge::Base HBase; h0->HBase::set_next(h1); decorator.set_prev(h1, h0); h1->HBase::set_next(h2); decorator.set_prev(h2, h1); h2->HBase::set_next(h0); decorator.set_prev(h0, h2); decorator.fill_hole(h0); } } } // end loop on facets of the input polyhedron } }; // end class Triangulate_modifier template void triangulate_polyhedron(Polyhedron& p) { CGAL::Triangulate_modifier modifier; p.delegate(modifier); } } // end namespace CGAL #endif // CGAL_TRIANGULATE_POLYHEDRON_H dolfin-1.3.0/dolfin/generation/CGALMeshBuilder.h0000644000175000017500000004224212263014601021256 0ustar johannrjohannr// Copyright (C) 2012 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Joachim B Haga 2012 // // First added: 2012-02-02 // Last changed: 2012-09-05 #ifndef __DOLFIN_CGALMESHBUILDER_H #define __DOLFIN_CGALMESHBUILDER_H #ifdef HAS_CGAL #include #include #include #include #include #include #include #include #include // This file should not be indlued in any header files to avoid // polluting DOLFIN with CGAL code. namespace dolfin { /// This class provides a function to build a DOLFIN Mesh from a /// CGAL mesh or triangulation class CGALMeshBuilder { public: /// Build DOLFIN Mesh from a CGAL triangulation template static void build(Mesh& mesh, T& triangulation); /// Build DOLFIN Mesh from a CGAL mesh (C3t3) template static void build_from_mesh(Mesh& mesh, T& cgal_mesh); /// Build DOLFIN Mesh from a CGAL surface mesh (C2t3) template static void build_surface_mesh_c3t3(Mesh& mesh, T& cgal_mesh, const ImplicitSurface* surface=NULL); /// Build DOLFIN Mesh from a CGAL surface mesh (C2t3) template static void build_surface_mesh_c2t3(Mesh& mesh, T& cgal_mesh, const ImplicitSurface* surface=NULL); /// Build DOLFIN surface mesh from a CGAL polyhedron_3 template static void build_surface_mesh_poly(Mesh& mesh, T& polyhedron); private: // Get number of cells in triangulation (2D) template static std::size_t _num_cells(const CGAL::Triangulation_2& t) { return t.number_of_faces(); } // Get number of cells in Delaunay triangulation (2D) template static std::size_t _num_cells(const CGAL::Constrained_Delaunay_triangulation_2& t) { std::size_t num_cells = 0; typename CGAL::Constrained_Delaunay_triangulation_2::Finite_faces_iterator cgal_cell; for (cgal_cell = t.finite_faces_begin(); cgal_cell != t.finite_faces_end(); ++cgal_cell) { if(cgal_cell->is_in_domain()) ++num_cells; } return num_cells; } // Get number of cells in triangulation (3D) template static std::size_t _num_cells(const CGAL::Triangulation_3& t) { return t.number_of_cells(); } // Add cells to mesh (default) template static void add_cells(MeshEditor& mesh_editor, const T& t) { dolfin_error("CGALMeshBuilder.h", "add CGAL cells to DOLFIN Mesh", "Cannot find suitable specialized template funtion"); } // Add cells (from 2D CGAL triangulation) template static void add_cells(MeshEditor& mesh_editor, const CGAL::Triangulation_2& t) { std::size_t cell_index = 0; typename CGAL::Triangulation_2::Finite_faces_iterator cgal_cell; for (cgal_cell = t.finite_faces_begin(); cgal_cell != t.finite_faces_end(); ++cgal_cell) { std::vector cell_data(3); for (std::size_t i = 0; i < 3; ++i) cell_data[i] = cgal_cell->vertex(i)->info(); mesh_editor.add_cell(cell_index++, cell_data); } } // Add cells (from 2D CGAL constrained Delaunay triangulation) template static void add_cells(MeshEditor& mesh_editor, const CGAL::Constrained_Delaunay_triangulation_2& t) { std::size_t cell_index = 0; typename CGAL::Constrained_Delaunay_triangulation_2::Finite_faces_iterator cgal_cell; for (cgal_cell = t.finite_faces_begin(); cgal_cell != t.finite_faces_end(); ++cgal_cell) { // Add cell if it is in the domain if(cgal_cell->is_in_domain()) { std::vector cell_data(3); for (std::size_t i = 0; i < 3; ++i) cell_data[i] = cgal_cell->vertex(i)->info(); mesh_editor.add_cell(cell_index++, cell_data); } } } // Add cells (from 3D CGAL triangulation) template static void add_cells(MeshEditor& mesh_editor, const CGAL::Triangulation_3& t) { std::size_t cell_index = 0; typename CGAL::Triangulation_3::Finite_cells_iterator cgal_cell; for (cgal_cell = t.finite_cells_begin(); cgal_cell != t.finite_cells_end(); ++cgal_cell) { std::vector cell_data(4); for (std::size_t i = 0; i < 4; ++i) cell_data[i] = cgal_cell->vertex(i)->info(); mesh_editor.add_cell(cell_index++, cell_data); } } }; //--------------------------------------------------------------------------- template void CGALMeshBuilder::build(Mesh& mesh, T& triangulation) { // Clear mesh mesh.clear(); // Get various dimensions const std::size_t gdim = triangulation.finite_vertices_begin()->point().dimension(); const std::size_t tdim = triangulation.dimension(); const std::size_t num_vertices = triangulation.number_of_vertices(); const std::size_t num_cells = _num_cells(triangulation); // Create a MeshEditor and open dolfin::MeshEditor mesh_editor; mesh_editor.open(mesh, tdim, gdim); mesh_editor.init_vertices(num_vertices); mesh_editor.init_cells(num_cells); // Add vertices to mesh std::size_t vertex_index = 0; typename T::Finite_vertices_iterator cgal_vertex; for (cgal_vertex = triangulation.finite_vertices_begin(); cgal_vertex != triangulation.finite_vertices_end(); ++cgal_vertex) { // Get vertex coordinates and add vertex to the mesh Point p; p[0] = cgal_vertex->point()[0]; p[1] = cgal_vertex->point()[1]; if (gdim == 3) p[2] = cgal_vertex->point()[2]; // Add mesh vertex mesh_editor.add_vertex(vertex_index, p); // Attach index to vertex and increment cgal_vertex->info() = vertex_index++; } // Add cells to mesh (calls specialized function because CGAL // function names differ in 2D and 3D) add_cells(mesh_editor, triangulation); // Close mesh editor mesh_editor.close(); } //--------------------------------------------------------------------------- template void CGALMeshBuilder::build_from_mesh(Mesh& mesh, T& cgal_mesh) { // Clear mesh mesh.clear(); // CGAL triangulation typename T::Triangulation t = cgal_mesh.triangulation(); // Get various dimensions const std::size_t gdim = t.finite_vertices_begin()->point().dimension(); const std::size_t tdim = t.dimension(); const std::size_t num_vertices = t.number_of_vertices(); const std::size_t num_cells = cgal_mesh.number_of_cells(); // Create a MeshEditor and open dolfin::MeshEditor mesh_editor; mesh_editor.open(mesh, tdim, gdim); mesh_editor.init_vertices(num_vertices); mesh_editor.init_cells(num_cells); // Add vertices to mesh std::size_t vertex_index = 0; typename T::Triangulation::Finite_vertices_iterator v; for (v = t.finite_vertices_begin(); v != t.finite_vertices_end(); ++v) { // Get vertex coordinates and add vertex to the mesh Point p; p[0] = v->point()[0]; p[1] = v->point()[1]; p[2] = v->point()[2]; // Add mesh vertex mesh_editor.add_vertex(vertex_index, p); // Attach index to vertex and increment v->info() = vertex_index++; } // Sanity check on number of vertices dolfin_assert(vertex_index == num_vertices); // Iterate over all cell in triangulation std::size_t cell_index = 0; typename T::Triangulation::Finite_cells_iterator c; for (c = t.finite_cells_begin(); c != t.finite_cells_end(); ++c) { // Add cell if in CGAL mesh, and increment index if (cgal_mesh.is_in_complex(c)) { std::vector cell_data(4); for (std::size_t i = 0; i < 4; ++i) cell_data[i] = c->vertex(i)->info(); mesh_editor.add_cell(cell_index++, cell_data); } } // Sanity check on number of cells dolfin_assert(cell_index == num_cells); // Close mesh editor mesh_editor.close(); } //--------------------------------------------------------------------------- template void CGALMeshBuilder::build_surface_mesh_c3t3(Mesh& mesh, T& cgal_mesh, const ImplicitSurface* surface ) { // Clear mesh mesh.clear(); // CGAL triangulation typename T::Triangulation t = cgal_mesh.triangulation(); // Get various dimensions const std::size_t gdim = 3; const std::size_t tdim = 2; const std::size_t num_vertices = t.number_of_vertices(); const std::size_t num_cells = cgal_mesh.number_of_facets(); // Create a MeshEditor and open dolfin::MeshEditor mesh_editor; mesh_editor.open(mesh, tdim, gdim); mesh_editor.init_vertices(num_vertices); mesh_editor.init_cells(num_cells); // Set all vertex indices to -1 typename T::Facets_in_complex_iterator c; for (c = cgal_mesh.facets_in_complex_begin(); c != cgal_mesh.facets_in_complex_end(); ++c) { c->first->vertex( (c->second + 1)%4 )->info() = -1; c->first->vertex( (c->second + 2)%4 )->info() = -1; c->first->vertex( (c->second + 3)%4 )->info() = -1; } // Iterate over facets std::size_t cell_index = 0; std::size_t vertex_index = 0; for (c = cgal_mesh.facets_in_complex_begin(); c != cgal_mesh.facets_in_complex_end(); ++c) { // Notes: // - c->first is the volume cell // - c->second is the local facet index. Facet local index is same // loocal index of opposite vertex typedef typename T::Triangulation::Point Point_3; if (surface) { // Compute centroid of facet Point p; for (std::size_t i = 1; i < 4; ++i) { // Get the vertex point const Point_3& _p = c->first->vertex((c->second + i)%4)->point(); p[0] += _p.x(); p[1] += _p.y(); p[2] += _p.z(); } p[0] /= 3.0; p[1] /= 3.0; p[2] /= 3.0; // Check if facet should be added. If not, continue if (surface->f1(p) > 0.0) continue; } // Add vertex if not already added and increment index for (std::size_t i = 1; i < 4; ++i) { // Get the ((c->second + i)%4) cell vertex info const int v_index = c->first->vertex( (c->second + i)%4 )->info(); // In vertex index has not been set, set now and add to mesh if (v_index < 0) { c->first->vertex((c->second + i)%4)->info() = vertex_index; // Get vertex coordinates and add vertex to the mesh Point p; for (std::size_t j = 0; j < 3; ++j) p[j] = c->first->vertex((c->second + i) % 4)->point()[j]; mesh_editor.add_vertex(vertex_index, p); ++vertex_index; } } // Get cell vertices and add to Mesh std::vector vertex_indices(3); for (std::size_t i = 0; i < 3; ++i) vertex_indices[i] = c->first->vertex( (c->second + i + 1)%4 )->info(); mesh_editor.add_cell(cell_index++, vertex_indices); } // Close mesh editor mesh_editor.close(); } //--------------------------------------------------------------------------- template void CGALMeshBuilder::build_surface_mesh_c2t3(Mesh& mesh, T& cgal_mesh, const ImplicitSurface* surface) { if (surface) error("CGALMeshBuilder::build_surface_mesh_c2t3 does not yet support implicit surfaces"); // Clear mesh mesh.clear(); // CGAL triangulation typename T::Triangulation t = cgal_mesh.triangulation(); // Get various dimensions const std::size_t gdim = 3; const std::size_t tdim = 2; const std::size_t num_vertices = t.number_of_vertices(); const std::size_t num_cells = cgal_mesh.number_of_facets(); // Create a MeshEditor and open dolfin::MeshEditor mesh_editor; mesh_editor.open(mesh, tdim, gdim); mesh_editor.init_vertices(num_vertices); mesh_editor.init_cells(num_cells); std::size_t vertex_index = 0; typename T::Vertex_iterator v; for (v = cgal_mesh.vertices_begin(); v != cgal_mesh.vertices_end(); ++v) v->info() = -1; std::size_t cell_index = 0; typename T::Facet_iterator c; for (c = cgal_mesh.facets_begin(); c != cgal_mesh.facets_end(); ++c) { // Add cell if in CGAL mesh, and increment index if (cgal_mesh.is_in_complex(*c)) { // Check that cell is on surface typedef typename T::Triangulation::Point Point_3; if (surface) { // Compute centroid of facet Point p; for (std::size_t i = 1; i < 4; ++i) { // Get the vertex point const Point_3& _p = c->first->vertex((c->second + i)%4)->point(); p[0] += _p.x(); p[1] += _p.y(); p[2] += _p.z(); } p[0] /= 3.0; p[1] /= 3.0; p[2] /= 3.0; // Check if facet should be added. If not, continue if (surface->f1(p) > 0.0) continue; } // Add vertex if not already added and increment index for (std::size_t i = 1; i < 4; ++i) { // Get the ((c->second + i)%4) cell vertex info const int v_index = c->first->vertex( (c->second + i)%4 )->info(); // In vertex index has not been set, set now and add to mesh if (v_index < 0) { c->first->vertex((c->second + i)%4)->info() = vertex_index; // Get vertex coordinates and add vertex to the mesh Point p; for (std::size_t j = 0; j < 3; ++j) p[j] = c->first->vertex((c->second + i) % 4)->point()[j]; mesh_editor.add_vertex(vertex_index, p); ++vertex_index; } } // Get cell vertices and add to Mesh std::vector vertex_indices(3); for (std::size_t i = 0; i < 3; ++i) vertex_indices[i] = c->first->vertex( (c->second + i + 1)%4 )->info(); mesh_editor.add_cell(cell_index++, vertex_indices); } } // Close mesh editor mesh_editor.close(); } //--------------------------------------------------------------------------- template void CGALMeshBuilder::build_surface_mesh_poly(Mesh& mesh, T& poly) { // Clear mesh mesh.clear(); // Get various dimensions const std::size_t gdim = 3; const std::size_t tdim = 2; const std::size_t num_vertices = poly.size_of_vertices(); const std::size_t num_cells = poly.size_of_facets(); // The vertices have no info(), so make a separate point map (vertices // aren't ordered) std::map point_map; // Create a MeshEditor and open dolfin::MeshEditor mesh_editor; mesh_editor.open(mesh, tdim, gdim); mesh_editor.init_vertices(num_vertices); mesh_editor.init_cells(num_cells); // Add vertices to mesh std::size_t vertex_index = 0; for (typename T::Vertex_iterator v = poly.vertices_begin(); v != poly.vertices_end(); ++v) { // Get vertex coordinates add vertex to the mesh Point p; p[0] = v->point()[0]; p[1] = v->point()[1]; p[2] = v->point()[2]; // Add mesh vertex mesh_editor.add_vertex(vertex_index, p); // Attach index to vertex and increment point_map[v->point()] = vertex_index++; } std::size_t cell_index = 0; for (typename T::Facet_iterator c = poly.facets_begin(); c != poly.facets_end(); c++) { std::vector vertex_indices; typename T::Facet::Halfedge_around_facet_circulator halfedge(c->facet_begin()); do { vertex_indices.push_back(point_map[halfedge->vertex()->point()]); halfedge++; } while (halfedge != c->facet_begin()); mesh_editor.add_cell(cell_index++, vertex_indices); } dolfin_assert(vertex_index == num_vertices); dolfin_assert(cell_index == num_cells); // Close mesh editor mesh_editor.close(); } //--------------------------------------------------------------------------- } #endif #endif dolfin-1.3.0/dolfin/generation/CSGPrimitives3D.h0000644000175000017500000001343012263014601021300 0ustar johannrjohannr// Copyright (C) 2012 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Benjamin Kehlet, 2012 // Modified by Johannes Ring, 2012 // // First added: 2012-04-11 // Last changed: 2012-11-12 #ifndef __CSG_PRIMITIVES_3D_H #define __CSG_PRIMITIVES_3D_H #include #include #include "CSGPrimitive.h" namespace dolfin { /// Base class for 3D primitives class CSGPrimitive3D : public CSGPrimitive { public: /// Return dimension of geometry std::size_t dim() const { return 3; } }; /// This class describes a 3D sphere which can be used to build /// geometries using Constructive Solid Geometry (CSG). class Sphere : public CSGPrimitive3D { public: /// Create sphere at x = (x0, x1, x2) with radius r. /// /// *Arguments* /// x0 (double) /// x0-coordinate of center. /// x1 (double) /// x1-coordinate of center. /// x2 (double) /// x2-coordinate of center. /// r (double) /// radius. Sphere(Point center, double radius, std::size_t slices=16); /// Informal string representation std::string str(bool verbose) const; Type getType() const { return CSGGeometry::Sphere; } const Point c; const double r; const std::size_t _slices; }; /// This class describes a 3D box which can be used to build /// geometries using Constructive Solid Geometry (CSG). class Box : public CSGPrimitive3D { public: /// Create box defined by two opposite corners /// x = (x0, x1, x2) and y = (y0, y1, y2). /// /// *Arguments* /// x0 (double) /// x0-coordinate of first corner. /// x1 (double) /// x1-coordinate of first corner. /// x2 (double) /// x2-coordinate of first corner. /// y0 (double) /// y0-coordinate of second corner. /// y1 (double) /// y1-coordinate of second corner. /// y2 (double) /// y2-coordinate of second corner. Box(double x0, double x1, double x2, double y0, double y1, double y2); /// Informal string representation std::string str(bool verbose) const; Type getType() const { return CSGGeometry::Box; } double _x0, _x1, _x2, _y0, _y1, _y2; }; /// This class describes a 3D cone which can be used to build /// geometries using Constructive Solid Geometry (CSG). class Cone : public CSGPrimitive3D { public: /// Create cone defined by upper and lower center /// and radius respectively. /// /// *Arguments* /// top (Point) /// Center at top of cone. /// top_radius(double) /// Radius bottom of cone. /// bottom(Point) /// Center at top of cone. /// bottom_radius (double) /// radius at top of cone. /// slices (std::size_t) /// number of faces on the side when generating a /// polyhedral approximation. Cone(Point top, Point bottom, double top_radius, double bottom_radius, std::size_t slices=32); /// Informal string representation std::string str(bool verbose) const; Type getType() const { return CSGGeometry::Cone; } const Point _top, _bottom; const double _top_radius, _bottom_radius; const std::size_t _slices; }; /// This class describes a 3D cylinder which can be used to build /// geometries using Constructive Solid Geometry (CSG). A cylinder /// is here just a special case of a cone. class Cylinder : public Cone { public: /// Create cylinder defined by upper and lower center /// and radius respectively. /// /// *Arguments* /// top (Point) /// Center at top of cylinder. /// bottom(Point) /// Center at top of cylinder. /// r (double) /// radius of cylinder. /// slices (std::size_t) /// number of faces on the side when generating a /// polyhedral approximation. Cylinder(Point top, Point bottom, double r, std::size_t slices=32) : Cone(top, bottom, r, r, slices) {} }; /// This class describes a Tetrahedron which can be used to build /// geometries using Constructive Solid Geometry (CSG). class Tetrahedron : public CSGPrimitive3D { public: /// Create tetrahedron defined by four corner points. /// /// *Arguments* /// x0 (Point) /// Point. /// x1 (Point) /// Point. /// x2 (Point) /// Point. /// x3 (Point) /// Point. Tetrahedron(Point x0, Point x1, Point x2, Point x3); /// Informal string representation std::string str(bool verbose) const; Type getType() const { return CSGGeometry::Tetrahedron; } Point _x0, _x1, _x2, _x3; }; /// This class describes a 3D surface loaded from file. /// The supported file types class Surface3D : public CSGPrimitive3D { public: Surface3D(std::string filename); /// Informal string representation std::string str(bool verbose) const; Type getType() const { return CSGGeometry::Surface3D; } std::string _filename; }; } #endif dolfin-1.3.0/dolfin/generation/Triangulate.cpp0000644000175000017500000001021612263014601021232 0ustar johannrjohannr// Copyright (C) 2012 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2012-02-02 // Last changed: 2012-02-09 #ifdef HAS_CGAL #include #include #include #include #include #include #include #include #include #include #include #include #include "CGALMeshBuilder.h" #include "Triangulate.h" typedef CGAL::Exact_predicates_inexact_constructions_kernel K; // 2D triangulation typedefs typedef CGAL::Triangulation_vertex_base_2 Tvb2base; typedef CGAL::Triangulation_vertex_base_with_info_2 Tvb2; typedef CGAL::Triangulation_face_base_2 Tfb2; typedef CGAL::Triangulation_data_structure_2 Tds2; typedef CGAL::Delaunay_triangulation_2 Triangulation2; // 3D triangulation typedefs typedef CGAL::Triangulation_vertex_base_3 Tvb3base; typedef CGAL::Triangulation_vertex_base_with_info_3 Tvb3; typedef CGAL::Triangulation_cell_base_3 Tfb3; typedef CGAL::Triangulation_data_structure_3 Tds3; typedef CGAL::Delaunay_triangulation_3 Triangulation3; using namespace dolfin; //----------------------------------------------------------------------------- void Triangulate::triangulate(Mesh& mesh, const std::vector& vertices, std::size_t gdim) { // Check that we are not running in parallel if (MPI::num_processes() > 1) { dolfin_error("Triangulate.cpp", "triangulate points using CGAL", "Cannot create triangulated meshes in parallel"); } // Check that we have enough points (vertices) to create a triangulation dolfin_assert(vertices.size() > gdim); // Triangulate points and build mesh if (gdim == 2) triangulate2D(mesh, vertices); else if (gdim == 3) triangulate3D(mesh, vertices); else { dolfin_error("Triangulate.cpp", "triangulate points using CGAL", "No suitable triangulate function for geometric dim %d", gdim); } } //----------------------------------------------------------------------------- void Triangulate::triangulate2D(Mesh& mesh, const std::vector& vertices) { // Create vector of CGAL points std::vector cgal_points; std::vector::const_iterator p; for (p = vertices.begin(); p != vertices.end(); ++p) cgal_points.push_back(K::Point_2(p->x(), p->y())); // Create CGAL triangulation Triangulation2 t; t.insert(cgal_points.begin(), cgal_points.end()); // Build DOLFIN mesh from triangulation CGALMeshBuilder::build(mesh, t); } //----------------------------------------------------------------------------- void Triangulate::triangulate3D(Mesh& mesh, const std::vector& vertices) { // Create vector of CGAL points std::vector cgal_points; std::vector::const_iterator p; for (p = vertices.begin(); p != vertices.end(); ++p) cgal_points.push_back(K::Point_3(p->x(), p->y(), p->z())); // Create CGAL triangulation Triangulation3 t; t.insert(cgal_points.begin(), cgal_points.end()); // Build DOLFIN mesh from triangulation CGALMeshBuilder::build(mesh, t); } //----------------------------------------------------------------------------- #endif dolfin-1.3.0/dolfin/generation/UnitCubeMesh.h0000644000175000017500000000355412263014601020762 0ustar johannrjohannr// Copyright (C) 2005-2006 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Benjamin Kehlet 2012 // // First added: 2005-12-02 // Last changed: 2012-11-09 #ifndef __UNIT_CUBE_MESH_H #define __UNIT_CUBE_MESH_H #include #include "BoxMesh.h" namespace dolfin { /// Tetrahedral mesh of the 3D unit cube [0,1] x [0,1] x [0,1]. /// Given the number of cells (nx, ny, nz) in each direction, /// the total number of tetrahedra will be 6*nx*ny*nz and the /// total number of vertices will be (nx + 1)*(ny + 1)*(nz + 1). class UnitCubeMesh : public BoxMesh { public: /// Create a uniform finite element _Mesh_ over the unit cube /// [0,1] x [0,1] x [0,1]. /// /// *Arguments* /// nx (std::size_t) /// Number of cells in :math:`x` direction. /// ny (std::size_t) /// Number of cells in :math:`y` direction. /// nz (std::size_t) /// Number of cells in :math:`z` direction. /// /// *Example* /// .. code-block:: c++ /// /// UnitCubeMesh mesh(32, 32, 32); /// UnitCubeMesh(std::size_t nx, std::size_t ny, std::size_t nz) : BoxMesh(0.0, 0.0, 0.0, 1.0, 1.0, 1.0, nx, ny, nz) {} }; } #endif dolfin-1.3.0/dolfin/generation/CSGPrimitives3D.cpp0000644000175000017500000001211112263014601021626 0ustar johannrjohannr// Copyright (C) 2012 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Benjamin Kehlet, 2012 // // First added: 2012-04-12 // Last changed: 2012-11-12 #include #include #include #include "CSGPrimitives3D.h" using namespace dolfin; //----------------------------------------------------------------------------- // Sphere //----------------------------------------------------------------------------- Sphere::Sphere(Point center, double radius, std::size_t slices) : c(center), r(radius), _slices(slices) { if (r < DOLFIN_EPS) { dolfin_error("CSGPrimitives3D.cpp", "Create sphere", "Sphere with center (%f, %f, %f) has zero or negative radius", c.x(), c.y(), c.z()); } if (slices < 1) { dolfin_error("CSGPrimitives3D.cpp", "Create sphere", "Can't create sphere with zero slices"); } } //----------------------------------------------------------------------------- std::string Sphere::str(bool verbose) const { std::stringstream s; if (verbose) { s << ""; } else s << "Sphere(" << c << ", " << r << ")"; return s.str(); } //----------------------------------------------------------------------------- // Box //----------------------------------------------------------------------------- Box::Box(double x0, double x1, double x2, double y0, double y1, double y2) : _x0(x0), _x1(x1), _x2(x2), _y0(y0), _y1(y1), _y2(y2) { // FIXME: Check validity of coordinates here if (near(x0, y0) || near(x1, y2) || near(x2, y2)) dolfin_error("CSGPrimitives3D.cpp", "Create axis aligned box", "Box with corner (%f, %f, %f) and (%f, %f, %f) degenerated", x0, x1, x2, y0, y1, y2); } //----------------------------------------------------------------------------- std::string Box::str(bool verbose) const { std::stringstream s; if (verbose) { s << ""; } else { s << "Box(" << _x0 << ", " << _x1 << ", " << _x2 << ", " << _y0 << ", " << _y1 << ", " << _y2 << ")"; } return s.str(); } //----------------------------------------------------------------------------- // Cone //----------------------------------------------------------------------------- Cone::Cone(Point top, Point bottom, double top_radius, double bottom_radius, std::size_t slices) : _top(top), _bottom(bottom), _top_radius(top_radius), _bottom_radius(bottom_radius), _slices(slices) { if (near(top_radius, 0.0) && near(bottom_radius, 0.0)) { dolfin_error("CSGPrimitives3D.cpp", "Create cone", "Cone with zero thickness"); } if (top.distance(bottom) < DOLFIN_EPS) { dolfin_error("CSGPrimitives3D.cpp", "Create cone", "Cone with zero length"); } } //----------------------------------------------------------------------------- std::string Cone::str(bool verbose) const { std::stringstream s; if (verbose) { s << ""; } else { s << "Cone( " << _top << ", " << _bottom << ", " << _top_radius << ", " << _bottom_radius << " )"; } return s.str(); } //----------------------------------------------------------------------------- Tetrahedron::Tetrahedron(Point x0, Point x1, Point x2, Point x3) : _x0(x0), _x1(x1), _x2(x2), _x3(x3) {} //----------------------------------------------------------------------------- /// Informal string representation std::string Tetrahedron::str(bool verbose) const { std::stringstream s; if (verbose) { s << ""; } else { s << "Tetrahedron( " << _x0 << ", " << _x1 << ", " << _x2 << ", " << _x3 << ")"; } return s.str(); } //----------------------------------------------------------------------------- Surface3D::Surface3D(std::string filename) : _filename(filename) { // Do nothing } //----------------------------------------------------------------------------- std::string Surface3D::str(bool verbose) const { return std::string("Surface3D from file ") + _filename; } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/generation/CSGCGALDomain2D.cpp0000644000175000017500000002633412263014601021344 0ustar johannrjohannr// Copyright (C) 2013 Benjamin Kehlet // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-06-22 // Last changed: 2013-08-06 #include "CSGCGALDomain2D.h" #ifdef HAS_CGAL #include "CSGPrimitives2D.h" #include "CSGOperators.h" #include #include #include #include #include #include #include #include // Polygon typedefs typedef CGAL::Exact_predicates_exact_constructions_kernel Exact_Kernel; typedef Exact_Kernel::Point_2 Point_2; typedef CGAL::Polygon_2 Polygon_2; typedef Polygon_2::Vertex_const_iterator Vertex_const_iterator; typedef CGAL::Polygon_with_holes_2 Polygon_with_holes_2; typedef Polygon_with_holes_2::Hole_const_iterator Hole_const_iterator; typedef CGAL::Polygon_set_2 Polygon_set_2; // Min enclosing circle typedefs typedef CGAL::Min_circle_2_traits_2 Min_Circle_Traits; typedef CGAL::Min_circle_2 Min_circle; typedef CGAL::Circle_2 CGAL_Circle; using namespace dolfin; struct CSGCGALDomain2DImpl { Polygon_set_2 polygon_set; CSGCGALDomain2DImpl(){} CSGCGALDomain2DImpl(const Polygon_set_2& p) : polygon_set(p) {} }; //----------------------------------------------------------------------------- Polygon_2 make_circle(const Circle* c) { std::vector pts; pts.reserve(c->fragments()); for (std::size_t i = 0; i < c->fragments(); i++) { const double phi = (2*DOLFIN_PI*i) / c->fragments(); const double x = c->center().x() + c->radius()*cos(phi); const double y = c->center().y() + c->radius()*sin(phi); pts.push_back(Point_2(x, y)); } return Polygon_2(pts.begin(), pts.end()); } //----------------------------------------------------------------------------- Polygon_2 make_ellipse(const Ellipse* e) { std::vector pts; for (std::size_t i = 0; i < e->fragments(); i++) { const double phi = (2*DOLFIN_PI*i) / e->fragments(); const double x = e->center().x() + e->a()*cos(phi); const double y = e->center().y() + e->b()*sin(phi); pts.push_back(Point_2(x, y)); } return Polygon_2(pts.begin(), pts.end()); } //----------------------------------------------------------------------------- Polygon_2 make_rectangle(const Rectangle* r) { const double x0 = std::min(r->first_corner().x(), r->second_corner().x()); const double y0 = std::min(r->first_corner().y(), r->second_corner().y()); const double x1 = std::max(r->first_corner().x(), r->second_corner().x()); const double y1 = std::max(r->first_corner().y(), r->second_corner().y()); std::vector pts; pts.push_back(Point_2(x0, y0)); pts.push_back(Point_2(x1, y0)); pts.push_back(Point_2(x1, y1)); pts.push_back(Point_2(x0, y1)); Polygon_2 p(pts.begin(), pts.end()); return p; } //----------------------------------------------------------------------------- Polygon_2 make_polygon(const Polygon* p) { std::vector pts; std::vector::const_iterator v; for (v = p->vertices().begin(); v != p->vertices().end(); ++v) pts.push_back(Point_2(v->x(), v->y())); return Polygon_2(pts.begin(), pts.end()); } //----------------------------------------------------------------------------- CSGCGALDomain2D::CSGCGALDomain2D() : impl(new CSGCGALDomain2DImpl) { } //----------------------------------------------------------------------------- CSGCGALDomain2D::~CSGCGALDomain2D() { } //----------------------------------------------------------------------------- CSGCGALDomain2D::CSGCGALDomain2D(const CSGGeometry *geometry) : impl(new CSGCGALDomain2DImpl) { switch (geometry->getType()) { case CSGGeometry::Union: { const CSGUnion *u = dynamic_cast(geometry); dolfin_assert(u); CSGCGALDomain2D a(u->_g0.get()); CSGCGALDomain2D b(u->_g1.get()); impl.swap(a.impl); impl->polygon_set.join(b.impl->polygon_set); break; } case CSGGeometry::Intersection: { const CSGIntersection* u = dynamic_cast(geometry); dolfin_assert(u); CSGCGALDomain2D a(u->_g0.get()); CSGCGALDomain2D b(u->_g1.get()); impl.swap(a.impl); impl->polygon_set.intersection(b.impl->polygon_set); break; } case CSGGeometry::Difference: { const CSGDifference* u = dynamic_cast(geometry); dolfin_assert(u); CSGCGALDomain2D a(u->_g0.get()); CSGCGALDomain2D b(u->_g1.get()); impl.swap(a.impl); impl->polygon_set.difference(b.impl->polygon_set); break; } case CSGGeometry::Circle: { const Circle* c = dynamic_cast(geometry); dolfin_assert(c); impl->polygon_set.insert(make_circle(c)); break; } case CSGGeometry::Ellipse: { const Ellipse* c = dynamic_cast(geometry); dolfin_assert(c); impl->polygon_set.insert(make_ellipse(c)); break; } case CSGGeometry::Rectangle: { const Rectangle* r = dynamic_cast(geometry); dolfin_assert(r); impl->polygon_set.insert(make_rectangle(r)); break; } case CSGGeometry::Polygon: { const Polygon* p = dynamic_cast(geometry); dolfin_assert(p); impl->polygon_set.insert(make_polygon(p)); break; } default: dolfin_error("CSGCGALMeshGenerator2D.cpp", "converting geometry to cgal polyhedron", "Unhandled primitive type"); } } //----------------------------------------------------------------------------- CSGCGALDomain2D::CSGCGALDomain2D(const CSGCGALDomain2D &other) : impl(new CSGCGALDomain2DImpl(other.impl->polygon_set)) { } //----------------------------------------------------------------------------- CSGCGALDomain2D &CSGCGALDomain2D::operator=(const CSGCGALDomain2D &other) { boost::scoped_ptr tmp(new CSGCGALDomain2DImpl(other.impl->polygon_set)); impl.swap(tmp); return *this; } //----------------------------------------------------------------------------- double CSGCGALDomain2D::compute_boundingcircle_radius() const { std::list polygon_list; impl->polygon_set.polygons_with_holes(std::back_inserter(polygon_list)); std::vector points; for (std::list::const_iterator pit = polygon_list.begin(); pit != polygon_list.end(); ++pit) for (Polygon_2::Vertex_const_iterator vit = pit->outer_boundary().vertices_begin(); vit != pit->outer_boundary().vertices_end(); ++vit) points.push_back(*vit); Min_circle min_circle (points.begin(), points.end(), true); //randomize point order return sqrt(CGAL::to_double(min_circle.circle().squared_radius())); } //----------------------------------------------------------------------------- void CSGCGALDomain2D::join_inplace(const CSGCGALDomain2D& other) { impl->polygon_set.join(other.impl->polygon_set); } //----------------------------------------------------------------------------- void CSGCGALDomain2D::difference_inplace(const CSGCGALDomain2D& other) { impl->polygon_set.difference(other.impl->polygon_set); } //----------------------------------------------------------------------------- void CSGCGALDomain2D::intersect_inplace(const CSGCGALDomain2D &other) { impl->polygon_set.intersection(other.impl->polygon_set); } //----------------------------------------------------------------------------- bool CSGCGALDomain2D::point_in_domain(Point p) const { const Point_2 p_(p.x(), p.y()); return impl->polygon_set.oriented_side(p_) == CGAL::ON_POSITIVE_SIDE; } //----------------------------------------------------------------------------- void CSGCGALDomain2D::get_vertices(std::list >& l, double truncate_threshold) const { l.clear(); truncate_threshold *= truncate_threshold; std::list polygon_list; impl->polygon_set.polygons_with_holes(std::back_inserter(polygon_list)); std::list::const_iterator pit; for (pit = polygon_list.begin(); pit != polygon_list.end(); ++pit) { const Polygon_2 &outer = pit->outer_boundary(); l.push_back(std::vector()); std::vector &v = l.back(); v.reserve(outer.size()); Polygon_2::Vertex_const_iterator prev = outer.vertices_begin(); Polygon_2::Vertex_const_iterator current = prev; ++current; for (; current != outer.vertices_end(); ++current) { if ( (*current - *prev).squared_length() < truncate_threshold) continue; const double x = CGAL::to_double(current->x()); const double y = CGAL::to_double(current->y()); v.push_back(Point(x, y)); prev = current; } current = outer.vertices_begin(); if ( (*current - *prev).squared_length() > truncate_threshold) v.push_back(Point(CGAL::to_double(current->x()), CGAL::to_double(current->y()))); } } //----------------------------------------------------------------------------- void CSGCGALDomain2D::get_holes(std::list >& h, double truncate_threshold) const { h.clear(); std::list polygon_list; impl->polygon_set.polygons_with_holes(std::back_inserter(polygon_list)); std::list::const_iterator pit; for (pit = polygon_list.begin(); pit != polygon_list.end(); ++pit) { Hole_const_iterator hit; for (hit = pit->holes_begin(); hit != pit->holes_end(); ++hit) { h.push_back(std::vector()); std::vector &v = h.back(); v.reserve(hit->size()); Polygon_2::Vertex_const_iterator prev = hit->vertices_begin(); Polygon_2::Vertex_const_iterator current = prev; ++current; for (; current != hit->vertices_end(); ++current) { if ( (*current - *prev).squared_length() < truncate_threshold) continue; const double x = CGAL::to_double(current->x()); const double y = CGAL::to_double(current->y()); v.push_back(Point(x, y)); prev = current; } current = hit->vertices_begin(); if ( (*current - *prev).squared_length() > truncate_threshold) v.push_back(Point(CGAL::to_double(current->x()), CGAL::to_double(current->y()))); } } } #endif dolfin-1.3.0/dolfin/generation/CSGCGALMeshGenerator2D.cpp0000644000175000017500000003545612263014601022705 0ustar johannrjohannr// Copyright (C) 2012 Johannes Ring // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Joachim B Haga 2012 // Modified by Benjamin Kehlet 2012-2013 // // First added: 2012-05-10 // Last changed: 2013-08-06 #include "CSGCGALMeshGenerator2D.h" #include "CSGGeometry.h" #include "CSGOperators.h" #include "CSGPrimitives2D.h" #include "CSGCGALDomain2D.h" #include #include #include #include #include #include #include #include #include #include #include #ifdef HAS_CGAL #include #include #include #include #include #include #include typedef CGAL::Exact_predicates_inexact_constructions_kernel Inexact_Kernel; typedef CGAL::Triangulation_vertex_base_2 Vertex_base; typedef CGAL::Constrained_triangulation_face_base_2 Face_base; template class Enriched_face_base_2 : public Fb { public: typedef Gt Geom_traits; typedef typename Fb::Vertex_handle Vertex_handle; typedef typename Fb::Face_handle Face_handle; template struct Rebind_TDS { typedef typename Fb::template Rebind_TDS::Other Fb2; typedef Enriched_face_base_2 Other; }; protected: int status; bool in_domain; public: Enriched_face_base_2(): Fb(), status(-1) {} Enriched_face_base_2(Vertex_handle v0, Vertex_handle v1, Vertex_handle v2) : Fb(v0,v1,v2), status(-1), in_domain(true) {} Enriched_face_base_2(Vertex_handle v0, Vertex_handle v1, Vertex_handle v2, Face_handle n0, Face_handle n1, Face_handle n2) : Fb(v0,v1,v2,n0,n1,n2), status(-1), in_domain(true) {} inline bool is_in_domain() const //{ return (status%2 == 1); } { return in_domain; } inline void set_in_domain(const bool b) //{ status = (b ? 1 : 0); } { in_domain = b; } inline void set_counter(int i) { status = i; } inline int counter() const { return status; } inline int& counter() { return status; } }; typedef CGAL::Triangulation_vertex_base_2 Vb; typedef CGAL::Triangulation_vertex_base_with_info_2 Vbb; typedef Enriched_face_base_2 Fb; typedef CGAL::Triangulation_data_structure_2 TDS; typedef CGAL::Exact_predicates_tag Itag; typedef CGAL::Constrained_Delaunay_triangulation_2 CDT; typedef CGAL::Delaunay_mesh_size_criteria_2 Mesh_criteria_2; typedef CGAL::Delaunay_mesher_2 CGAL_Mesher_2; typedef CDT::Vertex_handle Vertex_handle; typedef CDT::Face_handle Face_handle; typedef CDT::All_faces_iterator All_faces_iterator; typedef Inexact_Kernel::Point_2 Point_2; using namespace dolfin; //----------------------------------------------------------------------------- CSGCGALMeshGenerator2D::CSGCGALMeshGenerator2D(const CSGGeometry& geometry) : geometry(geometry) { parameters = default_parameters(); //subdomains.push_back(reference_to_no_delete_pointer(geometry)); } //----------------------------------------------------------------------------- CSGCGALMeshGenerator2D::~CSGCGALMeshGenerator2D() {} //----------------------------------------------------------------------------- void explore_subdomain(CDT &ct, CDT::Face_handle start, std::list& other_domains) { std::list queue; queue.push_back(start); while (!queue.empty()) { CDT::Face_handle face = queue.front(); queue.pop_front(); for(int i = 0; i < 3; i++) { Face_handle n = face->neighbor(i); if (ct.is_infinite(n)) continue; const CDT::Edge e(face,i); if (n->counter() == -1) { if (ct.is_constrained(e)) { // Reached a border other_domains.push_back(n); } else { // Set neighbor interface to the same and push to queue n->set_counter(face->counter()); n->set_in_domain(face->is_in_domain()); queue.push_back(n); } } } } } //----------------------------------------------------------------------------- // Set the member in_domain and counter for all faces in the cdt void explore_subdomains(CDT& cdt, const CSGCGALDomain2D& total_domain, const std::vector > &subdomain_geometries) { // Set counter to -1 for all faces for (CDT::Finite_faces_iterator it = cdt.finite_faces_begin(); it != cdt.finite_faces_end(); ++it) { it->set_counter(-1); it->set_in_domain(false); } std::list subdomains; subdomains.push_back(cdt.finite_faces_begin()); //print_face(subdomains.front()); //dolfin_assert(face_in_domain(subdomains.front(), total_domain)); while (!subdomains.empty()) { const CDT::Face_handle f = subdomains.front(); subdomains.pop_front(); if (f->counter() < 0) { // Set default marker (0) f->set_counter(0); const Point_2 p0 = f->vertex(0)->point(); const Point_2 p1 = f->vertex(1)->point(); const Point_2 p2 = f->vertex(2)->point(); Point p( (p0[0] + p1[0] + p2[0]) / 3.0, (p0[1] + p1[1] + p2[1]) / 3.0 ); // Set the in_domain member (is face in the total domain) f->set_in_domain(total_domain.point_in_domain(p)); for (int i = subdomain_geometries.size(); i > 0; --i) { if (subdomain_geometries[i-1].second.point_in_domain(p)) { f->set_counter(subdomain_geometries[i-1].first); break; } } explore_subdomain(cdt, f, subdomains); } } } //----------------------------------------------------------------------------- // Insert edges from polygon as constraints in the triangulation void add_subdomain(CDT& cdt, const CSGCGALDomain2D& cgal_geometry, double threshold) { // Insert the outer boundaries of the domain { std::list > v; cgal_geometry.get_vertices(v, threshold); for (std::list >::const_iterator pit = v.begin(); pit != v.end(); ++pit) { std::vector::const_iterator it = pit->begin(); Vertex_handle first = cdt.insert(Point_2(it->x(), it->y())); Vertex_handle prev = first; ++it; for(; it != pit->end(); ++it) { Vertex_handle current = cdt.insert(Point_2(it->x(), it->y())); cdt.insert_constraint(prev, current); prev = current; } cdt.insert_constraint(first, prev); } } // Insert holes { std::list > holes; cgal_geometry.get_holes(holes, threshold); for (std::list >::const_iterator hit = holes.begin(); hit != holes.end(); ++hit) { std::vector::const_iterator pit = hit->begin(); Vertex_handle first = cdt.insert(Point_2(pit->x(), pit->y())); Vertex_handle prev = first; ++pit; for(; pit != hit->end(); ++pit) { Vertex_handle current = cdt.insert(Point_2(pit->x(), pit->y())); cdt.insert_constraint(prev, current); prev = current; } cdt.insert_constraint(first, prev); } } } //----------------------------------------------------------------------------- double shortest_constrained_edge(const CDT &cdt) { double min_length = std::numeric_limits::max(); for (CDT::Finite_edges_iterator it = cdt.finite_edges_begin(); it != cdt.finite_edges_end(); it++) { if (!cdt.is_constrained(*it)) continue; // An edge is an std::pair // see CGAL/Triangulation_data_structure_2.h CDT::Face_handle f = it->first; const int i = it->second; CDT::Point p1 = f->vertex( (i+1)%3 )->point(); CDT::Point p2 = f->vertex( (i+2)%3 )->point(); min_length = std::min(CGAL::to_double((p1-p2).squared_length()), min_length); } return min_length; } //----------------------------------------------------------------------------- void CSGCGALMeshGenerator2D::generate(Mesh& mesh) { // Create empty CGAL triangulation CDT cdt; // Convert the CSG geometry to a CGAL Polygon log(TRACE, "Converting geometry to CGAL polygon"); CSGCGALDomain2D total_domain(&geometry); add_subdomain(cdt, total_domain, parameters["edge_minimum"]); // Empty polygon, will be populated when traversing the subdomains CSGCGALDomain2D overlaying; std::vector > subdomain_geometries; // Add the subdomains to the CDT. Traverse in reverse order to get the latest // added subdomain on top std::list > >::const_reverse_iterator it; if (!geometry.subdomains.empty()) log(TRACE, "Processing subdomains"); for (it = geometry.subdomains.rbegin(); it != geometry.subdomains.rend(); ++it) { const std::size_t current_index = it->first; boost::shared_ptr current_subdomain = it->second; CSGCGALDomain2D cgal_geometry(current_subdomain.get()); cgal_geometry.difference_inplace(overlaying); subdomain_geometries.push_back(std::make_pair(current_index, cgal_geometry)); add_subdomain(cdt, cgal_geometry, parameters["edge_minimum"]); overlaying.join_inplace(cgal_geometry); } explore_subdomains(cdt, total_domain, subdomain_geometries); log(TRACE, "Refining mesh"); // Create mesher CGAL_Mesher_2 mesher(cdt); // Add seeds for all faces in the domain std::list list_of_seeds; for(CDT::Finite_faces_iterator fit = cdt.finite_faces_begin(); fit != cdt.finite_faces_end(); ++fit) { if (fit->is_in_domain()) { // Calculate center of triangle and add to list of seeds Point_2 p0 = fit->vertex(0)->point(); Point_2 p1 = fit->vertex(1)->point(); Point_2 p2 = fit->vertex(2)->point(); const double x = (p0[0] + p1[0] + p2[0]) / 3; const double y = (p0[1] + p1[1] + p2[1]) / 3; list_of_seeds.push_back(Point_2(x, y)); } } mesher.set_seeds(list_of_seeds.begin(), list_of_seeds.end(), true); // Set shape and size criteria const int mesh_resolution = parameters["mesh_resolution"]; if (mesh_resolution > 0) { const double min_radius = total_domain.compute_boundingcircle_radius(); const double cell_size = 2.0*min_radius/mesh_resolution; Mesh_criteria_2 criteria(parameters["triangle_shape_bound"], cell_size); mesher.set_criteria(criteria); } else { // Set shape and size criteria Mesh_criteria_2 criteria(parameters["triangle_shape_bound"], parameters["cell_size"]); mesher.set_criteria(criteria); } // Refine CGAL mesh/triangulation mesher.refine_mesh(); // Make sure triangulation is valid dolfin_assert(cdt.is_valid()); // Mark the subdomains explore_subdomains(cdt, total_domain, subdomain_geometries); // Clear mesh mesh.clear(); const std::size_t gdim = cdt.finite_vertices_begin()->point().dimension(); const std::size_t tdim = cdt.dimension(); const std::size_t num_vertices = cdt.number_of_vertices(); // Count valid cells std::size_t num_cells = 0; CDT::Finite_faces_iterator cgal_cell; for (cgal_cell = cdt.finite_faces_begin(); cgal_cell != cdt.finite_faces_end(); ++cgal_cell) { // Add cell if it is in the domain if (cgal_cell->is_in_domain()) { num_cells++; } } // Create a MeshEditor and open dolfin::MeshEditor mesh_editor; mesh_editor.open(mesh, tdim, gdim); mesh_editor.init_vertices(num_vertices); mesh_editor.init_cells(num_cells); // Add vertices to mesh std::size_t vertex_index = 0; CDT::Finite_vertices_iterator cgal_vertex; for (cgal_vertex = cdt.finite_vertices_begin(); cgal_vertex != cdt.finite_vertices_end(); ++cgal_vertex) { // Get vertex coordinates and add vertex to the mesh Point p; p[0] = cgal_vertex->point()[0]; p[1] = cgal_vertex->point()[1]; // Add mesh vertex mesh_editor.add_vertex(vertex_index, p); // Attach index to vertex and increment cgal_vertex->info() = vertex_index++; } dolfin_assert(vertex_index == num_vertices); // Add cells to mesh and build domain marker mesh function MeshDomains &domain_markers = mesh.domains(); std::size_t cell_index = 0; const bool mark_cells = geometry.has_subdomains(); for (cgal_cell = cdt.finite_faces_begin(); cgal_cell != cdt.finite_faces_end(); ++cgal_cell) { // Add cell if it is in the domain if (cgal_cell->is_in_domain()) { mesh_editor.add_cell(cell_index, cgal_cell->vertex(0)->info(), cgal_cell->vertex(1)->info(), cgal_cell->vertex(2)->info()); if (mark_cells) domain_markers.set_marker(std::make_pair(cell_index, cgal_cell->counter()), 2); ++cell_index; } } dolfin_assert(cell_index == num_cells); // Close mesh editor mesh_editor.close(); } #else namespace dolfin { CSGCGALMeshGenerator2D::CSGCGALMeshGenerator2D(const CSGGeometry& geometry) : geometry(geometry) { dolfin_error("CSGCGALMeshGenerator2D.cpp", "Create mesh generator", "Dolfin must be compiled with CGAL to use this feature."); } //----------------------------------------------------------------------------- CSGCGALMeshGenerator2D::~CSGCGALMeshGenerator2D() { // Do nothing } //----------------------------------------------------------------------------- void CSGCGALMeshGenerator2D::generate(Mesh& mesh) { // Do nothing } } #endif //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/generation/PolygonalMeshGenerator.cpp0000644000175000017500000000764512263014601023417 0ustar johannrjohannr// Copyright (C) 2012 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2012-02-02 // Last changed: #ifdef HAS_CGAL #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "CGALMeshBuilder.h" #include "PolygonalMeshGenerator.h" typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Triangulation_vertex_base_2 Vbase; typedef CGAL::Triangulation_vertex_base_with_info_2 Vb; typedef CGAL::Delaunay_mesh_face_base_2 Fb; typedef CGAL::Triangulation_data_structure_2 Tds; typedef CGAL::Constrained_Delaunay_triangulation_2 CDT; typedef CGAL::Delaunay_mesh_size_criteria_2 Criteria; typedef CGAL::Delaunay_mesher_2 CGAL_Mesher; typedef CDT::Vertex_handle Vertex_handle; typedef CDT::Point CGAL_Point; typedef CGAL::Polygon_2 Polygon_2; using namespace dolfin; //----------------------------------------------------------------------------- void PolygonalMeshGenerator::generate(Mesh& mesh, const std::vector& polygon_vertices, double cell_size) { // Generate CGAL mesh on root process if (MPI::process_number() == 0) { // Build list of CGAL points std::vector cgal_points; std::vector::const_iterator p; for (p = polygon_vertices.begin(); p != polygon_vertices.end(); ++p) cgal_points.push_back(CGAL_Point(p->x(), p->y())); // Create polygon Polygon_2 polygon(cgal_points.begin(), cgal_points.end()); // Generate mesh::vet generate(mesh, polygon, cell_size); } // Build distributed mesh MeshPartitioning::build_distributed_mesh(mesh); } //----------------------------------------------------------------------------- template void PolygonalMeshGenerator::generate(Mesh& mesh, const T& polygon, double cell_size) { // Create empty CGAL triangulation CDT cdt; // Add polygon edges as triangulation constraints typename Polygon_2::Edge_const_iterator edge; for (edge = polygon.edges_begin(); edge != polygon.edges_end(); ++edge) cdt.insert_constraint(edge->point(0), edge->point(1)); // Create mesher CGAL_Mesher mesher(cdt); // Refine CGAL mesh/triangulation mesher.set_criteria(Criteria(0.125, cell_size)); mesher.refine_mesh(); // Build DOLFIN mesh from CGAL triangulation CGALMeshBuilder::build(mesh, cdt); } //----------------------------------------------------------------------------- template bool PolygonalMeshGenerator::is_convex(const std::vector& vertices) { // Create polygon and test for convexity Polygon_2 polygon(vertices.begin(), vertices.end()); return polygon.is_convex(); } //----------------------------------------------------------------------------- #endif dolfin-1.3.0/dolfin/generation/PolyhedralMeshGenerator.cpp0000644000175000017500000002661612263014601023555 0ustar johannrjohannr// Copyright (C) 2012 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2012-02-03 // Last changed: 2012-02-16 #ifdef HAS_CGAL #include #include #include #include #include #include #include #include #include #include #include #if CGAL_VERSION_NR >= 1040301000 #include #endif // The below two files are from the CGAL demos. Path can be changed // once they are included with the CGAL code. #include "cgal_triangulate_polyhedron.h" #include "compute_normal.h" #include #include #include #include #include #include #include #include "CGALMeshBuilder.h" #include "PolyhedralMeshGenerator.h" // CGAL kernel typedefs typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Robust_weighted_circumcenter_filtered_traits_3 Geom_traits; // CGAL domain typedefs typedef CGAL::Polyhedral_mesh_domain_with_features_3 Mesh_domain; // CGAL 3D triangulation vertex typedefs typedef CGAL::Triangulation_vertex_base_3 Tvb3_base; typedef CGAL::Triangulation_vertex_base_with_info_3 Tvb3; typedef CGAL::Mesh_vertex_base_3 Vertex_base; // CGAL 3D triangulation cell typedefs // CGAL 3D triangulation cell typedefs #if CGAL_VERSION_NR >= 1040301000 typedef CGAL::Compact_mesh_cell_base_3 Cb; typedef CGAL::Triangulation_cell_base_with_info_3 Cell_base; #else typedef CGAL::Triangulation_cell_base_3 Tcb3_base; typedef CGAL::Triangulation_cell_base_with_info_3 Tcb3; typedef CGAL::Mesh_cell_base_3 Cell_base; #endif // CGAL 3D triangulation typedefs typedef CGAL::Triangulation_data_structure_3 Tds_mesh; typedef CGAL::Regular_triangulation_3 Tr; // CGAL 3D mesh typedef typedef CGAL::Mesh_complex_3_in_triangulation_3< Tr, Mesh_domain::Corner_index, Mesh_domain::Curve_segment_index> C3t3; // Mesh criteria typedef CGAL::Mesh_criteria_3 Mesh_criteria; // Typedefs for building CGAL polyhedron from list of facets typedef CGAL::Mesh_polyhedron_3::Type Polyhedron; typedef Polyhedron::Facet_iterator Facet_iterator; typedef Polyhedron::Halfedge_around_facet_circulator Halfedge_facet_circulator; typedef Polyhedron::HalfedgeDS HalfedgeDS; using namespace dolfin; //----------------------------------------------------------------------------- template class BuildSurface : public CGAL::Modifier_base { // This class is used to build a CGAL polyhedron from a list of // triangular facets. It requires defintion of the member function // // void operator()(HDS& hds); public: BuildSurface(const std::vector& vertices, const std::vector >& facets) : _vertices(vertices), _facets(facets) {} void operator()(HDS& hds) { // Check that hds is a valid polyhedral surface CGAL::Polyhedron_incremental_builder_3 B(hds, true); // Initialise polyhedron building B.begin_surface(_vertices.size(), _facets.size(), 0); typedef typename HDS::Vertex CVertex; typedef typename CVertex::Point CPoint; // Add vertices std::vector::const_iterator p; for (p = _vertices.begin(); p != _vertices.end(); ++p) B.add_vertex(CPoint(p->x(), p->y(), p->z())); // Add facets std::vector >::const_iterator f; for (f = _facets.begin(); f != _facets.end(); ++f) { // Add facet vertices B.begin_facet(); for (std::size_t i = 0; i < f->size(); ++i) B.add_vertex_to_facet((*f)[i]); B.end_facet(); } // Finalise B.end_surface(); } private: const std::vector& _vertices; const std::vector >& _facets; }; //----------------------------------------------------------------------------- void PolyhedralMeshGenerator::generate(Mesh& mesh, const std::string off_file, double cell_size, bool detect_sharp_features) { // Generate CGAL mesh on root process if (MPI::process_number() == 0) { // Create empty CGAL polyhedron Polyhedron p; // Read polyhedron from file std::ifstream p_file(off_file.c_str()); if (!p_file) { dolfin_error("PolyhedralMeshGenerator.cpp", "open .off file to read 3D geometry", "Failed to open file"); } p_file >> p; // Generate mesh cgal_generate(mesh, p, cell_size, detect_sharp_features); } // Build distributed mesh MeshPartitioning::build_distributed_mesh(mesh); } //----------------------------------------------------------------------------- void PolyhedralMeshGenerator::generate(Mesh& mesh, const std::vector& vertices, const std::vector >& facets, double cell_size, bool detect_sharp_features) { // Generate CGAL mesh on root process if (MPI::process_number() == 0) { // Create empty CGAL polyhedron Polyhedron p; // Build CGAL polyhedron BuildSurface poly_builder(vertices, facets); p.delegate(poly_builder); // Generate mesh cgal_generate(mesh, p, cell_size, detect_sharp_features); } // Build distributed mesh MeshPartitioning::build_distributed_mesh(mesh); } //----------------------------------------------------------------------------- void PolyhedralMeshGenerator::generate_surface_mesh(Mesh& mesh, const std::vector& vertices, const std::vector >& facets, double cell_size, bool detect_sharp_features) { // Generate CGAL mesh on root process if (MPI::process_number() == 0) { // Create empty CGAL polyhedron Polyhedron p; // Build CGAL polyhedron BuildSurface poly_builder(vertices, facets); p.delegate(poly_builder); // Generate surface mesh cgal_generate_surface_mesh(mesh, p, cell_size, detect_sharp_features); } // Build distributed mesh MeshPartitioning::build_distributed_mesh(mesh); } //----------------------------------------------------------------------------- void PolyhedralMeshGenerator::generate_surface_mesh(Mesh& mesh, const std::string off_file, double cell_size, bool detect_sharp_features) { if (MPI::num_processes() == 0) { // Create empty CGAL polyhedron Polyhedron p; // Read polyhedron from file std::ifstream p_file(off_file.c_str()); if (!p_file) { dolfin_error("PolyhedralMeshGenerator.cpp", "open .off file to read 3D geometry", "Failed to open file"); } p_file >> p; // Generate mesh cgal_generate_surface_mesh(mesh, p, cell_size, detect_sharp_features); } // Build distributed mesh MeshPartitioning::build_distributed_mesh(mesh); } //----------------------------------------------------------------------------- template void PolyhedralMeshGenerator::cgal_generate(Mesh& mesh, T& p, double cell_size, bool detect_sharp_features) { // Check if any facets are not triangular and triangulate if // necessary. The CGAL mesh generation only supports polyhedra with // triangular surface facets. typename Polyhedron::Facet_iterator facet; for (facet = p.facets_begin(); facet != p.facets_end(); ++facet) { // Check if there is a non-triangular facet if (!facet->is_triangle()) { CGAL::triangulate_polyhedron(p); break; } } // Create domain from polyhedron Mesh_domain domain(p); // Get sharp features if (detect_sharp_features) domain.detect_features(); const Mesh_criteria criteria(CGAL::parameters::facet_angle = 25, CGAL::parameters::facet_size = cell_size, CGAL::parameters::cell_radius_edge_ratio = 3.0, CGAL::parameters::edge_size = 0.6*cell_size, CGAL::parameters::cell_size = cell_size); // Generate CGAL mesh C3t3 c3t3 = CGAL::make_mesh_3(domain, criteria); // Build DOLFIN mesh from CGAL mesh/triangulation CGALMeshBuilder::build_from_mesh(mesh, c3t3); } //----------------------------------------------------------------------------- template void PolyhedralMeshGenerator::cgal_generate_surface_mesh(Mesh& mesh, T& p, double cell_size, bool detect_sharp_features) { // Check if any facets are not triangular and triangulate if // necessary. The CGAL mesh generation only supports polyhedra with // triangular surface facets. typename Polyhedron::Facet_iterator facet; for (facet = p.facets_begin(); facet != p.facets_end(); ++facet) { // Check if there is a non-triangular facet if (!facet->is_triangle()) { CGAL::triangulate_polyhedron(p); continue; } } // Create domain from polyhedron Mesh_domain domain(p); // Get sharp features if (detect_sharp_features) domain.detect_features(); // Mesh criteria (produces no interior vertices) const Mesh_criteria criteria(CGAL::parameters::facet_angle = 25, CGAL::parameters::facet_size = cell_size, CGAL::parameters::cell_radius_edge = 0, CGAL::parameters::edge_size = 0.5*cell_size, CGAL::parameters::cell_size=0); // Generate CGAL mesh C3t3 c3t3 = CGAL::make_mesh_3(domain, criteria); // Build surface DOLFIN mesh from CGAL 3D mesh/triangulation CGALMeshBuilder::build_surface_mesh_c3t3(mesh, c3t3); } //----------------------------------------------------------------------------- #endif dolfin-1.3.0/dolfin/generation/UnitIntervalMesh.h0000644000175000017500000000254512263014601021667 0ustar johannrjohannr// Copyright (C) 2007 Kristian B. Oelgaard // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Anders Logg, 2010. // Modified by Benjamin Kehlet 2012 // // First added: 2007-11-23 // Last changed: 2012-11-09 #ifndef __UNIT_INTERVAL_MESH_H #define __UNIT_INTERVAL_MESH_H #include #include "IntervalMesh.h" namespace dolfin { /// A mesh of the unit interval (0, 1) with a given number of cells /// (nx) in the axial direction. The total number of intervals will /// be nx and the total number of vertices will be (nx + 1). class UnitIntervalMesh : public IntervalMesh { public: /// Create mesh of unit interval UnitIntervalMesh(std::size_t nx=1) : IntervalMesh(nx, 0.0, 1.0) {} }; } #endif dolfin-1.3.0/dolfin/multistage/0000755000175000017500000000000012263014601016272 5ustar johannrjohannrdolfin-1.3.0/dolfin/multistage/RKSolver.h0000644000175000017500000000332012263014601020150 0ustar johannrjohannr// Copyright (C) 2013 Johan Hake // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-02-15 // Last changed: 2013-04-24 #ifndef __RKSOLVER_H #define __RKSOLVER_H #include #include #include #include namespace dolfin { /// This class is a time integrator for general Runge Kutta problems // Forward declarations class MultiStageScheme; class RKSolver { public: /// Constructor /// FIXME: Include version where one can pass a Solver and/or Parameters RKSolver(boost::shared_ptr scheme); /// Step solver with time step dt void step(double dt); /// Step solver an interval using dt as time step void step_interval(double t0, double t1, double dt); /// Return the MultiStageScheme boost::shared_ptr scheme() const {return _scheme;} private: // The MultiStageScheme boost::shared_ptr _scheme; // Assembler for explicit stages Assembler _assembler; }; } #endif dolfin-1.3.0/dolfin/multistage/MultiStageScheme.cpp0000644000175000017500000002001412263014601022176 0ustar johannrjohannr// Copyright (C) 2013 Johan Hake // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-02-15 // Last changed: 2013-04-02 #include #include #include #include #include "MultiStageScheme.h" using namespace dolfin; //----------------------------------------------------------------------------- MultiStageScheme::MultiStageScheme(std::vector > > stage_forms, const FunctionAXPY& last_stage, std::vector > stage_solutions, boost::shared_ptr u, boost::shared_ptr t, boost::shared_ptr dt, std::vector dt_stage_offset, unsigned int order, const std::string name, const std::string human_form) : Variable(name, ""), _stage_forms(stage_forms), _last_stage(last_stage), _stage_solutions(stage_solutions), _u(u), _t(t), _dt(dt), _dt_stage_offset(dt_stage_offset), _order(order), _implicit(false), _human_form(human_form) { _check_arguments(); } //----------------------------------------------------------------------------- MultiStageScheme::MultiStageScheme(std::vector > > stage_forms, const FunctionAXPY& last_stage, std::vector > stage_solutions, boost::shared_ptr u, boost::shared_ptr t, boost::shared_ptr dt, std::vector dt_stage_offset, unsigned int order, const std::string name, const std::string human_form, std::vector bcs) : Variable(name, ""), _stage_forms(stage_forms), _last_stage(last_stage), _stage_solutions(stage_solutions), _u(u), _t(t), _dt(dt), _dt_stage_offset(dt_stage_offset), _order(order), _implicit(false), _human_form(human_form), _bcs(bcs) { _check_arguments(); } //----------------------------------------------------------------------------- std::vector > >& MultiStageScheme::stage_forms() { return _stage_forms; } //----------------------------------------------------------------------------- FunctionAXPY& MultiStageScheme::last_stage() { return _last_stage; } //----------------------------------------------------------------------------- std::vector >& MultiStageScheme::stage_solutions() { return _stage_solutions; } //----------------------------------------------------------------------------- boost::shared_ptr MultiStageScheme::solution() { return _u; } //----------------------------------------------------------------------------- boost::shared_ptr MultiStageScheme::solution() const { return _u; } //----------------------------------------------------------------------------- boost::shared_ptr MultiStageScheme::t() { return _t; } //----------------------------------------------------------------------------- boost::shared_ptr MultiStageScheme::dt() { return _dt; } //----------------------------------------------------------------------------- const std::vector& MultiStageScheme::dt_stage_offset() const { return _dt_stage_offset; } //----------------------------------------------------------------------------- unsigned int MultiStageScheme::order() const { return _order; } //----------------------------------------------------------------------------- std::vector MultiStageScheme::bcs() const { return _bcs; } //----------------------------------------------------------------------------- bool MultiStageScheme::implicit(unsigned int stage) const { dolfin_assert(stage < _stage_forms.size()); return _stage_forms[stage].size() == 2; } //----------------------------------------------------------------------------- bool MultiStageScheme::implicit() const { return _implicit; } //----------------------------------------------------------------------------- std::string MultiStageScheme::str(bool verbose) const { if (!verbose) return name(); std::stringstream s; s << name() << std::endl << _human_form; return s.str(); } //----------------------------------------------------------------------------- void MultiStageScheme::_check_arguments() { // Check number of stage sollutions is same as number of stage forms if (_stage_solutions.size()!=_stage_forms.size()) { dolfin_error("MultiStageScheme.cpp", "constructing MultiStageScheme", "Expecting the number of stage solutions to be the sames as "\ "number of stage forms"); } // Check solution is in the same space as the last stage solution if (!_u->in(*_stage_solutions[_stage_solutions.size()-1]->function_space())) { dolfin_error("MultiStageScheme.cpp", "constructing MultiStageScheme", "Expecting all solutions to be in the same FunctionSpace"); } // Check number of passed stage forms for (unsigned int i=0; i < _stage_forms.size();i++) { // Check solution is in the same space as the stage solution if (!_u->in(*_stage_solutions[i]->function_space())) { dolfin_error("MultiStageScheme.cpp", "constructing MultiStageScheme", "Expecting all solutions to be in the same FunctionSpace"); } // Check we have correct number of forms if (_stage_forms[i].size()==0 || _stage_forms[i].size()>2) { dolfin_error("MultiStageScheme.cpp", "constructing MultiStageScheme", "Expecting stage_forms to only include vectors of size 1 or 2"); } // Check if Scheme is implicit if (_stage_forms[i].size()==2) { _implicit = true; // First form should be the linear (in testfunction) form if (_stage_forms[i][0]->rank() != 1) { dolfin_error("MultiStageScheme.cpp", "constructing MultiStageScheme", "Expecting the right-hand side of stage form %d to be a "\ "linear form (not rank %d)", i, _stage_forms[i][0]->rank()); } // Second form should be the bilinear form if (_stage_forms[i][1]->rank() != 2) { dolfin_error("MultiStageScheme.cpp", "constructing MultiStageScheme", "Expecting the left-hand side of stage form %d to be a "\ "linear form (not rank %d)", i, _stage_forms[i][1]->rank()); } // Check that function space of solution variable matches trial space if (!_stage_solutions[i]->in(*_stage_forms[i][1]->function_space(1))) { dolfin_error("MultiStageScheme.cpp", "constructing MultiStageScheme", "Expecting the stage solution %d to be a member of the " "trial space of stage form %d", i, i); } } else { // Check explicit stage form if (_stage_forms[i][0]->rank() != 1) { dolfin_error("MultiStageScheme.cpp", "constructing MultiStageScheme", "Expecting stage form %d to be a linear form (not "\ "rank %d)", i, _stage_forms[i][0]->rank()); } // Check that function space of solution variable matches trial space if (!_stage_solutions[i]->in(*_stage_forms[i][0]->function_space(0))) { dolfin_error("MultiStageScheme.cpp", "constructing MultiStageScheme", "Expecting the stage solution %d to be a member of the " "test space of stage form %d", i, i); } } } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/multistage/MultiStageScheme.h0000644000175000017500000001052012263014601021644 0ustar johannrjohannr// Copyright (C) 2013 Johan Hake // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-02-15 // Last changed: 2013-04-02 #ifndef __BUTCHERSCHEME_H #define __BUTCHERSCHEME_H #include #include #include #include #include #include namespace dolfin { /// This class is a place holder for forms and solutions for a multi stage /// Butcher tableau based method // Forward declarations class Form; class Function; class DirichletBC; class Constant; class MultiStageScheme : public Variable { public: /// Constructor /// FIXME: This constructor is a MESS. Needs clean up... MultiStageScheme(std::vector > > stage_forms, const FunctionAXPY& last_stage, std::vector > stage_solutions, boost::shared_ptr u, boost::shared_ptr t, boost::shared_ptr dt, std::vector dt_stage_offset, unsigned int order, const std::string name, const std::string human_form); /// Constructor with Boundary conditions MultiStageScheme(std::vector > > stage_forms, const FunctionAXPY& last_stage, std::vector > stage_solutions, boost::shared_ptr u, boost::shared_ptr t, boost::shared_ptr dt, std::vector dt_stage_offset, unsigned int order, const std::string name, const std::string human_form, std::vector bcs); /// Return the stages std::vector > >& stage_forms(); /// Return the last stage FunctionAXPY& last_stage(); /// Return stage solutions std::vector >& stage_solutions(); /// Return solution variable boost::shared_ptr solution(); /// Return solution variable (const version) boost::shared_ptr solution() const; /// Return local time boost::shared_ptr t(); /// Return local timestep boost::shared_ptr dt(); /// Return local timestep const std::vector& dt_stage_offset() const; /// Return the order of the scheme unsigned int order() const; /// Return boundary conditions std::vector bcs() const; /// Return true if stage is implicit bool implicit(unsigned int stage) const; /// Return true if the whole scheme is implicit bool implicit() const; /// Return informal string representation (pretty-print) virtual std::string str(bool verbose) const; private: // Check sanity of arguments void _check_arguments(); // Vector of forms for the different RK stages std::vector > > _stage_forms; // A linear combination of solutions for the last stage FunctionAXPY _last_stage; // Solutions for the different stages std::vector > _stage_solutions; // The solution boost::shared_ptr _u; // The local time boost::shared_ptr _t; // The local time step boost::shared_ptr _dt; // The time step offset. (c from the ButcherTableau) std::vector _dt_stage_offset; // The order of the scheme unsigned int _order; // Is the scheme implicit bool _implicit; // A pretty print representation of the form std::string _human_form; // The boundary conditions std::vector _bcs; }; } #endif dolfin-1.3.0/dolfin/multistage/RKSolver.cpp0000644000175000017500000000774512263014601020522 0ustar johannrjohannr// Copyright (C) 2013 Johan Hake // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-02-15 // Last changed: 2013-04-02 #include #include #include #include #include #include #include #include #include "MultiStageScheme.h" #include "RKSolver.h" using namespace dolfin; //----------------------------------------------------------------------------- RKSolver::RKSolver(boost::shared_ptr scheme) : _scheme(scheme) {} //----------------------------------------------------------------------------- void RKSolver::step(double dt) { dolfin_assert(dt > 0.0); // Update time constant of scheme *_scheme->dt() = dt; // Time at start of timestep const double t0 = *_scheme->t(); // Get scheme data std::vector > >& stage_forms = \ _scheme->stage_forms(); std::vector >& stage_solutions = _scheme->stage_solutions(); std::vector bcs = _scheme->bcs(); // Iterate over stage forms for (unsigned int stage=0; stage < stage_forms.size(); stage++) { // Update time *_scheme->t() = t0 + dt*_scheme->dt_stage_offset()[stage]; // Check if we have an explicit stage (only 1 form) if (stage_forms[stage].size()==1) { // Just do an assemble _assembler.assemble(*stage_solutions[stage]->vector(), *stage_forms[stage][0]); // Apply boundary conditions // FIXME: stage solutions are time derivatives and we cannot apply the // bcs directly on them for (unsigned int j = 0; j < bcs.size(); j++) { dolfin_assert(bcs[j]); bcs[j]->apply(*stage_solutions[stage]->vector()); } } // or an implicit stage (2 forms) else { // FIXME: applying the bcs on stage solutions are probably wrong... // FIXME: Include solver parameters // Do a nonlinear solve solve(*stage_forms[stage][0] == 0, *stage_solutions[stage], bcs, *stage_forms[stage][1]); } } // Do the last stage FunctionAXPY last_stage = _scheme->last_stage()*dt; // Update solution with last stage GenericVector& solution_vector = *_scheme->solution()->vector(); // Update with stage solutions for (std::vector >::const_iterator \ it=last_stage.pairs().begin(); it!=last_stage.pairs().end(); it++) { solution_vector.axpy(it->first, *(it->second->vector())); } // Update time *_scheme->t() = t0 + dt; } //----------------------------------------------------------------------------- void RKSolver::step_interval(double t0, double t1, double dt) { if (dt<=0.0) { dolfin_error("RKSolver.cpp", "stepping RKSolver", "Expecting a positive dt"); } if (t0>=t1) { dolfin_error("RKSolver.cpp", "stepping RKSolver", "Expecting t0 to be smaller than t1"); } // Set start time *_scheme->t() = t0; double t = t0; double next_dt = std::min(t1-t, dt); // Step interval while (t + next_dt <= t1) { if (next_dt < DOLFIN_EPS) break; step(next_dt); t = *_scheme->t(); next_dt = std::min(t1-t, dt); } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/multistage/PointIntegralSolver.h0000644000175000017500000000611412263014601022417 0ustar johannrjohannr// Copyright (C) 2013 Johan Hake // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-02-15 // Last changed: 2013-05-13 #ifndef __POINTINTEGRALSOLVER_H #define __POINTINTEGRALSOLVER_H #include #include #include #include #include #include namespace dolfin { /// This class is a time integrator for general Runge Kutta forms, /// which only includes Point integrals with piecewise linear test /// functions. Such problems are disconnected at the vertices and /// can therefore be solved locally. // Forward declarations class MultiStageScheme; class UFC; class PointIntegralSolver : public Variable { public: /// Constructor /// FIXME: Include version where one can pass a Solver and/or Parameters PointIntegralSolver(boost::shared_ptr scheme); /// Step solver with time step dt void step(double dt); /// Step solver an interval using dt as time step void step_interval(double t0, double t1, double dt); /// Return the MultiStageScheme boost::shared_ptr scheme() const { return _scheme; } /// Default parameter values static Parameters default_parameters() { Parameters p("point_integral_solver"); // Get default parameters from NewtonSolver p.add(NewtonSolver::default_parameters()); p("newton_solver").add("reuse_jacobian", true); p("newton_solver").add("iterations_to_retabulate_jacobian", 4); return p; } private: // Check the forms making sure they only include piecewise linear // test functions void _check_forms(); // Build map between vertices, cells and the correspondning local vertex // and initialize UFC data for each form void _init(); // The MultiStageScheme boost::shared_ptr _scheme; // Vertex map between vertices, cells and corresponding local vertex std::vector > _vertex_map; // UFC objects, one for each form std::vector > > _ufcs; // Solution coefficient index in form std::vector > _coefficient_index; // Flag for retabulation of J bool _retabulate_J; // Jacobian and LU factorized Jacobian matrices Eigen::MatrixXd _J; Eigen::PartialPivLU _J_LU; }; } #endif dolfin-1.3.0/dolfin/multistage/PointIntegralSolver.cpp0000644000175000017500000004434212263014601022757 0ustar johannrjohannr// Copyright (C) 2013 Johan Hake // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-02-15 // Last changed: 2013-05-13 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "MultiStageScheme.h" #include "PointIntegralSolver.h" using namespace dolfin; //----------------------------------------------------------------------------- PointIntegralSolver::PointIntegralSolver(boost::shared_ptr scheme) : Variable("PointIntegralSolver", "unamed"), _scheme(scheme), _vertex_map(), _ufcs(), _coefficient_index(), _retabulate_J(true) { // Set parameters parameters = default_parameters(); _check_forms(); _init(); } //----------------------------------------------------------------------------- void PointIntegralSolver::step(double dt) { dolfin_assert(dt > 0.0); Timer t_step_stage("Step: set the stage"); // Update time constant of scheme *_scheme->dt() = dt; // Time at start of timestep const double t0 = *_scheme->t(); // Extract mesh const Mesh& mesh = _scheme->stage_forms()[0][0]->mesh(); // Collect ref to dof map only need one as we require same trial and // test space for all forms const GenericDofMap& dofmap = *_scheme->stage_forms()[0][0]->function_space(0)->dofmap(); // Get size of system (num dofs per vertex) const unsigned int N = dofmap.num_entity_dofs(0); const unsigned int dof_offset = mesh.type().num_entities(0); const unsigned int num_stages = _scheme->stage_forms().size(); // Local solution vector at start of time step Eigen::VectorXd u0(N); // Local stage solutions std::vector local_stage_solutions(_scheme->stage_solutions().size()); for (unsigned int stage = 0; stage < num_stages; stage++) local_stage_solutions[stage].resize(N); // Update off-process coefficients for (unsigned int i = 0; i < num_stages; i++) { for (unsigned int j = 0; j < _scheme->stage_forms()[i].size(); j++) { const std::vector > coefficients = _scheme->stage_forms()[i][j]->coefficients(); for (unsigned int k = 0; k < coefficients.size(); ++k) coefficients[k]->update(); } } // Local to local dofs to be used in tabulate entity dofs std::vector local_to_local_dofs(N); // Local to global dofs used when solution is fanned out to global vector std::vector local_to_global_dofs(N); // Iterate over vertices //Progress p("Solving local point integral problems", mesh.num_vertices()); t_step_stage.stop(); ufc::cell ufc_cell; std::vector vertex_coordinates; for (std::size_t vert_ind = 0; vert_ind < mesh.num_vertices(); ++vert_ind) { Timer t_vert("Step: update vert"); // Cell containing vertex const Cell cell(mesh, _vertex_map[vert_ind].first); cell.get_vertex_coordinates(vertex_coordinates); cell.get_cell_data(ufc_cell); // Get all dofs for cell // FIXME: Shold we include logics about empty dofmaps? const std::vector& cell_dofs = dofmap.cell_dofs(cell.index()); // Local vertex ind const unsigned int local_vert = _vertex_map[vert_ind].second; // Tabulate local-local dofmap dofmap.tabulate_entity_dofs(local_to_local_dofs, 0, local_vert); // Fill local to global dof map for (unsigned int row = 0; row < N; row++) local_to_global_dofs[row] = cell_dofs[local_to_local_dofs[row]]; t_vert.stop(); // Iterate over stage forms for (unsigned int stage = 0; stage < num_stages; stage++) { // Update time *_scheme->t() = t0 + dt*_scheme->dt_stage_offset()[stage]; // Check if we have an explicit stage (only 1 form) if (_ufcs[stage].size() == 1) { Timer t_expl("Explicit stage"); // Point integral const ufc::point_integral& integral = *_ufcs[stage][0]->default_point_integral; // Update to current cell Timer t_expl_update("Explicit stage: update_cell"); _ufcs[stage][0]->update(cell, vertex_coordinates, ufc_cell); t_expl_update.stop(); // Tabulate cell tensor Timer t_expl_tt("Explicit stage: tabulate_tensor"); integral.tabulate_tensor(_ufcs[stage][0]->A.data(), _ufcs[stage][0]->w(), vertex_coordinates.data(), local_vert); t_expl_tt.stop(); // Extract vertex dofs from tabulated tensor and put them into the local // stage solution vector // Extract vertex dofs from tabulated tensor for (unsigned int row=0; row < N; row++) { local_stage_solutions[stage](row) = _ufcs[stage][0]->A[local_to_local_dofs[row]]; } // Put solution back into global stage solution vector Timer t_expl_set("Explicit stage: set"); _scheme->stage_solutions()[stage]->vector()->set( local_stage_solutions[stage].data(), N, local_to_global_dofs.data()); } // or an implicit stage (2 forms) else { Timer t_impl("Implicit stage"); const Parameters& newton_parameters = parameters("newton_solver"); // Local solution Eigen::VectorXd& u = local_stage_solutions[stage]; unsigned int newton_iteration = 0; bool newton_converged = false; bool jacobian_retabulated = false; const std::size_t maxiter = newton_parameters["maximum_iterations"]; const bool reuse_jacobian = newton_parameters["reuse_jacobian"]; const std::size_t iterations_to_retabulate_jacobian = newton_parameters["iterations_to_retabulate_jacobian"]; const double relaxation = newton_parameters["relaxation_parameter"]; const std::string convergence_criterion = newton_parameters["convergence_criterion"]; const double rtol = newton_parameters["relative_tolerance"]; const double atol = newton_parameters["absolute_tolerance"]; const bool report = newton_parameters["report"]; //const int num_threads = 0; /// Most recent residual and intitial residual double residual = 1.0; double residual0 = 1.0; double relative_residual = 1.0; //const double relaxation = 1.0; // Initialize la structures Eigen::VectorXd F(N), dx(N); // Get point integrals const ufc::point_integral& F_integral = *_ufcs[stage][0]->default_point_integral; const ufc::point_integral& J_integral = *_ufcs[stage][1]->default_point_integral; // Update to current cell. This only need to be done once for // each stage and vertex Timer t_impl_update("Implicit stage: update_cell"); _ufcs[stage][0]->update(cell, vertex_coordinates, ufc_cell); _ufcs[stage][1]->update(cell, vertex_coordinates, ufc_cell); t_impl_update.stop(); // Tabulate an initial residual solution Timer t_impl_tt_F("Implicit stage: tabulate_tensor (F)"); F_integral.tabulate_tensor(_ufcs[stage][0]->A.data(), _ufcs[stage][0]->w(), vertex_coordinates.data(), local_vert); t_impl_tt_F.stop(); // Extract vertex dofs from tabulated tensor, together with // the old stage solution Timer t_impl_update_F("Implicit stage: update_F"); for (unsigned int row = 0; row < N; row++) { F(row) = _ufcs[stage][0]->A[local_to_local_dofs[row]]; // Grab old value of stage solution as an initial start // value. This value was also used to tabulate the initial // value of the F_integral above and we therefore just grab // it from the restricted coeffcients u(row) = _ufcs[stage][0]->w()[_coefficient_index[stage][0]][local_to_local_dofs[row]]; } t_impl_update_F.stop(); // Start iterations while (!newton_converged && newton_iteration < maxiter) { if (_retabulate_J || !reuse_jacobian) { // Tabulate Jacobian Timer t_impl_tt_J("Implicit stage: tabulate_tensor (J)"); J_integral.tabulate_tensor(_ufcs[stage][1]->A.data(), _ufcs[stage][1]->w(), vertex_coordinates.data(), local_vert); t_impl_tt_J.stop(); // Extract vertex dofs from tabulated tensor Timer t_impl_update_J("Implicit stage: update_J"); for (unsigned int row = 0; row < N; row++) { for (unsigned int col=0; col < N; col++) { _J(row, col) = _ufcs[stage][1]->A[local_to_local_dofs[row]*dof_offset*N + local_to_local_dofs[col]]; } } t_impl_update_J.stop(); // LU factorize Jacobian Timer lu_factorize("Implicit stage: LU factorize"); _J_LU.compute(_J); _retabulate_J = false; } // Perform linear solve By forward backward substitution Timer forward_backward_substitution("Implicit stage: fb substitution"); dx = _J_LU.solve(F); forward_backward_substitution.stop(); // Compute resdiual if (convergence_criterion == "residual") residual = F.norm(); else if (convergence_criterion == "incremental") residual = dx.norm(); else error("Unknown Newton convergence criterion"); // If initial residual if (newton_iteration == 0) residual0 = residual; // Relative residual relative_residual = residual / residual0; // Update solution if (std::abs(1.0 - relaxation) < DOLFIN_EPS) u -= dx; else u -= relaxation*dx; // Update number of iterations ++newton_iteration; // Put solution back into restricted coefficients before // tabulate new residual for (unsigned int row = 0; row < N; row++) { _ufcs[stage][0]->w()[_coefficient_index[stage][0]][local_to_local_dofs[row]] = u(row); } // Tabulate new residual t_impl_tt_F.start(); F_integral.tabulate_tensor(_ufcs[stage][0]->A.data(), _ufcs[stage][0]->w(), vertex_coordinates.data(), local_vert); t_impl_tt_F.stop(); t_impl_update_F.start(); // Extract vertex dofs from tabulated tensor for (unsigned int row = 0; row < N; row++) F(row) = _ufcs[stage][0]->A[local_to_local_dofs[row]]; t_impl_update_F.stop(); // Output iteration number and residual (only first vertex) if (report && (newton_iteration > 0) && (vert_ind == 0)) { info("Point solver newton iteration %d: r (abs) = %.3e (tol = %.3e) "\ "r (rel) = %.3e (tol = %.3e)", newton_iteration, residual, atol, relative_residual, rtol); } // Check for retabulation of Jacobian if (reuse_jacobian && newton_iteration > iterations_to_retabulate_jacobian && !jacobian_retabulated) { jacobian_retabulated = true; _retabulate_J = true; if (vert_ind == 0) info("Retabulating Jacobian."); // If there is a solution coefficient in the jacobian form if (_coefficient_index[stage].size()==2) { // Put solution back into restricted coefficients before // tabulate new jacobian for (unsigned int row=0; row < N; row++) _ufcs[stage][1]->w()[_coefficient_index[stage][1]][local_to_local_dofs[row]] = u(row); } } // Return true if convergence criterion is met if (relative_residual < rtol || residual < atol) newton_converged = true; } if (newton_converged) { Timer t_impl_set("Implicit stage: set"); // Put solution back into global stage solution vector _scheme->stage_solutions()[stage]->vector()->set(u.data(), u.size(), &local_to_global_dofs[0]); } else { info("Last iteration before error %d: r (abs) = %.3e (tol = %.3e) " "r (rel) = %.3e (tol = %.3e)", newton_iteration, residual, atol, relative_residual, rtol); error("Newton solver in PointIntegralSolver did not converge."); } } } Timer t_vert_axpy("Step: AXPY solution"); // Get local u0 solution and add the stage derivatives _scheme->solution()->vector()->get_local(u0.data(), u0.size(), &local_to_global_dofs[0]); // Do the last stage and put back into solution vector FunctionAXPY last_stage = _scheme->last_stage()*dt; // Axpy local solution vectors for (unsigned int stage=0; stage < num_stages; stage++) u0 += last_stage.pairs()[stage].first*local_stage_solutions[stage]; // Update global solution with last stage _scheme->solution()->vector()->set(u0.data(), local_to_global_dofs.size(), &local_to_global_dofs[0]); //p++; } // Update time *_scheme->t() = t0 + dt; } //----------------------------------------------------------------------------- void PointIntegralSolver::step_interval(double t0, double t1, double dt) { if (dt <= 0.0) { dolfin_error("PointIntegralSolver.cpp", "stepping PointIntegralSolver", "Expecting a positive dt"); } if (t0 >= t1) { dolfin_error("PointIntegralSolver.cpp", "stepping PointIntegralSolver", "Expecting t0 to be smaller than t1"); } // Set start time *_scheme->t() = t0; double t = t0; double next_dt = std::min(t1-t, dt); // Step interval while (t + next_dt <= t1) { if (next_dt < DOLFIN_EPS) break; step(next_dt); t = *_scheme->t(); next_dt = std::min(t1-t, dt); } } //----------------------------------------------------------------------------- void PointIntegralSolver::_check_forms() { // Iterate over stage forms and check they include point integrals std::vector > >& stage_forms = _scheme->stage_forms(); for (unsigned int i=0; i < stage_forms.size(); i++) { for (unsigned int j=0; j < stage_forms[i].size(); j++) { // Check form includes at least PointIntegral if (!stage_forms[i][j]->ufc_form()->has_point_integrals()) { dolfin_error("PointIntegralSolver.cpp", "constructing PointIntegralSolver", "Expecting form to have at least 1 PointIntegral"); } // Num dofs per vertex const Mesh& mesh = *stage_forms[i][j]->function_space(0)->mesh(); const GenericDofMap& dofmap = *stage_forms[i][j]->function_space(0)->dofmap(); const unsigned int dofs_per_vertex = dofmap.num_entity_dofs(0); const unsigned int vert_per_cell = mesh.topology()(mesh.topology().dim(), 0).size(0); if (vert_per_cell*dofs_per_vertex != dofmap.max_cell_dimension()) { dolfin_error("PointIntegralSolver.cpp", "constructing PointIntegralSolver", "Expecting test space to only have dofs on vertices"); } } } } //----------------------------------------------------------------------------- void PointIntegralSolver::_init() { // Get stage forms std::vector > >& stage_forms = _scheme->stage_forms(); // Init coefficient index and ufcs _coefficient_index.resize(stage_forms.size()); _ufcs.resize(stage_forms.size()); // Initiate jacobian matrices if (_scheme->implicit()) { const unsigned int N = stage_forms[0][0]->function_space(0)->dofmap()->num_entity_dofs(0); _J.resize(N, N); } // Iterate over stages and collect information for (unsigned int stage = 0; stage < stage_forms.size(); stage++) { // Create a UFC object for first form _ufcs[stage].push_back(boost::make_shared(*stage_forms[stage][0])); // If implicit stage if (stage_forms[stage].size()==2) { // Create a UFC object for second form _ufcs[stage].push_back(boost::make_shared(*stage_forms[stage][1])); // Find coefficient index for each of the two implicit forms for (unsigned int i = 0; i < 2; i++) { for (unsigned int j = 0; j < stage_forms[stage][i]->num_coefficients(); j++) { // Check if stage solution is the same as coefficient j if (stage_forms[stage][i]->coefficients()[j]->id() == _scheme->stage_solutions()[stage]->id()) { _coefficient_index[stage].push_back(j); break; } } } } } // Extract mesh const Mesh& mesh = stage_forms[0][0]->mesh(); _vertex_map.resize(mesh.num_vertices()); // Init mesh connections mesh.init(0); const unsigned int dim_t = mesh.topology().dim(); // Iterate over vertices and collect cell and local vertex information for (VertexIterator vert(mesh); !vert.end(); ++vert) { // First look for cell where the vert is local vert 0 bool local_vert_found = false; for (CellIterator cell(*vert); !cell.end(); ++cell ) { // If the first local vertex is the same as the global vertex if (cell->entities(0)[0]==vert->index()) { _vertex_map[vert->index()].first = cell->index(); _vertex_map[vert->index()].second = 0; local_vert_found = true; break; } } // If no cell exist where vert corresponds to local vert 0 just grab // local cell 0 and find what local vert the global vert corresponds to if (!local_vert_found) { const Cell cell0(mesh, vert->entities(dim_t)[0]); _vertex_map[vert->index()].first = cell0.index(); unsigned int local_vert_index = 0; for (VertexIterator local_vert(cell0); !local_vert.end(); ++local_vert) { // If local vert is found if (vert->index()==local_vert->index()) { // Store local vertex index _vertex_map[vert->index()].second = local_vert_index; break; } // Bump index local_vert_index++; } } } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/multistage/dolfin_multistage.h0000644000175000017500000000036012263014601022153 0ustar johannrjohannr#ifndef __DOLFIN_MULTISTAGE_H #define __DOLFIN_MULTISTAGE_H // DOLFIN multistage interface #include #include #include #endif dolfin-1.3.0/dolfin/dolfin.h0000644000175000017500000000143612263014601015544 0ustar johannrjohannr#ifndef __DOLFIN_H #define __DOLFIN_H // DOLFIN interface #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif dolfin-1.3.0/dolfin/refinement/0000755000175000017500000000000012263014601016250 5ustar johannrjohannrdolfin-1.3.0/dolfin/refinement/UniformMeshRefinement.cpp0000644000175000017500000000660012263014601023227 0ustar johannrjohannr// Copyright (C) 2006-2010 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Garth N. Wells, 2010 // // First added: 2006-06-08 // Last changed: 2011-04-07 #include #include #include #include #include #include #include #include #include #include #include "UniformMeshRefinement.h" using namespace dolfin; //----------------------------------------------------------------------------- void UniformMeshRefinement::refine(Mesh& refined_mesh, const Mesh& mesh) { not_working_in_parallel("UniformMeshRefinement::refine"); log(TRACE, "Refining simplicial mesh uniformly."); // Check that refined_mesh and mesh are not the same if (&refined_mesh == &mesh) { dolfin_error("UniformMeshRefinement.cpp", "refine mesh", "Refined_mesh and mesh point to the same object"); } // Generate cell - edge connectivity if not generated mesh.init(mesh.topology().dim(), 1); // Generate edge - vertex connectivity if not generated mesh.init(1, 0); // Mesh needs to be ordered (so we can pick right combination of vertices/edges) if (!mesh.ordered()) dolfin_error("UniformMeshRefinement.cpp", "refine mesh", "Mesh is not ordered according to the UFC numbering convention, consider calling mesh.order()"); // Get cell type const CellType& cell_type = mesh.type(); // Open new mesh for editing MeshEditor editor; editor.open(refined_mesh, cell_type.cell_type(), mesh.topology().dim(), mesh.geometry().dim()); // Get size of mesh const std::size_t num_vertices = mesh.size(0); const std::size_t num_edges = mesh.size(1); const std::size_t num_cells = mesh.size(mesh.topology().dim()); // Specify number of vertices and cells editor.init_vertices(num_vertices + num_edges); editor.init_cells(ipow(2, mesh.topology().dim())*num_cells); // Add old vertices std::size_t vertex = 0; for (VertexIterator v(mesh); !v.end(); ++v) { editor.add_vertex(vertex, v->point()); vertex++; } // Add new vertices for (EdgeIterator e(mesh); !e.end(); ++e) { editor.add_vertex(vertex, e->midpoint()); vertex++; } // Add cells std::size_t current_cell = 0; for (CellIterator c(mesh); !c.end(); ++c) cell_type.refine_cell(*c, editor, current_cell); // Close editor editor.close(); // Make sure that mesh is ordered after refinement //refined_mesh.order(); } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/refinement/LocalMeshRefinement.h0000644000175000017500000000275112263014601022312 0ustar johannrjohannr// Copyright (C) 2011 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2011-02-07 // Last changed: 2011-02-07 #ifndef __LOCAL_MESH_REFINEMENT_H #define __LOCAL_MESH_REFINEMENT_H namespace dolfin { class Mesh; template class MeshFunction; /// This class is provides functionality for local (adaptive) mesh /// refinement. It is a wrapper for various algorithms for local /// mesh refinement implemented as part of DOLFIN and it delegates /// the refinement to a particular refinement algorithm based on the /// value of the global parameter "refinement_algorithm". class LocalMeshRefinement { public: /// Refine mesh based on cell markers static void refine(Mesh& refined_mesh, const Mesh& mesh, const MeshFunction& cell_markers); }; } #endif dolfin-1.3.0/dolfin/refinement/LocalMeshCoarsening.cpp0000644000175000017500000003132312263014601022636 0ustar johannrjohannr// Copyright (C) 2006 Johan Hoffman // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Anders Logg, 2008. // // First added: 2006-11-01 // Last changed: 2011-04-07 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "LocalMeshCoarsening.h" using namespace dolfin; //----------------------------------------------------------------------------- void LocalMeshCoarsening::coarsen_mesh_by_edge_collapse(Mesh& mesh, MeshFunction& cell_marker, bool coarsen_boundary) { log(TRACE, "Coarsen simplicial mesh by edge collapse."); // Get size of old mesh //const std::size_t num_vertices = mesh.size(0); const std::size_t num_cells = mesh.size(mesh.topology().dim()); // Check cell marker if ( cell_marker.size() != num_cells ) dolfin_error("LocalMeshCoarsening.cpp", "coarsen mesh by collapsing edges", "Number of cell markers (%d) does not match number of cells (%d)", cell_marker.size(), num_cells); // Generate cell - edge connectivity if not generated mesh.init(mesh.topology().dim(), 1); // Generate edge - vertex connectivity if not generated mesh.init(1, 0); // Get cell type //const CellType& cell_type = mesh.type(); // Create new mesh Mesh coarse_mesh(mesh); // Initialise forbidden cells MeshFunction cell_forbidden(mesh); cell_forbidden.init(mesh.topology().dim()); for (CellIterator c(mesh); !c.end(); ++c) cell_forbidden[c->index()] = false; // Init new vertices and cells std::vector old2new_cell(mesh.num_cells()); std::vector old2new_vertex(mesh.num_vertices()); std::list cells_to_coarsen(0); // Compute cells to delete for (CellIterator c(mesh); !c.end(); ++c) { if (cell_marker[*c] == true) { cells_to_coarsen.push_back(c->index()); //cout << "coarsen midpoint: " << c->midpoint() << endl; } } // Define cell mapping between old and new mesh for (CellIterator c(mesh); !c.end(); ++c) { old2new_cell[c->index()] = c->index(); } bool improving = true; while(improving) { std::size_t presize = cells_to_coarsen.size(); //cout << "presize: " << presize << endl; for(std::list::iterator iter = cells_to_coarsen.begin(); iter != cells_to_coarsen.end(); iter++) { // Map cells to new mesh if(*iter >= 0) *iter = old2new_cell[*iter]; } old2new_cell.resize(mesh.num_cells()); old2new_vertex.resize(mesh.num_vertices()); // Coarsen cells in list for(std::list::iterator iter = cells_to_coarsen.begin(); iter != cells_to_coarsen.end(); iter++) { bool mesh_ok = false; int cid = *iter; if(cid != -1) { mesh_ok = coarsen_cell(mesh, coarse_mesh, cid, old2new_vertex, old2new_cell, coarsen_boundary); if(!mesh_ok) warning("Mesh not ok"); else { mesh = coarse_mesh; cells_to_coarsen.erase(iter); break; } } } if(presize == cells_to_coarsen.size()) break; } } //----------------------------------------------------------------------------- void LocalMeshCoarsening::collapse_edge(Mesh& mesh, Edge& edge, Vertex& vertex_to_remove, MeshFunction& cell_to_remove, std::vector& old2new_vertex, std::vector& old2new_cell, MeshEditor& editor, std::size_t& current_cell) { const CellType& cell_type = mesh.type(); std::vector cell_vertices(cell_type.num_entities(0)); std::size_t vert_slave = vertex_to_remove.index(); std::size_t vert_master = 0; const unsigned int* edge_vertex = edge.entities(0); if ( edge_vertex[0] == vert_slave ) vert_master = edge_vertex[1]; else if ( edge_vertex[1] == vert_slave ) vert_master = edge_vertex[0]; else dolfin_error("LocalMeshCoarsening.cpp", "collapse edge", "The node to delete and edge to collapse are not compatible"); for (CellIterator c(vertex_to_remove); !c.end(); ++c) { if ( cell_to_remove[*c] == false ) { std::size_t cv_idx = 0; for (VertexIterator v(*c); !v.end(); ++v) { if ( v->index() == vert_slave ) cell_vertices[cv_idx++] = old2new_vertex[vert_master]; else cell_vertices[cv_idx++] = old2new_vertex[v->index()]; } //cout << "adding new cell" << endl; editor.add_cell(current_cell++, cell_vertices); // Update cell map old2new_cell[c->index()] = current_cell - 1; } } } //----------------------------------------------------------------------------- bool LocalMeshCoarsening::coarsen_cell(Mesh& mesh, Mesh& coarse_mesh, int cellid, std::vector& old2new_vertex, std::vector& old2new_cell, bool coarsen_boundary) { cout << "coarsen_cell: " << cellid << endl; cout << "num_cells: " << mesh.num_cells() << endl; const std::size_t num_vertices = mesh.size(0); const std::size_t num_cells = mesh.size(mesh.topology().dim()); // Initialise forbidden verticies MeshFunction vertex_forbidden(mesh); vertex_forbidden.init(0); for (VertexIterator v(mesh); !v.end(); ++v) vertex_forbidden[v->index()] = false; // Initialise boundary verticies MeshFunction vertex_boundary(mesh); vertex_boundary.init(0); for (VertexIterator v(mesh); !v.end(); ++v) vertex_boundary[v->index()] = false; BoundaryMesh boundary(mesh, "exterior"); MeshFunction& bnd_vertex_map = boundary.entity_map(0); for (VertexIterator v(boundary); !v.end(); ++v) vertex_boundary[bnd_vertex_map[v->index()]] = true; // If coarsen boundary is forbidden if (coarsen_boundary == false) { for (VertexIterator v(boundary); !v.end(); ++v) vertex_forbidden[bnd_vertex_map[v->index()]] = true; } // Initialise data for finding which vertex to remove bool _collapse_edge = false; const unsigned int* edge_vertex; std::size_t shortest_edge_index = 0; double lmin, l; std::size_t num_cells_to_remove = 0; // Get cell type const CellType& cell_type = mesh.type(); const Cell cell(mesh, cellid); MeshEditor editor; editor.open(coarse_mesh, cell_type.cell_type(), mesh.topology().dim(), mesh.geometry().dim()); MeshFunction cell_to_remove(mesh); cell_to_remove.init(mesh.topology().dim()); for (CellIterator ci(mesh); !ci.end(); ++ci) cell_to_remove[ci->index()] = false; MeshFunction cell_to_regenerate(mesh); cell_to_regenerate.init(mesh.topology().dim()); for (CellIterator ci(mesh); !ci.end(); ++ci) cell_to_regenerate[ci->index()] = false; // Find shortest edge of cell c _collapse_edge = false; lmin = 1.0e10*cell.diameter(); for (EdgeIterator e(cell); !e.end(); ++e) { edge_vertex = e->entities(0); if (!vertex_forbidden[edge_vertex[0]] || !vertex_forbidden[edge_vertex[1]]) { l = e->length(); if ( lmin > l ) { lmin = l; shortest_edge_index = e->index(); _collapse_edge = true; } } } Edge shortest_edge(mesh, shortest_edge_index); // Decide which vertex to remove std::size_t vert2remove_idx = 0; // If at least one vertex should be removed if ( _collapse_edge == true ) { edge_vertex = shortest_edge.entities(0); if(vertex_forbidden[edge_vertex[0]] && vertex_forbidden[edge_vertex[1]]) { // Both vertices are forbidden, cannot coarsen cout << "both vertices forbidden" << endl; editor.close(); return false; } if(vertex_forbidden[edge_vertex[0]] == true) vert2remove_idx = edge_vertex[1]; else if(vertex_forbidden[edge_vertex[1]] == true) vert2remove_idx = edge_vertex[0]; else if(vertex_boundary[edge_vertex[1]] == true && vertex_boundary[edge_vertex[0]] == false) vert2remove_idx = edge_vertex[0]; else if(vertex_boundary[edge_vertex[0]] == true && vertex_boundary[edge_vertex[1]] == false) vert2remove_idx = edge_vertex[1]; else if ( edge_vertex[0] > edge_vertex[1] ) vert2remove_idx = edge_vertex[0]; else vert2remove_idx = edge_vertex[1]; } else { // No vertices to remove, cannot coarsen cout << "all vertices forbidden" << endl; editor.close(); return false; } Vertex vertex_to_remove(mesh, vert2remove_idx); // Remove cells around edge num_cells_to_remove = 0; for (CellIterator cn(shortest_edge); !cn.end(); ++cn) { cell_to_remove[cn->index()] = true; num_cells_to_remove++; // Update cell map old2new_cell[cn->index()] = -1; } // Regenerate cells around vertex for (CellIterator cn(vertex_to_remove); !cn.end(); ++cn) { cell_to_regenerate[cn->index()] = true; // Update cell map (will be filled in with correct index) old2new_cell[cn->index()] = -1; } // Specify number of vertices and cells editor.init_vertices(num_vertices - 1); editor.init_cells(num_cells - num_cells_to_remove); cout << "Number of cells in old mesh: " << num_cells << "; to remove: " << num_cells_to_remove << endl; // Add old vertices std::size_t vertex = 0; for(VertexIterator v(mesh); !v.end(); ++v) { if(vertex_to_remove.index() == v->index()) old2new_vertex[v->index()] = -1; else { //cout << "adding old vertex at: " << v->point() << endl; old2new_vertex[v->index()] = vertex; editor.add_vertex(vertex, v->point()); vertex++; } } // Add old unrefined cells std::size_t cv_idx; std::size_t current_cell = 0; std::vector cell_vertices(cell_type.num_entities(0)); for (CellIterator c(mesh); !c.end(); ++c) { if(cell_to_remove[*c] == false && cell_to_regenerate[*c] == false) { cv_idx = 0; for (VertexIterator v(*c); !v.end(); ++v) cell_vertices[cv_idx++] = old2new_vertex[v->index()]; //cout << "adding old cell" << endl; editor.add_cell(current_cell++, cell_vertices); // Update cell maps old2new_cell[c->index()] = current_cell - 1; } } // Add new cells. collapse_edge(mesh, shortest_edge, vertex_to_remove, cell_to_remove, old2new_vertex, old2new_cell, editor, current_cell); editor.close(); // Set volume tolerance. This parameter detemines a quality criterion // for the new mesh: higher value indicates a sharper criterion. double vol_tol = 1.0e-3; bool mesh_ok = true; Cell removed_cell(mesh, cellid); // Check mesh quality (volume) for (CellIterator c(removed_cell); !c.end(); ++c) { std::size_t id = c->index(); int nid = old2new_cell[id]; if(nid != -1) { Cell cn(coarse_mesh, nid); double qm = cn.volume() / cn.diameter(); if(qm < vol_tol) { warning("Cell quality too low"); cout << "qm: " << qm << endl; mesh_ok = false; return mesh_ok; } } } // Checking for inverted cells for (CellIterator c(removed_cell); !c.end(); ++c) { std::size_t id = c->index(); int nid = old2new_cell[id]; if(nid != -1) { Cell cn(coarse_mesh, nid); if(c->orientation() != cn.orientation()) { cout << "cell orientation inverted" << endl; mesh_ok = false; return mesh_ok; } } } return mesh_ok; } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/refinement/LocalMeshRefinement.cpp0000644000175000017500000000527412263014601022650 0ustar johannrjohannr// Copyright (C) 2011 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2011-02-07 // Last changed: 2011-11-15 #include #include #include #include #include "BisectionRefinement.h" #include "RegularCutRefinement.h" #include "LocalMeshRefinement.h" using namespace dolfin; //----------------------------------------------------------------------------- void LocalMeshRefinement::refine(Mesh& refined_mesh, const Mesh& mesh, const MeshFunction& cell_markers) { not_working_in_parallel("LocalMeshRefinement::refine"); // Count the number of marked cells const std::size_t n0 = mesh.num_cells(); std::size_t n = 0; for (std::size_t i = 0; i < cell_markers.size(); i++) { if (cell_markers[i]) n++; } info("%d cells out of %d marked for refinement (%.1f%%).", n, n0, 100.0 * static_cast(n) / static_cast(n0)); // Call refinement algorithm const std::string refinement_algorithm = parameters["refinement_algorithm"]; if (refinement_algorithm == "recursive_bisection") BisectionRefinement::refine_by_recursive_bisection(refined_mesh, mesh, cell_markers); else if (refinement_algorithm == "regular_cut") RegularCutRefinement::refine(refined_mesh, mesh, cell_markers); else dolfin_error("LocalMeshRefinement.cpp", "refine mesh locally", "Unknown local mesh refinement algorithm: %s. Allowed algorithms are 'recursive_bisection' and 'regular_cut'", refinement_algorithm.c_str()); // Report the number of refined cells if (refined_mesh.topology().dim() > 0) { const std::size_t n1 = refined_mesh.num_cells(); info("Number of cells increased from %d to %d (%.1f%% increase).", n0, n1, 100.0 * (static_cast(n1) / static_cast(n0) - 1.0)); } else info("Refined mesh is empty."); } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/refinement/ParallelRefinement2D.cpp0000644000175000017500000002321612263014601022717 0ustar johannrjohannr// Copyright (C) 2012 Chris Richardson // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // // First Added: 2012-12-19 // Last Changed: 2013-05-12 #include #include #include #include #include #include #include #include #include #include #include #include #include "ParallelRefinement2D.h" using namespace dolfin; //----------------------------------------------------------------------------- bool ParallelRefinement2D::length_compare(std::pair a, std::pair b) { return (a.first > b.first); } //----------------------------------------------------------------------------- void ParallelRefinement2D::generate_reference_edges(const Mesh& mesh, std::vector& ref_edge) { std::size_t D = mesh.topology().dim(); ref_edge.resize(mesh.size(D)); for (CellIterator cell(mesh); !cell.end(); ++cell) { std::size_t cell_index = cell->index(); std::vector > lengths; EdgeIterator celledge(*cell); for (std::size_t i = 0; i < 3; i++) lengths.push_back(std::make_pair(celledge[i].length(), i)); std::sort(lengths.begin(), lengths.end(), length_compare); // For now - just pick longest edge - this is not the Carstensen // algorithm, which tries to pair edges off. Because that is more // difficult in parallel, it is not implemented yet. const std::size_t edge_index = lengths[0].second; ref_edge[cell_index] = edge_index; } } //----------------------------------------------------------------------------- void ParallelRefinement2D::refine(Mesh& new_mesh, const Mesh& mesh, bool redistribute) { if (MPI::num_processes()==1) { dolfin_error("ParallelRefinement2D.cpp", "refine mesh", "Only works in parallel"); } const std::size_t tdim = mesh.topology().dim(); if (tdim != 2) { dolfin_error("ParallelRefinement2D.cpp", "refine mesh", "Only works in 2D"); } // Ensure connectivity is there mesh.init(tdim - 1, tdim); // Create an object to hold most of the refinement information ParallelRefinement p(mesh); // Mark all edges, and create new vertices p.mark_all(); p.create_new_vertices(); const std::map& edge_to_new_vertex = p.edge_to_new_vertex(); // Convenienence iterator std::map::const_iterator it; // Generate new topology for (CellIterator cell(mesh); !cell.end(); ++cell) { EdgeIterator e(*cell); VertexIterator v(*cell); const std::size_t v0 = v[0].global_index(); const std::size_t v1 = v[1].global_index(); const std::size_t v2 = v[2].global_index(); it = edge_to_new_vertex.find(e[0].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e0 = it->second; it = edge_to_new_vertex.find(e[1].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e1 = it->second; it = edge_to_new_vertex.find(e[2].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e2 = it->second; //const std::size_t e0 = edge_to_new_vertex[e[0].index()]; //const std::size_t e1 = edge_to_new_vertex[e[1].index()]; //const std::size_t e2 = edge_to_new_vertex[e[2].index()]; p.new_cell(v0, e2, e1); p.new_cell(e2, v1, e0); p.new_cell(e1, e0, v2); p.new_cell(e0, e1, e2); } p.partition(new_mesh, redistribute); } //----------------------------------------------------------------------------- void ParallelRefinement2D::refine(Mesh& new_mesh, const Mesh& mesh, const MeshFunction& refinement_marker, bool redistribute) { if (MPI::num_processes()==1) { dolfin_error("ParallelRefinement2D.cpp", "refine mesh", "Only works in parallel"); } const std::size_t tdim = mesh.topology().dim(); if (tdim != 2) { // Note: gdim may be 3 dolfin_error("ParallelRefinement2D.cpp", "refine mesh", "Only works in 2D"); } // Ensure connectivity is there mesh.init(tdim - 1, tdim); // Create a class to hold most of the refinement information ParallelRefinement p(mesh); // This refinement algorithm creates a 'reference' edge for each // cell. In this case, the reference edge is the longest edge. Any // cell with edges marked for bisection, must also bisect the // reference edge. // Vector over all cells - the reference edge is the cell's edge (0, // 1 or 2) which always must split, if any edge splits in the cell std::vector ref_edge; generate_reference_edges(mesh, ref_edge); // Set marked edges from marked cells p.mark(refinement_marker); // Mark reference edges of cells with any marked edge // and repeat until no more marking takes place std::size_t update_count = 1; while (update_count != 0) { update_count = 0; // Transmit values between processes - could be streamlined p.update_logical_edgefunction(); for (CellIterator cell(mesh); !cell.end(); ++cell) { std::size_t n_marked = p.marked_edge_count(*cell); EdgeIterator edge(*cell); std::size_t ref_edge_index = edge[ref_edge[cell->index()]].index(); if (n_marked != 0 && p.is_marked(ref_edge_index) == false) { p.mark(ref_edge_index); update_count++; } } update_count = MPI::sum(update_count); } // Generate new vertices from marked edges, and assign global vertex // index map. p.create_new_vertices(); const std::map& edge_to_new_vertex = p.edge_to_new_vertex(); // Convenienence iterator std::map::const_iterator it; // Stage 4 - do refinement // FIXME - keep reference edges somehow?... for (CellIterator cell(mesh); !cell.end(); ++cell) { std::size_t rgb_count = p.marked_edge_count(*cell); EdgeIterator e(*cell); VertexIterator v(*cell); const std::size_t ref = ref_edge[cell->index()]; const std::size_t i0 = ref; const std::size_t i1 = (ref + 1)%3; const std::size_t i2 = (ref + 2)%3; const std::size_t v0 = v[i0].global_index(); const std::size_t v1 = v[i1].global_index(); const std::size_t v2 = v[i2].global_index(); //const std::size_t e0 = edge_to_new_vertex[e[i0].index()]; //const std::size_t e1 = edge_to_new_vertex[e[i1].index()]; //const std::size_t e2 = edge_to_new_vertex[e[i2].index()]; if (rgb_count == 0) //straight copy of cell (1->1) p.new_cell(*cell); else if (rgb_count == 1) // "green" refinement (1->2) { // Always splitting the reference edge (only) it = edge_to_new_vertex.find(e[i0].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e0 = it->second; p.new_cell(e0, v0, v1); p.new_cell(e0, v2, v0); } else if (rgb_count == 2) // "blue" refinement (1->3) left or right { // FIXME: more possibilities here - need to do more tests if (p.is_marked(e[i2].index())) { it = edge_to_new_vertex.find(e[i0].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e0 = it->second; it = edge_to_new_vertex.find(e[i2].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e2 = it->second; p.new_cell(e2, v1, e0); p.new_cell(e2, e0, v0); p.new_cell(e0, v2, v0); } else if (p.is_marked(e[i1].index())) { it = edge_to_new_vertex.find(e[i0].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e0 = it->second; it = edge_to_new_vertex.find(e[i1].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e1 = it->second; p.new_cell(e0, v0, v1); p.new_cell(e1, e0, v2); p.new_cell(e1, v0, e0); } } else if (rgb_count == 3) // "red" refinement - all split (1->4) cells { it = edge_to_new_vertex.find(e[i0].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e0 = it->second; it = edge_to_new_vertex.find(e[i1].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e1 = it->second; it = edge_to_new_vertex.find(e[i2].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e2 = it->second; p.new_cell(v0, e2, e1); p.new_cell(e2, v1, e0); p.new_cell(e1, e0, v2); p.new_cell(e0, e1, e2); } } // Call partitioning from within ParallelRefinement class p.partition(new_mesh, redistribute); } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/refinement/ParallelRefinement2D.h0000644000175000017500000000317412263014601022365 0ustar johannrjohannr// Copyright (C) 2012 Chris Richardson // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // // First Added: 2012-12-19 // Last Changed: 2013-01-03 namespace dolfin { class Mesh; class ParallelRefinement2D { public: /// Refine with marker static void refine(Mesh& new_mesh, const Mesh& mesh, const MeshFunction& refinement_marker, bool redistribute); /// Uniform refine static void refine(Mesh& new_mesh, const Mesh& mesh, bool redistribute); private: /// Used to find longest edge of a cell, when working out reference edges static bool length_compare(std::pair a, std::pair b); /// Calculate which edges should be 'reference' edges for the RGB /// Carstensen type triangulation static void generate_reference_edges(const Mesh& mesh, std::vector& ref_edge); }; } dolfin-1.3.0/dolfin/refinement/RegularCutRefinement.cpp0000644000175000017500000005712512263014601023060 0ustar johannrjohannr// Copyright (C) 2011 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2011-02-07 // Last changed: 2013-08-02 #include #include #include #include #include #include #include #include #include #include #include "RegularCutRefinement.h" using namespace dolfin; //----------------------------------------------------------------------------- void RegularCutRefinement::refine(Mesh& refined_mesh, const Mesh& mesh, const MeshFunction& cell_markers) { not_working_in_parallel("RegularCutRefinement::refine"); // Currently only implemented in 2D if (mesh.topology().dim() != 2) { dolfin_error("RegularCutRefinement.cpp", "refine mesh", "Mesh is not two-dimensional: regular-cut mesh refinement is currently only implemented in 2D"); } // Check that mesh is ordered if (!mesh.ordered()) { dolfin_error("RegularCutRefinement.cpp", "refine mesh", "Mesh is not ordered according to the UFC numbering convention, consider calling mesh.order()"); } // Initialize edges mesh.init(1); // Compute refinement markers std::vector refinement_markers; IndexSet marked_edges(mesh.num_edges()); compute_markers(refinement_markers, marked_edges, mesh, cell_markers); // Refine mesh based on computed markers refine_marked(refined_mesh, mesh, refinement_markers, marked_edges); } //----------------------------------------------------------------------------- void RegularCutRefinement::compute_markers(std::vector& refinement_markers, IndexSet& marked_edges, const Mesh& mesh, const MeshFunction& cell_markers) { // Topological dimension const std::size_t D = mesh.topology().dim(); // Create edge markers and initialize to false const std::size_t edges_per_cell = D + 1; std::vector > edge_markers(mesh.num_cells()); for (std::size_t i = 0; i < mesh.num_cells(); i++) { edge_markers[i].resize(edges_per_cell); for (std::size_t j = 0; j < edges_per_cell; j++) edge_markers[i][j] = false; } // Create index sets for marked cells IndexSet cells(mesh.num_cells()); IndexSet marked_cells(mesh.num_cells()); // Get bisection data const std::vector* bisection_twins = NULL; if (mesh.data().exists("bisection_twins", D)) bisection_twins = &(mesh.data().array("bisection_twins", D)); // Iterate until no more cells are marked cells.fill(); while (!cells.empty()) { // Iterate over all cells in list for (std::size_t _i = 0; _i < cells.size(); _i++) { // Get cell index and create cell const std::size_t cell_index = cells[_i]; const Cell cell(mesh, cell_index); // Count the number of marked edges const std::size_t num_marked = count_markers(edge_markers[cell_index]); // Check whether cell has a bisection twin std::size_t bisection_twin = cell_index; bool is_bisected = false; if (bisection_twins) { bisection_twin = (*bisection_twins)[cell_index]; is_bisected = bisection_twin != cell_index; } // Get bisection edge std::size_t common_edge = 0; std::size_t bisection_edge = 0; if (is_bisected) { common_edge = find_common_edges(cell, mesh, bisection_twin).first; bisection_edge = find_bisection_edges(cell, mesh, bisection_twin).first; } // Decide if cell should be refined bool refine = false; refine = refine || cell_markers[cell_index]; if (is_bisected) refine = refine || num_marked > 0; else { refine = refine || num_marked > 1; refine = refine || too_thin(cell, edge_markers[cell_index]); } // Skip cell if it should not be marked if (!refine) continue; // Iterate over edges for (EdgeIterator edge(cell); !edge.end(); ++edge) { // Skip edge if it is a bisected edge of a bisected cell if (is_bisected && edge.pos() == bisection_edge) continue; // Mark edge in current cell if (!edge_markers[cell_index][edge.pos()]) { edge_markers[cell_index][edge.pos()] = true; marked_cells.insert(cell_index); } // Insert edge into set of marked edges but only if the edge // is not the common edge of a bisected cell in which case it // will later be removed and no new vertex be inserted... if (!is_bisected || edge.pos() != common_edge) marked_edges.insert(edge->index()); // Iterate over cells sharing edge for (CellIterator neighbor(*edge); !neighbor.end(); ++neighbor) { // Get local edge number of edge relative to neighbor const std::size_t local_index = neighbor->index(*edge); // Mark edge for refinement if (!edge_markers[neighbor->index()][local_index]) { edge_markers[neighbor->index()][local_index] = true; marked_cells.insert(neighbor->index()); } } } } // Copy marked cells cells = marked_cells; marked_cells.clear(); } // Extract which cells to refine and indices which edges to bisect refinement_markers.resize(mesh.num_cells()); for (std::size_t i = 0; i < edge_markers.size(); i++) { // Count the number of marked edges const std::size_t num_marked = count_markers(edge_markers[i]); // Check if cell has been bisected before const bool is_bisected = bisection_twins && (*bisection_twins)[i] != i; // No refinement if (num_marked == 0) refinement_markers[i] = no_refinement; // Mark for bisection else if (num_marked == 1 && !is_bisected) refinement_markers[i] = extract_edge(edge_markers[i]); // Mark for regular refinement else if (num_marked == edges_per_cell && !is_bisected) refinement_markers[i] = regular_refinement; // Mark for bisection backtracking else if (num_marked == 2 && is_bisected) refinement_markers[i] = backtrack_bisection; // Mark for bisection backtracking and refinement else if (num_marked == edges_per_cell && is_bisected) refinement_markers[i] = backtrack_bisection_refine; // Sanity check else dolfin_error("RegularCutRefinement.cpp", "compute marked edges", "Unexpected number of edges marked"); } } //----------------------------------------------------------------------------- void RegularCutRefinement::refine_marked(Mesh& refined_mesh, const Mesh& mesh, const std::vector& refinement_markers, const IndexSet& marked_edges) { // Count the number of cells in refined mesh std::size_t num_cells = 0; // Data structure to hold a cell std::vector cell_data(3); for (CellIterator cell(mesh); !cell.end(); ++cell) { const int marker = refinement_markers[cell->index()]; switch (marker) { case no_refinement: num_cells += 1; break; case regular_refinement: num_cells += 4; break; case backtrack_bisection: num_cells += 2; break; case backtrack_bisection_refine: num_cells += 3; break; default: num_cells += 2; } } // Initialize mesh editor const std::size_t num_vertices = mesh.num_vertices() + marked_edges.size(); MeshEditor editor; editor.open(refined_mesh, mesh.topology().dim(), mesh.geometry().dim()); editor.init_vertices(num_vertices); editor.init_cells(num_cells); // Set vertex coordinates std::size_t current_vertex = 0; for (VertexIterator vertex(mesh); !vertex.end(); ++vertex) { editor.add_vertex(current_vertex, vertex->point()); current_vertex++; } for (std::size_t i = 0; i < marked_edges.size(); i++) { Edge edge(mesh, marked_edges[i]); editor.add_vertex(current_vertex, edge.midpoint()); current_vertex++; } // Get bisection data for old mesh const std::size_t D = mesh.topology().dim(); const std::vector* bisection_twins = NULL; if (mesh.data().exists("bisection_twins", D)) bisection_twins = &(mesh.data().array("bisection_twins", D)); // Markers for bisected cells pointing to their bisection twins in // refined mesh std::vector& refined_bisection_twins = refined_mesh.data().create_array("bisection_twins", D); refined_bisection_twins.resize(num_cells); for (std::size_t i = 0; i < num_cells; i++) refined_bisection_twins[i] = i; // Mapping from old to new unrefined cells (-1 means refined or not // yet processed) std::vector unrefined_cells(mesh.num_cells()); std::fill(unrefined_cells.begin(), unrefined_cells.end(), -1); // Iterate over all cells and add new cells std::size_t current_cell = 0; std::vector > cells(4, std::vector(3)); for (CellIterator cell(mesh); !cell.end(); ++cell) { // Get marker const int marker = refinement_markers[cell->index()]; if (marker == no_refinement) { // No refinement: just copy cell to new mesh std::vector vertices; for (VertexIterator vertex(*cell); !vertex.end(); ++vertex) vertices.push_back(vertex->index()); editor.add_cell(current_cell++, vertices); // Store mapping to new cell index unrefined_cells[cell->index()] = current_cell - 1; // Remember unrefined bisection twins if (bisection_twins) { const std::size_t bisection_twin = (*bisection_twins)[cell->index()]; const int twin_marker = refinement_markers[bisection_twin]; dolfin_assert(twin_marker == no_refinement); if (unrefined_cells[bisection_twin] >= 0) { const std::size_t i = current_cell - 1; const std::size_t j = unrefined_cells[bisection_twin]; refined_bisection_twins[i] = j; refined_bisection_twins[j] = i; } } } else if (marker == regular_refinement) { // Regular refinement: divide into subsimplicies dolfin_assert(unrefined_cells[cell->index()] == -1); // Get vertices and edges const unsigned int* v = cell->entities(0); const unsigned int* e = cell->entities(1); dolfin_assert(v); dolfin_assert(e); // Get offset for new vertex indices const std::size_t offset = mesh.num_vertices(); // Compute indices for the six new vertices const std::size_t v0 = v[0]; const std::size_t v1 = v[1]; const std::size_t v2 = v[2]; const std::size_t e0 = offset + marked_edges.find(e[0]); const std::size_t e1 = offset + marked_edges.find(e[1]); const std::size_t e2 = offset + marked_edges.find(e[2]); // Create four new cells cells[0][0] = v0; cells[0][1] = e2; cells[0][2] = e1; cells[1][0] = v1; cells[1][1] = e0; cells[1][2] = e2; cells[2][0] = v2; cells[2][1] = e1; cells[2][2] = e0; cells[3][0] = e0; cells[3][1] = e1; cells[3][2] = e2; // Add cells std::vector >::const_iterator _cell; for (_cell = cells.begin(); _cell != cells.end(); ++_cell) editor.add_cell(current_cell++, *_cell); } else if (marker == backtrack_bisection || marker == backtrack_bisection_refine) { // Special case: backtrack bisected cells dolfin_assert(unrefined_cells[cell->index()] == -1); // Get index for bisection twin dolfin_assert(bisection_twins); const std::size_t bisection_twin = (*bisection_twins)[cell->index()]; dolfin_assert(bisection_twin != cell->index()); // Let lowest number twin handle refinement if (bisection_twin < cell->index()) continue; // Get marker for twin const int twin_marker = refinement_markers[bisection_twin]; // Find common edge(s) and bisected edge(s) const std::pair common_edges = find_common_edges(*cell, mesh, bisection_twin); const std::pair bisection_edges = find_bisection_edges(*cell, mesh, bisection_twin); const std::pair bisection_vertices = find_bisection_vertices(*cell, mesh, bisection_twin, bisection_edges); // Get list of vertices and edges for both cells const Cell twin(mesh, bisection_twin); const unsigned int* vertices_0 = cell->entities(0); const unsigned int* vertices_1 = twin.entities(0); const unsigned int* edges_0 = cell->entities(1); const unsigned int* edges_1 = twin.entities(1); dolfin_assert(vertices_0); dolfin_assert(vertices_1); dolfin_assert(edges_0); dolfin_assert(edges_1); // Get offset for new vertex indices const std::size_t offset = mesh.num_vertices(); // Locate vertices such that v_i is the vertex opposite to // the edge e_i on the parent triangle const std::size_t v0 = vertices_0[common_edges.first]; const std::size_t v1 = vertices_1[common_edges.second]; const std::size_t v2 = vertices_0[bisection_edges.first]; const std::size_t e0 = offset + marked_edges.find(edges_1[bisection_vertices.second]); const std::size_t e1 = offset + marked_edges.find(edges_0[bisection_vertices.first]); const std::size_t e2 = vertices_0[bisection_vertices.first]; // Locate new vertices on bisected edge (if any) std::size_t E0 = 0; std::size_t E1 = 0; if (marker == backtrack_bisection_refine) E0 = offset + marked_edges.find(edges_0[bisection_edges.first]); if (twin_marker == backtrack_bisection_refine) E1 = offset + marked_edges.find(edges_1[bisection_edges.second]); // Add middle two cells (always) dolfin_assert(cell_data.size() == 3); cell_data[0] = e0; cell_data[1] = e1; cell_data[2] = e2; editor.add_cell(current_cell++, cell_data); cell_data[0] = v2; cell_data[1] = e1; cell_data[2] = e0; editor.add_cell(current_cell++, cell_data); // Add one or two remaining cells in current cell (left) if (marker == backtrack_bisection) { cell_data[0] = v0; cell_data[1] = e2; cell_data[2] = e1; editor.add_cell(current_cell++, cell_data); } else { // Add the two cells cell_data[0] = v0; cell_data[1] = E0; cell_data[2] = e1; editor.add_cell(current_cell++, cell_data); cell_data[0] = E0; cell_data[1] = e2; cell_data[2] = e1; editor.add_cell(current_cell++, cell_data); // Set bisection twins refined_bisection_twins[current_cell - 2] = current_cell - 1; refined_bisection_twins[current_cell - 1] = current_cell - 2; } // Add one or two remaining cells in twin cell (right) if (twin_marker == backtrack_bisection) { cell_data[0] = v1; cell_data[1] = e0; cell_data[2] = e2; editor.add_cell(current_cell++, cell_data); } else { // Add the two cells cell_data[0] = v1; cell_data[1] = e0; cell_data[2] = E1; editor.add_cell(current_cell++, cell_data); cell_data[0] = e0; cell_data[1] = e2; cell_data[2] = E1; editor.add_cell(current_cell++, cell_data); // Set bisection twins refined_bisection_twins[current_cell - 2] = current_cell - 1; refined_bisection_twins[current_cell - 1] = current_cell - 2; } } else { // One edge marked for refinement: do bisection dolfin_assert(unrefined_cells[cell->index()] == -1); // Get vertices and edges const unsigned int* v = cell->entities(0); const unsigned int* e = cell->entities(1); dolfin_assert(v); dolfin_assert(e); // Get edge number (equal to marker) dolfin_assert(marker >= 0); const std::size_t local_edge_index = static_cast(marker); const std::size_t global_edge_index = e[local_edge_index]; const std::size_t ee = mesh.num_vertices() + marked_edges.find(global_edge_index); // Add the two new cells if (local_edge_index == 0) { cell_data[0] = v[0]; cell_data[1] = ee; cell_data[2] = v[1]; editor.add_cell(current_cell++, cell_data); cell_data[0] = v[0]; cell_data[1] = ee; cell_data[2] = v[2]; editor.add_cell(current_cell++, cell_data); } else if (local_edge_index == 1) { cell_data[0] = v[1]; cell_data[1] = ee; cell_data[2] = v[0]; editor.add_cell(current_cell++, cell_data); cell_data[0] = v[1]; cell_data[1] = ee; cell_data[2] = v[2]; editor.add_cell(current_cell++, cell_data); } else { cell_data[0] = v[2]; cell_data[1] = ee; cell_data[2] = v[0]; editor.add_cell(current_cell++, cell_data); cell_data[0] = v[2]; cell_data[1] = ee; cell_data[2] = v[1]; editor.add_cell(current_cell++, cell_data); } // Set bisection twins refined_bisection_twins[current_cell - 2] = current_cell - 1; refined_bisection_twins[current_cell - 1] = current_cell - 2; } } // Close mesh editor dolfin_assert(num_cells == current_cell); editor.close(); } //----------------------------------------------------------------------------- std::size_t RegularCutRefinement::count_markers(const std::vector& markers) { std::size_t num_markers = 0; for (std::size_t i = 0; i < markers.size(); i++) if (markers[i]) num_markers++; return num_markers; } //----------------------------------------------------------------------------- std::size_t RegularCutRefinement::extract_edge(const std::vector& markers) { for (std::size_t i = 0; i < markers.size(); i++) if (markers[i]) return i; dolfin_error("RegularCutRefinement.cpp", "extract edge", "Internal error in algorithm: edge not found"); return 0; } //----------------------------------------------------------------------------- bool RegularCutRefinement::too_thin(const Cell& cell, const std::vector& edge_markers) { const std::size_t num_markers = count_markers(edge_markers); // Only care about the case when one edge is marked if (num_markers != 1) return false; // Compute lengths of all edges std::vector lengths; double L = 0.0; for (EdgeIterator edge(cell); !edge.end(); ++edge) { const double l = edge->length(); L = std::max(L, l); lengths.push_back(l); } // Get length of marked edge const double l = lengths[extract_edge(edge_markers)]; // Check condition const bool too_thin = l < 0.5*L; return too_thin; } //----------------------------------------------------------------------------- std::pair RegularCutRefinement::find_common_edges(const Cell& cell, const Mesh& mesh, std::size_t bisection_twin) { // Get list of edges for both cells const Cell twin(mesh, bisection_twin); const unsigned int* e0 = cell.entities(1); const unsigned int* e1 = twin.entities(1); dolfin_assert(e0); dolfin_assert(e1); // Iterate over all combinations of edges const std::size_t num_edges = cell.num_entities(1); for (std::size_t i = 0; i < num_edges; i++) for (std::size_t j = 0; j < num_edges; j++) if (e0[i] == e1[j]) return std::make_pair(i, j); // Not found dolfin_error("RegularCutRefinement.cpp", "find common edges between cells", "Internal error in algorithm: common edge not found"); return std::make_pair(0, 0); } //----------------------------------------------------------------------------- std::pair RegularCutRefinement::find_bisection_edges(const Cell& cell, const Mesh& mesh, std::size_t bisection_twin) { // Get list of edges for both cells const Cell twin(mesh, bisection_twin); const unsigned int* e0 = cell.entities(1); const unsigned int* e1 = twin.entities(1); dolfin_assert(e0); dolfin_assert(e1); // Iterate over all combinations of edges const std::size_t num_edges = cell.num_entities(1); for (std::size_t i = 0; i < num_edges; i++) { // Get list of vertices for edge const Edge edge_0(mesh, e0[i]); const unsigned int* v0 = edge_0.entities(0); dolfin_assert(v0); for (std::size_t j = 0; j < num_edges; j++) { // Don't test against the edge itself if (e0[i] == e1[j]) continue; // Get list of vertices for edge const Edge edge_1(mesh, e1[j]); const unsigned int* v1 = edge_1.entities(0); dolfin_assert(v1); // Check that we have a common vertex if (v0[0] != v1[0] && v0[0] != v1[1] && v0[1] != v1[0] && v0[1] != v1[1]) continue; // Compute normalized dot product between edges double dot_product = edge_0.dot(edge_1); dot_product /= edge_0.length() * edge_1.length(); // Bisection edge found if dot product is small if (std::abs(std::abs(dot_product) - 1.0) < DOLFIN_EPS_LARGE) return std::make_pair(i, j); } } // Not found dolfin_error("RegularCutRefinement.cpp", "find edge for bisection", "Internal error in algorithm; bisection edge not found"); return std::make_pair(0, 0); } //----------------------------------------------------------------------------- std::pair RegularCutRefinement::find_bisection_vertices(const Cell& cell, const Mesh& mesh, std::size_t bisection_twin, const std::pair& bisection_edges) { // Get list of edges for both cells const Cell twin(mesh, bisection_twin); const unsigned int* e0 = cell.entities(1); const unsigned int* e1 = twin.entities(1); dolfin_assert(e0); dolfin_assert(e1); // Get vertices of the two edges Edge edge_0(mesh, e0[bisection_edges.first]); Edge edge_1(mesh, e1[bisection_edges.second]); const unsigned int* v0 = edge_0.entities(0); const unsigned int* v1 = edge_1.entities(0); dolfin_assert(v0); dolfin_assert(v1); // Find common vertex if (v0[0] == v1[0] || v0[0] == v1[1]) { Vertex v(mesh, v0[0]); return std::make_pair(cell.index(v), twin.index(v)); } if (v0[1] == v1[0] || v0[1] == v1[1]) { Vertex v(mesh, v0[1]); return std::make_pair(cell.index(v), twin.index(v)); } // Not found dolfin_error("RegularCutRefinement.cpp", "find bisection vertices", "Internal error in algorithm: bisection vertex not found"); return std::make_pair(0, 0); } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/refinement/ParallelRefinement.cpp0000644000175000017500000003655112263014601022537 0ustar johannrjohannr// Copyright (C) 2013 Chris Richardson // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // // First Added: 2013-01-02 // Last Changed: 2013-05-12 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "ParallelRefinement.h" using namespace dolfin; //----------------------------------------------------------------------------- ParallelRefinement::ParallelRefinement(const Mesh& mesh) : _mesh(mesh), shared_edges(DistributedMeshTools::compute_shared_entities(_mesh, 1)), marked_edges(mesh.num_edges(), false) { // Do nothing } //----------------------------------------------------------------------------- ParallelRefinement::~ParallelRefinement() { // Do nothing } //----------------------------------------------------------------------------- bool ParallelRefinement::is_marked(std::size_t edge_index) const { dolfin_assert(edge_index < _mesh.num_edges()); return marked_edges[edge_index]; } //----------------------------------------------------------------------------- void ParallelRefinement::mark(std::size_t edge_index) { dolfin_assert(edge_index < _mesh.num_edges()); marked_edges[edge_index] = true; } //----------------------------------------------------------------------------- void ParallelRefinement::mark_all() { marked_edges.assign(_mesh.num_edges(), true); } //----------------------------------------------------------------------------- const std::map& ParallelRefinement::edge_to_new_vertex() const { return local_edge_to_new_vertex; } //----------------------------------------------------------------------------- void ParallelRefinement::mark(const MeshEntity& cell) { for (EdgeIterator edge(cell); !edge.end(); ++edge) marked_edges[edge->index()] = true; } //----------------------------------------------------------------------------- void ParallelRefinement::mark(const MeshFunction& refinement_marker) { for (MeshEntityIterator cell(_mesh, refinement_marker.dim()); !cell.end(); ++cell) { if (refinement_marker[*cell]) { for (EdgeIterator edge(*cell); !edge.end(); ++edge) marked_edges[edge->index()] = true; } } } //----------------------------------------------------------------------------- std::size_t ParallelRefinement::marked_edge_count(const MeshEntity& cell) const { std::size_t n_marked = 0; for (EdgeIterator edge(cell); !edge.end(); ++edge) { if (marked_edges[edge->index()]) n_marked++; } return n_marked; } //----------------------------------------------------------------------------- void ParallelRefinement::update_logical_edgefunction() { const std::size_t num_processes = MPI::num_processes(); // Create a list of edges on this process that are 'true' and copy // to remote sharing processes std::vector > values_to_send(num_processes); std::vector > received_values; boost::unordered_map > >::iterator sh_edge; for (sh_edge = shared_edges.begin(); sh_edge != shared_edges.end(); sh_edge++) { const std::size_t local_index = sh_edge->first; if (marked_edges[local_index] == true) { std::vector >::iterator proc_edge; for (proc_edge = sh_edge->second.begin(); proc_edge != sh_edge->second.end(); ++proc_edge) { values_to_send[proc_edge->first].push_back(proc_edge->second); } } } MPI::all_to_all(values_to_send, received_values); // Flatten received values and set EdgeFunction true at each index // received std::vector >::iterator r; for (r = received_values.begin(); r != received_values.end(); ++r) { for (std::vector::iterator local_index = r->begin(); local_index != r->end(); ++local_index) { marked_edges[*local_index] = true; } } } //----------------------------------------------------------------------------- void ParallelRefinement::create_new_vertices() { // Take marked_edges and use to create new vertices const std::size_t num_processes = MPI::num_processes(); const std::size_t process_number = MPI::process_number(); // Tally up unshared marked edges, and shared marked edges which are // owned on this process. Index them sequentially from zero. const std::size_t gdim = _mesh.geometry().dim(); std::size_t n = 0; for (std::size_t local_i = 0 ; local_i < _mesh.num_edges(); ++local_i) { if(marked_edges[local_i] == true) { // Assume this edge is owned locally bool owner = true; // If shared, check that this is true if (shared_edges.count(local_i) != 0) { // check if any other sharing process has a lower rank std::vector >::iterator proc_edge; for (proc_edge = shared_edges.find(local_i)->second.begin(); proc_edge != shared_edges.find(local_i)->second.end(); ++proc_edge) { if(proc_edge->first < process_number) owner = false; } } // If it is still believed to be owned on this process, add to // list if (owner) { const Point& midpoint = Edge(_mesh, local_i).midpoint(); for(std::size_t j = 0; j < gdim; ++j) new_vertex_coordinates.push_back(midpoint[j]); local_edge_to_new_vertex[local_i] = n++; } } } // Calculate global range for new local vertices const std::size_t num_new_vertices = n; const std::size_t global_offset = MPI::global_offset(num_new_vertices, true) + _mesh.size_global(0); // If they are shared, then the new global vertex index needs to be // sent off-process. std::vector > > values_to_send(num_processes); // Add offset to map, and collect up any shared new vertices that // need to send the new index off-process for (std::map::iterator local_edge = local_edge_to_new_vertex.begin(); local_edge != local_edge_to_new_vertex.end(); ++local_edge) { // Add global_offset to map, to get new global index of new // vertices local_edge->second += global_offset; const std::size_t local_i = local_edge->first; //shared, but locally owned : remote owned are not in list. if (shared_edges.count(local_i) != 0) { std::vector >::iterator remote_process_edge; for (remote_process_edge = shared_edges[local_i].begin(); remote_process_edge != shared_edges[local_i].end(); ++remote_process_edge) { const std::size_t remote_proc_num = remote_process_edge->first; // send mapping from remote local edge index to new global vertex index values_to_send[remote_proc_num].push_back(std::make_pair(remote_process_edge->second, local_edge->second)); } } } // send new vertex indices to remote processes and receive std::vector > > received_values(num_processes); MPI::all_to_all(values_to_send, received_values); // Flatten and add received remote global vertex indices to map std::vector > >::iterator p; for (p = received_values.begin(); p != received_values.end(); ++p) { std::vector >::iterator q; for (q = p->begin(); q != p->end(); ++q) local_edge_to_new_vertex[q->first] = q->second; } // std::cout << "Process:" << process_number << " " // << num_new_vertices << " new vertices, " // << "Offset = " << global_offset // << std::endl; // Now add new vertex coordinates to existing, and index using new // global indexing. Reorder so that MeshPartitioning.cpp can find // them. After that, we are done with coordinates, and just need to // rebuild the topology. new_vertex_coordinates.insert(new_vertex_coordinates.begin(), _mesh.coordinates().begin(), _mesh.coordinates().end()); std::vector global_indices(_mesh.topology().global_indices(0)); for (std::size_t i = 0; i < num_new_vertices; i++) global_indices.push_back(i + global_offset); reorder_vertices_by_global_indices(new_vertex_coordinates, _mesh.geometry().dim(), global_indices); } //----------------------------------------------------------------------------- void ParallelRefinement::reorder_vertices_by_global_indices(std::vector& vertex_coords, const std::size_t gdim, const std::vector& global_indices) { // This is needed to interface with MeshPartitioning/LocalMeshData, // which expects the vertices in global order // This is inefficient, and needs to be addressed in MeshPartitioning.cpp // where they are redistributed again. Timer t("Parallel Refine: reorder vertices"); // FIXME: be more efficient with MPI dolfin_assert(gdim*global_indices.size() == vertex_coords.size()); boost::multi_array_ref vertex_array(vertex_coords.data(), boost::extents[vertex_coords.size()/gdim][gdim]); // Calculate size of overall global vector by finding max index value // anywhere const std::size_t global_vector_size = MPI::max(*std::max_element(global_indices.begin(), global_indices.end())) + 1; // Send unwanted values off process const std::size_t num_processes = MPI::num_processes(); std::vector > > > values_to_send(num_processes); // Go through local vector and append value to the appropriate list // to send to correct process for (std::size_t i = 0; i < vertex_array.shape()[0] ; ++i) { const std::size_t global_i = global_indices[i]; const std::size_t process_i = MPI::index_owner(global_i, global_vector_size); const std::vector v(vertex_array[i].begin(), vertex_array[i].end()); values_to_send[process_i].push_back(std::make_pair(global_i, v)); } // Redistribute the values to the appropriate process - including // self All values are "in the air" at this point, so local vector // can be cleared std::vector > > > received_values; MPI::all_to_all(values_to_send, received_values); // When receiving, just go through all received values // and place them in the local partition of the global vector. const std::pair range = MPI::local_range(global_vector_size); vertex_coords.resize((range.second - range.first)*gdim); boost::multi_array_ref new_vertex_array(vertex_coords.data(), boost::extents[range.second - range.first][gdim]); for (std::size_t i = 0; i < received_values.size(); ++i) { const std::vector > >& received_global_data = received_values[i]; for (std::size_t j = 0; j < received_global_data.size(); ++j) { const std::size_t global_i = received_global_data[j].first; dolfin_assert(global_i >= range.first && global_i < range.second); std::copy(received_global_data[j].second.begin(), received_global_data[j].second.end(), new_vertex_array[global_i - range.first].begin()); } } } //----------------------------------------------------------------------------- void ParallelRefinement::partition(Mesh& new_mesh, bool redistribute) const { LocalMeshData mesh_data; mesh_data.tdim = _mesh.topology().dim(); const std::size_t gdim = _mesh.geometry().dim(); mesh_data.gdim = gdim; mesh_data.num_vertices_per_cell = mesh_data.tdim + 1; // Copy data to LocalMeshData structures const std::size_t num_local_cells = new_cell_topology.size()/mesh_data.num_vertices_per_cell; mesh_data.num_global_cells = MPI::sum(num_local_cells); mesh_data.global_cell_indices.resize(num_local_cells); const std::size_t idx_global_offset = MPI::global_offset(num_local_cells, true); for (std::size_t i = 0; i < num_local_cells ; i++) mesh_data.global_cell_indices[i] = idx_global_offset + i; mesh_data.cell_vertices.resize(boost::extents[num_local_cells][mesh_data.num_vertices_per_cell]); std::copy(new_cell_topology.begin(), new_cell_topology.end(), mesh_data.cell_vertices.data()); const std::size_t num_local_vertices = new_vertex_coordinates.size()/gdim; mesh_data.num_global_vertices = MPI::sum(num_local_vertices); mesh_data.vertex_coordinates.resize(boost::extents[num_local_vertices][gdim]); std::copy(new_vertex_coordinates.begin(), new_vertex_coordinates.end(), mesh_data.vertex_coordinates.data()); mesh_data.vertex_indices.resize(num_local_vertices); const std::size_t vertex_global_offset = MPI::global_offset(num_local_vertices, true); for (std::size_t i = 0; i < num_local_vertices ; i++) mesh_data.vertex_indices[i] = vertex_global_offset + i; if (!redistribute) { // Set owning process rank to this process rank mesh_data.cell_partition.assign(mesh_data.global_cell_indices.size(), MPI::process_number()); } MeshPartitioning::build_distributed_mesh(new_mesh, mesh_data); } //----------------------------------------------------------------------------- void ParallelRefinement::new_cell(const Cell& cell) { for( VertexIterator v(cell); !v.end(); ++v) new_cell_topology.push_back(v->global_index()); } //----------------------------------------------------------------------------- void ParallelRefinement::new_cell(const std::size_t i0, const std::size_t i1, const std::size_t i2, const std::size_t i3) { new_cell_topology.push_back(i0); new_cell_topology.push_back(i1); new_cell_topology.push_back(i2); new_cell_topology.push_back(i3); } //----------------------------------------------------------------------------- void ParallelRefinement::new_cell(const std::size_t i0, const std::size_t i1, const std::size_t i2) { new_cell_topology.push_back(i0); new_cell_topology.push_back(i1); new_cell_topology.push_back(i2); } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/refinement/RivaraRefinement.h0000644000175000017500000000600012263014601021656 0ustar johannrjohannr// Copyright (C) 2008 Johan Jansson // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Bartosz Sawicki, 2009. // Modified by Garth N. Wells, 2010. // Modified by Anders Logg, 2010. // // First added: 2008 // Last changed: 2011-01-11 #ifndef __RIVARAREFINEMENT_H #define __RIVARAREFINEMENT_H #include #include #include #include #include namespace dolfin { // Forward declarations //class CellType; //class Mesh // FIXME: This implementation needs quite a bit of cleanup, in particular // FIXME: the DMesh class. Should be possible to use plain STL data structures // FIXME: in place of the DMesh class. class RivaraRefinement { public: /// Refine simplicial mesh locally by recursive edge bisection static void refine(Mesh& refined_mesh, const Mesh& mesh, const MeshFunction& cell_marker, MeshFunction& cell_map, std::vector& facet_map); private: class DCell; /// Vertex with list of connected cells class DVertex { public: DVertex(); int id; std::list cells; Point p; }; // Cell with parent_id, deletion marker and facets markets class DCell { public: DCell(); int id; int parent_id; std::vector vertices; bool deleted; std::vector facets; }; // Dynamic mesh for recursive Rivara refinement class DMesh { public: DMesh(); ~DMesh(); void add_vertex(DVertex* v); void add_cell(DCell* c, std::vector vs, int parent_id); void remove_cell(DCell* c); void import_mesh(const Mesh& mesh); void export_mesh(Mesh& mesh, std::vector& new2old_cell, std::vector& new2old_facet); void number(); void bisect(DCell* dcell, DVertex* hangv, DVertex* hv0, DVertex* hv1); void bisect_marked(std::vector marked_ids); DCell* opposite(DCell* dcell, DVertex* v1, DVertex* v2); void propagate_facets(DCell* dcell, DCell* c0, DCell* c1, std::size_t ii, std::size_t jj, DVertex* mv); std::list vertices; std::list cells; const CellType* cell_type; std::size_t tdim; std::size_t gdim; }; }; } #endif dolfin-1.3.0/dolfin/refinement/BisectionRefinement.h0000644000175000017500000000346612263014601022366 0ustar johannrjohannr// Copyright (C) 2006 Johan Hoffman // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Garth N. Wells, 2010-2011. // Modified by Anders Logg, 2010-2011. // // First added: 2006-11-01 // Last changed: 2011-03-12 #ifndef __BISECTION_REFINEMENT_H #define __BISECTION_REFINEMENT_H namespace dolfin { // Forward declarations class Mesh; template class MeshFunction; /// This class implements local mesh refinement by edge bisection. class BisectionRefinement { public: /// Recursively refine mesh locally by longest edge bisection /// (Rivara). Fast Rivara algorithm implementation with /// propagation of MeshFunctions and arrays for boundary /// indicators. static void refine_by_recursive_bisection(Mesh& refined_mesh, const Mesh& mesh, const MeshFunction& cell_marker); // private: /// Transform mesh data //static void transform_data(Mesh& newmesh, const Mesh& oldmesh, // const MeshFunction& cell_map, // const std::vector& facet_map); }; } #endif dolfin-1.3.0/dolfin/refinement/RegularCutRefinement.h0000644000175000017500000000703412263014601022517 0ustar johannrjohannr// Copyright (C) 2011 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2011-02-07 // Last changed: 2011-02-09 #ifndef __REGULAR_CUT_REFINEMENT_H #define __REGULAR_CUT_REFINEMENT_H #include namespace dolfin { class Cell; class Mesh; template class MeshFunction; class IndexSet; /// This class implements local mesh refinement by a regular cut of /// each cell marked for refinement in combination with propagation /// of cut edges to neighboring cells. class RegularCutRefinement { public: /// Refine mesh based on cell markers static void refine(Mesh& refined_mesh, const Mesh& mesh, const MeshFunction& cell_markers); private: // Refinement markers enum { no_refinement=-1, regular_refinement=-2, backtrack_bisection=-3, backtrack_bisection_refine=-4 }; // Compute refinement markers based on initial markers static void compute_markers(std::vector& refinement_markers, IndexSet& marked_edges, const Mesh& mesh, const MeshFunction& cell_markers); // Refine mesh based on computed markers static void refine_marked(Mesh& refined_mesh, const Mesh& mesh, const std::vector& refinement_markers, const IndexSet& marked_edges); // Count the number of marked entries static std::size_t count_markers(const std::vector& markers); // Extract index of first marked entry static std::size_t extract_edge(const std::vector& markers); // Check whether suggested refinement will produce too thin cells static bool too_thin(const Cell& cell, const std::vector& edge_markers); // Find local indices for common edge relative to cell and twin static std::pair find_common_edges(const Cell& cell, const Mesh& mesh, std::size_t bisection_twin); // Find local indices for bisection edge relative to cell and twin static std::pair find_bisection_edges(const Cell& cell, const Mesh& mesh, std::size_t bisection_twin); // Find local indices for bisection vertex relative to cell and twin static std::pair find_bisection_vertices(const Cell& cell, const Mesh& mesh, std::size_t bisection_twin, const std::pair& bisection_edges); }; } #endif dolfin-1.3.0/dolfin/refinement/ParallelRefinement.h0000644000175000017500000000710612263014601022176 0ustar johannrjohannr// Copyright (C) 2012 Chris Richardson // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // // First Added: 2013-01-02 // Last Changed: 2013-01-17 #include #include namespace dolfin { // Forward declarations class Mesh; template class EdgeFunction; template class MeshFunction; class ParallelRefinement { public: /// Create any useful parallel data about the mesh (e.g. shared /// edges) and store ParallelRefinement(const Mesh& mesh); /// Destructor ~ParallelRefinement(); /// Return marked status of edge bool is_marked(std::size_t edge_index) const; /// Mark edge by index void mark(std::size_t edge_index); /// Mark all edges in mesh void mark_all(); /// Mark all edges incident on entities indicated by refinement /// marker void mark(const MeshFunction& refinement_marker); /// Mark all incident edges of an entity void mark(const MeshEntity& cell); /// Return number of marked edges incident on this MeshEntity - /// usually a cell std::size_t marked_edge_count(const MeshEntity& cell) const; /// Transfer marked edges between processes void update_logical_edgefunction(); /// Add new vertex for each marked edge, and create /// new_vertex_coordinates and global_edge->new_vertex mapping. /// Communicate new vertices with MPI to all affected processes. void create_new_vertices(); /// Mapping of old edge (to be removed) to new global vertex /// number. Useful for forming new topology const std::map& edge_to_new_vertex() const; /// Add a new cell to the list in 3D or 2D void new_cell(const Cell& cell); void new_cell(std::size_t i0, std::size_t i1, std::size_t i2, std::size_t i3); void new_cell(std::size_t i0, std::size_t i1, std::size_t i2); /// Use vertex and topology data to partition new mesh void partition(Mesh& new_mesh, bool redistribute) const; private: // Mesh reference const Mesh& _mesh; // Shared edges between processes. In 2D, vector size is 1 boost::unordered_map > > shared_edges; // Mapping from old local edge index to new global vertex, needed // to create new topology std::map local_edge_to_new_vertex; // New storage for all coordinates when creating new vertices std::vector new_vertex_coordinates; // New storage for all cells when creating new topology std::vector new_cell_topology; // Management of marked edges std::vector marked_edges; // Reorder vertices into global order for partitioning void reorder_vertices_by_global_indices(std::vector& vertex_coords, const std::size_t gdim, const std::vector& global_indices); }; } dolfin-1.3.0/dolfin/refinement/UniformMeshRefinement.h0000644000175000017500000000216312263014601022674 0ustar johannrjohannr// Copyright (C) 2006-2010 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Garth N. Wells, 2010 // // First added: 2006-06-07 // Last changed: 2010-02-26 #ifndef __UNIFORM_MESH_REFINEMENT_H #define __UNIFORM_MESH_REFINEMENT_H namespace dolfin { class Mesh; /// This class implements uniform mesh refinement. class UniformMeshRefinement { public: /// Refine mesh uniformly static void refine(Mesh& refined_mesh, const Mesh& mesh); }; } #endif dolfin-1.3.0/dolfin/refinement/LocalMeshCoarsening.h0000644000175000017500000000451712263014601022310 0ustar johannrjohannr// Copyright (C) 2006 Johan Hoffman // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2006-11-01 #ifndef __LOCAL_MESH_COARSENING_H #define __LOCAL_MESH_COARSENING_H #include namespace dolfin { class Mesh; class Edge; class Vertex; class MeshEditor; template class MeshFunction; /// This class implements local mesh coarsening for different mesh types. class LocalMeshCoarsening { public: /// Coarsen simplicial mesh locally by edge collapse static void coarsen_mesh_by_edge_collapse(Mesh& mesh, MeshFunction& cell_marker, bool coarsen_boundary = false); private: /// Check that edge collapse is ok static bool coarsen_mesh_ok(Mesh& mesh, std::size_t edge_index, std::size_t* edge_vertex, MeshFunction& vertex_forbidden); /// Collapse edge by node deletion static void collapse_edge(Mesh& mesh, Edge& edge, Vertex& vertex_to_remove, MeshFunction& cell_to_remove, std::vector& old2new_vertex, std::vector& old2new_cell, MeshEditor& editor, std::size_t& current_cell); /// Coarsen simplicial cell by edge collapse static bool coarsen_cell(Mesh& mesh, Mesh& coarse_mesh, int cell_id, std::vector& old2new_vertex, std::vector& old2new_cell, bool coarsen_boundary = false); }; } #endif dolfin-1.3.0/dolfin/refinement/refine.cpp0000644000175000017500000000647112263014601020234 0ustar johannrjohannr// Copyright (C) 2010 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Anders Logg, 2010-2011. // // First added: 2010-02-10 // Last changed: 2013-01-13 #include #include #include "UniformMeshRefinement.h" #include "LocalMeshRefinement.h" #include "ParallelRefinement2D.h" #include "ParallelRefinement3D.h" #include "refine.h" using namespace dolfin; //----------------------------------------------------------------------------- dolfin::Mesh dolfin::refine(const Mesh& mesh, bool redistribute) { Mesh refined_mesh; refine(refined_mesh, mesh, redistribute); return refined_mesh; } //----------------------------------------------------------------------------- void dolfin::refine(Mesh& refined_mesh, const Mesh& mesh, bool redistribute) { // Topological dimension const std::size_t D = mesh.topology().dim(); // Dispatch to appropriate refinement function if(MPI::num_processes() == 1) UniformMeshRefinement::refine(refined_mesh, mesh); else if(D == 2) ParallelRefinement2D::refine(refined_mesh, mesh, redistribute); else if(D == 3) ParallelRefinement3D::refine(refined_mesh, mesh, redistribute); else { dolfin_error("refine.cpp", "refine mesh", "Cannot refine mesh of topological dimension %d in parallel. Only 2D and 3D supported", D); } } //----------------------------------------------------------------------------- dolfin::Mesh dolfin::refine(const Mesh& mesh, const MeshFunction& cell_markers, bool redistribute) { Mesh refined_mesh; refine(refined_mesh, mesh, cell_markers, redistribute); return refined_mesh; } //----------------------------------------------------------------------------- void dolfin::refine(Mesh& refined_mesh, const Mesh& mesh, const MeshFunction& cell_markers, bool redistribute) { // Topological dimension const std::size_t D = mesh.topology().dim(); // Dispatch to appropriate refinement function if (MPI::num_processes() == 1) LocalMeshRefinement::refine(refined_mesh, mesh, cell_markers); else if (D == 2) { ParallelRefinement2D::refine(refined_mesh, mesh, cell_markers, redistribute); } else if (D == 3) { ParallelRefinement3D::refine(refined_mesh, mesh, cell_markers, redistribute); } else { dolfin_error("refine.cpp", "refine mesh", "Cannot refine mesh of topological dimension %d in parallel. Only 2D and 3D supported", D); } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/refinement/BisectionRefinement.cpp0000644000175000017500000001455612263014601022723 0ustar johannrjohannr// Copyright (C) 2006 Johan Hoffman // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Anders Logg, 2009-2011. // Modified by Garth N. Wells, 2010-2011. // Modified by Marie E. Rognes, 2011. // // First added: 2006-11-01 // Last changed: 2011-04-07 #include #include #include #include #include #include #include "RivaraRefinement.h" #include "BisectionRefinement.h" using namespace dolfin; //----------------------------------------------------------------------------- void BisectionRefinement::refine_by_recursive_bisection(Mesh& refined_mesh, const Mesh& mesh, const MeshFunction& cell_marker) { not_working_in_parallel("BisectionRefinement::refine"); // Transformation maps MeshFunction cell_map; std::vector facet_map; // Call Rivara refinement RivaraRefinement::refine(refined_mesh, mesh, cell_marker, cell_map, facet_map); // Store child->parent cell and facet information as mesh data const std::size_t D = refined_mesh.topology().dim(); std::vector& cf = refined_mesh.data().create_array("parent_cell", D); cf.resize(refined_mesh.num_cells()); for(std::size_t i = 0; i < refined_mesh.num_cells(); i++) cf[i] = cell_map[i]; // Create mesh function in refined mesh encoding parent facet maps refined_mesh.init(D - 1); std::vector& ff = refined_mesh.data().create_array("parent_facet", D - 1); ff.resize(refined_mesh.num_facets()); // Fill ff from facet_map mesh.init(D, D - 1); refined_mesh.init(D - 1, D); const std::size_t orphan = mesh.num_facets() + 1; for (FacetIterator facet(refined_mesh); !facet.end(); ++facet) { // Extract (arbitrary) cell that this facet belongs to Cell cell(refined_mesh, facet->entities(D)[0]); // Extract local facet number of this facet with that cell const std::size_t local_facet = cell.index(*facet); // Extract local facet index of parent cell (using facet_map) const std::size_t index = cell.index()*(D + 1) + local_facet; const int parent_local_facet_index = facet_map[index]; // Ignore if orphaned facet if (parent_local_facet_index == -1) { ff[facet->index()] = orphan; continue; } // Get parent cell Cell parent_cell(mesh, cf[cell.index()]); // Figure out global facet number of local facet number of parent const std::size_t parent_facet_index = parent_cell.entities(D - 1)[parent_local_facet_index]; // Assign parent facet index to this facet ff[facet->index()] = parent_facet_index; } } /* //----------------------------------------------------------------------------- void BisectionRefinement::transform_data(Mesh& newmesh, const Mesh& oldmesh, const MeshFunction& cell_map, const std::vector& facet_map) { newmesh.data().clear(); // Rewrite materials if (oldmesh.data().mesh_function("material_indicators")) { boost::shared_ptr > mat; mat = newmesh.data().create_mesh_function("material_indicators", newmesh.type().dim()); for(std::size_t i=0; i < newmesh.num_cells(); i++) (*mat)[i] = (*oldmesh.data().mesh_function("material_indicators"))[cell_map[i]]; log(TRACE, "MeshData MeshFunction \"material_indicators\" transformed."); } // Rewrite boundary indicators if (oldmesh.data().array("boundary facet cells") && oldmesh.data().array("boundary facet numbers") && oldmesh.data().array("boundary indicators")) { std::size_t num_ent = oldmesh.type().num_entities(0); std::vector* bfc = oldmesh.data().array("boundary facet cells"); std::vector* bfn = oldmesh.data().array("boundary facet numbers"); std::vector* bi = oldmesh.data().array("boundary indicators"); std::size_t bi_table_size = oldmesh.num_cells()*num_ent; std::vector bi_table; bi_table.resize(bi_table_size); for(std::size_t i= 0 ; i< bi_table_size; i++) bi_table[i] = -1; for(std::size_t i = 0; i < bi->size(); i++) bi_table[(*bfc)[i]*num_ent+(*bfn)[i]] = (*bi)[i]; // Empty loop to count elements std::size_t bi_size = 0; for(std::size_t c = 0; c < newmesh.num_cells(); c++) { for(std::size_t f = 0; f < num_ent; f++) { if (facet_map[c*num_ent+f] != -1) { std::size_t table_map = cell_map[c]*num_ent + facet_map[c*num_ent+f]; if (bi_table[table_map] != -1) bi_size++; } } } // Create new MeshData std::vectors for boundary indicators std::vector* bfc_new = newmesh.data().create_array("boundary facet cells", bi_size); std::vector* bfn_new = newmesh.data().create_array("boundary facet numbers", bi_size); std::vector* bi_new = newmesh.data().create_array("boundary indicators", bi_size); // Main transformation loop std::size_t number_bi = 0; for(std::size_t c = 0; c < newmesh.num_cells(); c++) { for(std::size_t f = 0; f < num_ent; f++) { if (facet_map[c*num_ent+f] != -1) { std::size_t table_map = cell_map[c]*num_ent + facet_map[c*num_ent+f]; if (bi_table[table_map] != -1) { (*bfc_new)[number_bi] = c; (*bfn_new)[number_bi] = f; (*bi_new)[number_bi] = bi_table[table_map]; number_bi++; } } } } log(TRACE, "MeshData \"boundary indicators\" transformed."); } } //----------------------------------------------------------------------------- */ dolfin-1.3.0/dolfin/refinement/ParallelRefinement3D.h0000644000175000017500000000327512263014601022370 0ustar johannrjohannr// Copyright (C) 2013 Chris Richardson // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // // First Added: 2013-01-02 // Last Changed: 2013-01-17 namespace dolfin { class Mesh; class Edge; class Cell; class ParallelRefinement; /// Simple class to perform uniform refinement in 3D in parallel class ParallelRefinement3D { public: // Uniform refine static void refine(Mesh& new_mesh, const Mesh& mesh, bool redistribute); // Refine with markers static void refine(Mesh& new_mesh, const Mesh& mesh, const MeshFunction& refinement_marker, bool redistribute); private: // Full refinement of a tetrahedral cell static void eightfold_division(const Cell& cell, ParallelRefinement& p); // Work out vertices which are shared by both, one or neither edge static std::vector common_vertices(const Cell& cell, const std::size_t edge0, const std::size_t edge1); }; } dolfin-1.3.0/dolfin/refinement/refine.h0000644000175000017500000000725212263014601017677 0ustar johannrjohannr// Copyright (C) 2010 Garth N. Wells // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Anders Logg, 2010. // // First added: 2010-02-10 // Last changed: 2013-05-12 // // This file defines free functions for mesh refinement. // #ifndef __DOLFIN_REFINE_H #define __DOLFIN_REFINE_H namespace dolfin { // Forward declarations class Mesh; template class MeshFunction; /// Create uniformly refined mesh /// /// *Arguments* /// mesh (_Mesh_) /// The mesh to refine. /// redistribute (_bool_) /// Optional argument to redistribiute the refined mesh if mesh is a /// distributed mesh. /// /// *Returns* /// _Mesh_ /// The refined mesh. /// /// *Example* /// .. code-block:: c++ /// /// mesh = refine(mesh); /// Mesh refine(const Mesh& mesh, bool redistribute = true); /// Create uniformly refined mesh /// /// *Arguments* /// refined_mesh (_Mesh_) /// The mesh that will be the refined mesh. /// mesh (_Mesh_) /// The original mesh. /// redistribute (_bool_) /// Optional argument to redistribiute the refined mesh if mesh is a /// distributed mesh. void refine(Mesh& refined_mesh, const Mesh& mesh, bool redistribute = true); /// Create locally refined mesh /// /// *Arguments* /// mesh (_Mesh_) /// The mesh to refine. /// cell_markers (_MeshFunction_ ) /// A mesh function over booleans specifying which cells /// that should be refined (and which should not). /// redistribute (_bool_) /// Optional argument to redistribiute the refined mesh if mesh is a /// distributed mesh. /// /// *Returns* /// _Mesh_ /// The locally refined mesh. /// /// *Example* /// .. code-block:: c++ /// /// CellFunction cell_markers(mesh); /// cell_markers.set_all(false); /// Point origin(0.0, 0.0, 0.0); /// for (CellIterator cell(mesh); !cell.end(); ++cell) /// { /// Point p = cell->midpoint(); /// if (p.distance(origin) < 0.1) /// cell_markers[*cell] = true; /// } /// mesh = refine(mesh, cell_markers); /// Mesh refine(const Mesh& mesh, const MeshFunction& cell_markers, bool redistribute = true); /// Create locally refined mesh /// /// *Arguments* /// refined_mesh (_Mesh_) /// The mesh that will be the refined mesh. /// mesh (_Mesh_) /// The original mesh. /// cell_markers (_MeshFunction_ ) /// A mesh function over booleans specifying which cells /// that should be refined (and which should not). /// redistribute (_bool_) /// Optional argument to redistribiute the refined mesh if mesh is a /// distributed mesh. void refine(Mesh& refined_mesh, const Mesh& mesh, const MeshFunction& cell_markers, bool redistribute = true); } #endif dolfin-1.3.0/dolfin/refinement/RivaraRefinement.cpp0000644000175000017500000003053312263014601022221 0ustar johannrjohannr// Copyright (C) 2008 Johan Jansson // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Bartosz Sawicki, 2009. // Modified by Garth N. Wells, 2010. // Modified by Anders Logg, 2010. // // First added: 2008 // Last changed: 2011-03-17 #include #include #include #include #include #include "RivaraRefinement.h" using namespace dolfin; //----------------------------------------------------------------------------- void RivaraRefinement::refine(Mesh& refined_mesh, const Mesh& mesh, const MeshFunction& cell_marker, MeshFunction& cell_map, std::vector& facet_map) { log(TRACE, "Refining simplicial mesh by recursive Rivara bisection."); // Create dynamic mesh and import data DMesh dmesh; dmesh.import_mesh(mesh); // Rewrite MeshFunction into vector std::vector dmarked(mesh.num_cells()); for (CellIterator ci(mesh); !ci.end(); ++ci) { if(cell_marker[*ci] == true) dmarked[ci->index()] = true; else dmarked[ci->index()] = false; } // Main refinement algorithm dmesh.bisect_marked(dmarked); // Remove deleted cells from global list for(std::list::iterator it = dmesh.cells.begin(); it != dmesh.cells.end(); ) { DCell* dc = *it; if(dc->deleted) { delete *it; it = dmesh.cells.erase(it); } else it++; } // Vector for cell and facet mappings std::vector new2old_cell_arr; std::vector new2old_facet_arr; // Refine mesh dmesh.export_mesh(refined_mesh, new2old_cell_arr, new2old_facet_arr); // Generate cell mesh function map cell_map.init(refined_mesh, mesh.topology().dim()); for (CellIterator c(refined_mesh); !c.end(); ++c) cell_map[*c] = new2old_cell_arr[c->index()]; // Generate facet map array std::vector new_facet_map(new2old_facet_arr.size()); facet_map = new_facet_map; for (std::size_t i = 0; i < new2old_facet_arr.size(); i++) { facet_map[i] = new2old_facet_arr[i]; } } //----------------------------------------------------------------------------- RivaraRefinement::DVertex::DVertex() : id(0), cells(0), p(0.0, 0.0, 0.0) { // Do nothing } //----------------------------------------------------------------------------- RivaraRefinement::DCell::DCell() : id(0), parent_id(0), vertices(0), deleted(false), facets(0) { // Do nothing } //----------------------------------------------------------------------------- RivaraRefinement::DMesh::DMesh() : vertices(0), cells(0) { // Do nothing } //----------------------------------------------------------------------------- RivaraRefinement::DMesh::~DMesh() { // Delete allocated DVertices for (std::list::iterator it = vertices.begin(); it != vertices.end(); ++it) { delete *it; } // Delete allocated DCells for (std::list::iterator it = cells.begin(); it != cells.end(); ++it) { delete *it; } } //----------------------------------------------------------------------------- void RivaraRefinement::DMesh::import_mesh(const Mesh& mesh) { cell_type = &(mesh.type()); tdim = mesh.topology().dim(); gdim = mesh.geometry().dim(); vertices.clear(); cells.clear(); // Import vertices std::vector vertexvec; for (VertexIterator vi(mesh); !vi.end(); ++vi) { DVertex* dv = new DVertex; dv->p = vi->point(); dv->id = vi->index(); add_vertex(dv); vertexvec.push_back(dv); } // Import cells for (CellIterator ci(mesh); !ci.end(); ++ci) { DCell* dc = new DCell; std::vector vs(ci->num_entities(0)); std::size_t counter = 0; for (VertexIterator vi(*ci); !vi.end(); ++vi) { DVertex* dv = vertexvec[vi->index()]; vs[counter] = dv; counter++; } // Initialize facets for (std::size_t i = 0; i < cell_type->num_entities(0); i++) dc->facets.push_back(i); add_cell(dc, vs, ci->index()); // Define the same cell numbering dc->id = ci->index(); } } //----------------------------------------------------------------------------- void RivaraRefinement::DMesh::export_mesh(Mesh& mesh, std::vector& new2old_cell, std::vector& new2old_facet) { number(); new2old_cell.resize(cells.size()); new2old_facet.resize(cells.size()*cell_type->num_entities(0)); MeshEditor editor; editor.open(mesh, cell_type->cell_type(), tdim, gdim); editor.init_vertices(vertices.size()); editor.init_cells(cells.size()); // Add vertices std::size_t current_vertex = 0; for (std::list::iterator it = vertices.begin(); it != vertices.end(); ++it) { DVertex* dv = *it; editor.add_vertex(current_vertex, dv->p); current_vertex++; } std::vector cell_vertices(cell_type->num_entities(0)); std::size_t current_cell = 0; for (std::list::iterator it = cells.begin(); it != cells.end(); ++it) { const DCell* dc = *it; for (std::size_t j = 0; j < dc->vertices.size(); j++) { const DVertex* dv = dc->vertices[j]; cell_vertices[j] = dv->id; } editor.add_cell(current_cell, cell_vertices); new2old_cell[current_cell] = dc->parent_id; for (std::size_t j = 0; j < dc->facets.size(); j++) { std::size_t index = cell_type->num_entities(0)*current_cell + j; new2old_facet[ index ] = dc->facets[j]; } current_cell++; } editor.close(); } //----------------------------------------------------------------------------- void RivaraRefinement::DMesh::number() { std::size_t i = 0; for (std::list::iterator it = cells.begin(); it != cells.end(); ++it) { DCell* dc = *it; dc->id = i; i++; } } //----------------------------------------------------------------------------- void RivaraRefinement::DMesh::bisect(DCell* dcell, DVertex* hangv, DVertex* hv0, DVertex* hv1) { bool closing = false; // Find longest edge double lmax = 0.0; std::size_t ii = 0; std::size_t jj = 0; for(std::size_t i = 0; i < dcell->vertices.size(); i++) { for(std::size_t j = 0; j < dcell->vertices.size(); j++) { if(i != j) { const double l = dcell->vertices[i]->p.distance(dcell->vertices[j]->p); if(l >= lmax) { ii = i; jj = j; lmax = l; } } } } DVertex* v0 = dcell->vertices[ii]; DVertex* v1 = dcell->vertices[jj]; DVertex* mv = 0; // Check if no hanging vertices remain, otherwise create hanging // vertex and continue refinement if((v0 == hv0 || v0 == hv1) && (v1 == hv0 || v1 == hv1)) { mv = hangv; closing = true; } else { mv = new DVertex; mv->p = (dcell->vertices[ii]->p + dcell->vertices[jj]->p) / 2.0; mv->id = vertices.size(); add_vertex(mv); closing = false; } if(ii>jj) { std::size_t tmp = ii; ii = jj; jj = tmp; } // Create new cells & keep them ordered DCell* c0 = new DCell; DCell* c1 = new DCell; std::vector vs0(0); std::vector vs1(0); bool pushed0 = false; bool pushed1 = false; for(std::size_t i = 0; i < dcell->vertices.size(); i++) { if (i != ii) { if (mv->id < dcell->vertices[i]->id && !pushed1) { vs1.push_back(mv); pushed1 = true; } vs1.push_back(dcell->vertices[i]); } if(i != jj) { if( (mv->id < dcell->vertices[i]->id) && !pushed0 ) { vs0.push_back(mv); pushed0 = true; } vs0.push_back(dcell->vertices[i]); } } if( !pushed0 ) vs0.push_back(mv); if( !pushed1 ) vs1.push_back(mv); add_cell(c0, vs0, dcell->parent_id); add_cell(c1, vs1, dcell->parent_id); propagate_facets(dcell, c0, c1, ii, jj, mv); remove_cell(dcell); // Continue refinement if (!closing) { // Bisect opposite cell of edge with hanging node for (;;) { DCell* copp = opposite(dcell, v0, v1); if (copp != 0) bisect(copp, mv, v0, v1); else break; } } } //----------------------------------------------------------------------------- RivaraRefinement::DCell* RivaraRefinement::DMesh::opposite(DCell* dcell, DVertex* v1, DVertex* v2) { for (std::list::iterator it = v1->cells.begin(); it != v1->cells.end(); ++it) { DCell* c = *it; if (c != dcell) { std::size_t matches = 0; for (std::size_t i = 0; i < c->vertices.size(); i++) { if (c->vertices[i] == v1 || c->vertices[i] == v2) matches++; } if (matches == 2) return c; } } return 0; } //----------------------------------------------------------------------------- void RivaraRefinement::DMesh::add_vertex(DVertex* v) { vertices.push_back(v); } //----------------------------------------------------------------------------- void RivaraRefinement::DMesh::add_cell(DCell* c, std::vector vs, int parent_id) { for (std::size_t i = 0; i < vs.size(); i++) { DVertex* v = vs[i]; c->vertices.push_back(v); v->cells.push_back(c); } cells.push_back(c); c->parent_id = parent_id; } //----------------------------------------------------------------------------- void RivaraRefinement::DMesh::remove_cell(DCell* c) { for (std::size_t i = 0; i < c->vertices.size(); ++i) { DVertex* v = c->vertices[i]; v->cells.remove(c); } c->deleted = true; } //----------------------------------------------------------------------------- void RivaraRefinement::DMesh::bisect_marked(std::vector marked_ids) { std::list marked_cells; for (std::list::iterator it = cells.begin(); it != cells.end(); ++it) { DCell* c = *it; if (marked_ids[c->id]) marked_cells.push_back(c); } for (std::list::iterator it = marked_cells.begin(); it != marked_cells.end(); ++it) { DCell* c = *it; if(!c->deleted) bisect(c, 0, 0, 0); } } //----------------------------------------------------------------------------- void RivaraRefinement::DMesh::propagate_facets(DCell* dcell, DCell* c0, DCell* c1, std::size_t ii, std::size_t jj, DVertex* mv) { // Initialize local facets std::vector facets0(tdim + 1); std::vector facets1(tdim + 1); for(std::size_t i = 0; i < tdim + 1; i++) { facets0[i] = -2; facets1[i] = -2; } // New facets if (mv->id < dcell->vertices[ii]->id) facets0[ii+1] = -1; else facets0[ii] = -1; if (mv->id < dcell->vertices[jj]->id) facets1[jj] = -1; else facets1[jj-1] = -1; // Changed facets int c0i = 0; int c1i = 0; for (std::size_t i = 0; i < tdim + 1; i++) { if ( mv->id > c0->vertices[i]->id ) c0i++; if ( mv->id > c1->vertices[i]->id ) c1i++; } facets0[c0i] = jj; facets1[c1i] = ii; // Untouched facets std::vector rest; for (std::size_t i = 0; i < tdim + 1; i++) { if(i != ii && i != jj) rest.push_back(i); } int j = 0, k = 0; for(std::size_t i = 0; i < tdim + 1; i++) { if(facets0[i] == -2) facets0[i] = rest[j++]; if(facets1[i] == -2) facets1[i] = rest[k++]; } // Rewrite facets whenever different that -1 // ( -1 for new, internal facets ) for (std::size_t i = 0; i < tdim + 1; i++) { if (facets0[i] != -1) c0->facets.push_back(dcell->facets[facets0[i]]); else c0->facets.push_back(-1); if (facets1[i] != -1) c1->facets.push_back(dcell->facets[facets1[i]]); else c1->facets.push_back(-1); } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/refinement/dolfin_refinement.h0000644000175000017500000000022012263014601022102 0ustar johannrjohannr#ifndef __DOLFIN_REFINEMENT_H #define __DOLFIN_REFINEMENT_H // DOLFIN mesh refinement interface #include #endif dolfin-1.3.0/dolfin/refinement/ParallelRefinement3D.cpp0000644000175000017500000003252612263014601022724 0ustar johannrjohannr// Copyright (C) 2012 Chris Richardson // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // // First Added: 2012-12-19 // Last Changed: 2013-01-23 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "ParallelRefinement3D.h" using namespace dolfin; //----------------------------------------------------------------------------- void ParallelRefinement3D::refine(Mesh& new_mesh, const Mesh& mesh, bool redistribute) { Timer t0("Parallel-refine 3D"); if (MPI::num_processes()==1) { dolfin_error("ParallelRefinement3D.cpp", "refine mesh", "Only works in parallel"); } const std::size_t tdim = mesh.topology().dim(); const std::size_t gdim = mesh.geometry().dim(); if (tdim != 3 || gdim != 3) { dolfin_error("ParallelRefinement3D.cpp", "refine mesh", "Only works in 3D"); } // Ensure connectivity is there etc mesh.init(1); mesh.init(1, tdim); // Instantiate a class to hold most of the refinement information ParallelRefinement p(mesh); // Mark all edges, and create new vertices p.mark_all(); p.create_new_vertices(); // Generate new topology for (CellIterator cell(mesh); !cell.end(); ++cell) eightfold_division(*cell, p); t0.stop(); p.partition(new_mesh, redistribute); } //----------------------------------------------------------------------------- void ParallelRefinement3D::refine(Mesh& new_mesh, const Mesh& mesh, const MeshFunction& refinement_marker, bool redistribute) { const std::size_t tdim = mesh.topology().dim(); // boost::shared_ptr > mesh_in_array // = mesh.data().array("experimental_data"); // process information about previous refinement, if any // if(mesh_in_array != 0) // { // // } warning("ParallelRefinement3D does not take care of mesh quality.\n Multiple levels of refinement may generate bad quality tetrahedra."); // Ensure connectivity from cells to edges mesh.init(1); mesh.init(1, tdim); ParallelRefinement p(mesh); // Mark all edges of marked cells p.mark(refinement_marker); std::size_t update_count = 1; // Ensure consistent rules are applied to all cells // 1. The number of marked edges can be 0, 1, 2, 3 or 6 // // 2. If three edges are marked, they must be on the same face, // otherwise mark all edges of the cell. // // 3. Iterate until no more edges need to be marked while (update_count != 0) { update_count = 0; // Transmit shared marked edges p.update_logical_edgefunction(); for (CellIterator cell(mesh); !cell.end(); ++cell) { const std::size_t n_marked = p.marked_edge_count(*cell); // If more than 3 edges are already marked, mark all edges if (n_marked == 4 || n_marked == 5) { p.mark(*cell); ++update_count; } // With 3 marked edges, they must be all on the same face, // otherwise, mark all edges if (n_marked == 3) { std::size_t nmax = 0; for (FaceIterator face(*cell); !face.end(); ++face) { const std::size_t n_face = p.marked_edge_count(*face); nmax = (n_face > nmax) ? n_face : nmax; } if (nmax != 3) { p.mark(*cell); ++update_count; } } } update_count = MPI::sum(update_count); } // All cells now have either 0, 1, 2, 3* or 6 edges marked. // * (3 are all on the same face) // Create new vertices p.create_new_vertices(); const std::map& edge_to_new_vertex = p.edge_to_new_vertex(); // Convenience iterator std::map::const_iterator it; // Create new topology for (CellIterator cell(mesh); !cell.end(); ++cell) { VertexIterator v(*cell); EdgeIterator e(*cell); std::vector marked_edges; for (std::size_t j = 0 ; j < 6 ; ++j) { if (p.is_marked(e[j].index())) marked_edges.push_back(j); } if (marked_edges.size() == 0) //straight copy of cell (1->1) p.new_cell(*cell); else if (marked_edges.size() == 1) // "green" refinement (bisection) { const std::size_t new_edge = marked_edges[0]; it = edge_to_new_vertex.find(e[new_edge].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t v_new = it->second; VertexIterator vn(e[new_edge]); const std::size_t v_near_0 = vn[0].global_index(); const std::size_t v_near_1 = vn[1].global_index(); // opposite edges always add up to 5 const std::size_t opp_edge = 5 - new_edge; VertexIterator vf(e[opp_edge]); const std::size_t v_far_0 = vf[0].global_index(); const std::size_t v_far_1 = vf[1].global_index(); p.new_cell(v_far_0, v_far_1, v_new, v_near_0); p.new_cell(v_far_0, v_far_1, v_new, v_near_1); } else if (marked_edges.size() == 2) { const std::size_t new_edge_0 = marked_edges[0]; const std::size_t new_edge_1 = marked_edges[1]; it = edge_to_new_vertex.find(e[new_edge_0].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e0 = it->second; it = edge_to_new_vertex.find(e[new_edge_1].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e1 = it->second; // Opposite edges add up to 5 // This is effectively a double bisection if ( (new_edge_0 + new_edge_1) == 5) { VertexIterator v0(e[new_edge_0]); VertexIterator v1(e[new_edge_1]); const std::size_t e0v0 = v0[0].global_index(); const std::size_t e0v1 = v0[1].global_index(); const std::size_t e1v0 = v1[0].global_index(); const std::size_t e1v1 = v1[1].global_index(); p.new_cell(e0, e1, e0v0, e1v0); p.new_cell(e0, e1, e0v1, e1v0); p.new_cell(e0, e1, e0v0, e1v1); p.new_cell(e0, e1, e0v1, e1v1); } else { // Both edges on same face. In this case, there is a choice of // how to divide the face with two splitting edges. In order // to be consistent across the mesh, always cut on the // shortest distance in the bottom trapezoid. If distances // measure as equal, use the global index to decide. const std::vector com_v = common_vertices(*cell, new_edge_0, new_edge_1); const std::size_t v_far = Vertex(mesh, com_v[0]).global_index(); const std::size_t v_leg_0 = Vertex(mesh, com_v[1]).global_index(); const std::size_t v_leg_1 = Vertex(mesh, com_v[2]).global_index(); const std::size_t v_common = Vertex(mesh, com_v[3]).global_index(); // Find distance across trapezoid const Point p_leg_0 = Vertex(mesh, com_v[1]).point(); const Point p_leg_1 = Vertex(mesh, com_v[2]).point(); const double d0 = p_leg_0.distance(e[new_edge_1].midpoint()); const double d1 = p_leg_1.distance(e[new_edge_0].midpoint()); // Add 'top cell' always the same p.new_cell(v_far, v_common, e0, e1); // Choose bottom cell consistently if (d0 > d1 || (d0 == d1 && v_leg_0 > v_leg_1)) { p.new_cell(v_far, e0, e1, v_leg_1); p.new_cell(v_far, e0, v_leg_0, v_leg_1); } else { p.new_cell(v_far, e1, e0, v_leg_0); p.new_cell(v_far, e1, v_leg_1, v_leg_0); } } } else if (marked_edges.size() == 3) // refinement of one face into 4 triangles { // Assumes edges are on one face - will break otherwise it = edge_to_new_vertex.find(e[marked_edges[0]].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e0 = it->second; it = edge_to_new_vertex.find(e[marked_edges[1]].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e1 = it->second; it = edge_to_new_vertex.find(e[marked_edges[2]].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e2 = it->second; const std::vector com_v = common_vertices(*cell, marked_edges[0], marked_edges[1]); const std::size_t v_far = Vertex(mesh, com_v[0]).global_index(); const std::size_t v20 = Vertex(mesh, com_v[1]).global_index(); const std::size_t v12 = Vertex(mesh, com_v[2]).global_index(); const std::size_t v01 = Vertex(mesh, com_v[3]).global_index(); p.new_cell(v_far, e0, e1, e2); p.new_cell(v_far, e0, v01, e1); p.new_cell(v_far, e1, v12, e2); p.new_cell(v_far, e2, v20, e0); } else if (marked_edges.size() == 6) eightfold_division(*cell, p); } p.partition(new_mesh, redistribute); // Save some data about partial refinements to assist with future subdivision // boost::shared_ptr > mesh_out_array = // new_mesh.data().create_array("experimental_data"); } //----------------------------------------------------------------------------- std::vector ParallelRefinement3D::common_vertices(const Cell& cell, const std::size_t edge0, const std::size_t edge1) { // Order the four vertex indices of cell so that // result[0] is in neither edge // result[1] is only in e0 // result[2] is only in e1 // result[3] is in both edges std::vector result(4); EdgeIterator e(cell); const Edge e0 = e[edge0]; const Edge e1 = e[edge1]; bool found_common = false; for (VertexIterator vc(cell); !vc.end(); ++vc) { std::size_t idx = 2*(std::size_t)(e1.incident(*vc)) + (std::size_t)(e0.incident(*vc)); if (idx == 3) found_common = true; result[idx]=vc->index(); } // If edges do not share any vertices, output will be garbage dolfin_assert(found_common); return result; } //----------------------------------------------------------------------------- void ParallelRefinement3D::eightfold_division(const Cell& cell, ParallelRefinement& p) { VertexIterator v(cell); EdgeIterator e(cell); const std::size_t v0 = v[0].global_index(); const std::size_t v1 = v[1].global_index(); const std::size_t v2 = v[2].global_index(); const std::size_t v3 = v[3].global_index(); const std::map& edge_to_new_vertex = p.edge_to_new_vertex(); // Convenience iterator std::map::const_iterator it; it = edge_to_new_vertex.find(e[0].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e0 = it->second; it = edge_to_new_vertex.find(e[1].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e1 = it->second; it = edge_to_new_vertex.find(e[2].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e2 = it->second; it = edge_to_new_vertex.find(e[3].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e3 = it->second; it = edge_to_new_vertex.find(e[4].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e4 = it->second; it = edge_to_new_vertex.find(e[5].index()); dolfin_assert(it != edge_to_new_vertex.end()); const std::size_t e5 = it->second; p.new_cell(v0, e3, e4, e5); p.new_cell(v1, e1, e2, e5); p.new_cell(v2, e0, e2, e4); p.new_cell(v3, e0, e1, e3); const Point p0 = e[0].midpoint(); const Point p1 = e[1].midpoint(); const Point p2 = e[2].midpoint(); const Point p3 = e[3].midpoint(); const Point p4 = e[4].midpoint(); const Point p5 = e[5].midpoint(); const double d05 = p0.distance(p5); const double d14 = p1.distance(p4); const double d23 = p2.distance(p3); // Then divide the remaining octahedron into 4 tetrahedra if (d05 <= d14 && d14 <= d23) { p.new_cell(e0, e1, e2, e5); p.new_cell(e0, e1, e3, e5); p.new_cell(e0, e2, e4, e5); p.new_cell(e0, e3, e4, e5); } else if (d14 <= d23) { p.new_cell(e0, e1, e2, e4); p.new_cell(e0, e1, e3, e4); p.new_cell(e1, e2, e4, e5); p.new_cell(e1, e3, e4, e5); } else { p.new_cell(e0, e1, e2, e3); p.new_cell(e0, e2, e3, e4); p.new_cell(e1, e2, e3, e5); p.new_cell(e2, e3, e4, e5); } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/function/0000755000175000017500000000000012263014601015741 5ustar johannrjohannrdolfin-1.3.0/dolfin/function/Constant.h0000644000175000017500000000724512263014601017713 0ustar johannrjohannr// Copyright (C) 2006-2009 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Martin Sandve Alnes, 2008. // Modified by Garth N. Wells, 2008-2011. // // First added: 2006-02-09 // Last changed: 2011-05-15 #ifndef __CONSTANT_H #define __CONSTANT_H #include #include "Expression.h" namespace dolfin { class Mesh; /// This class represents a constant-valued expression. class Constant : public Expression { public: /// Create scalar constant /// /// *Arguments* /// value (double) /// The scalar to create a Constant object from. /// /// *Example* /// .. code-block:: c++ /// /// Constant c(1.0); /// explicit Constant(double value); /// Create vector constant (dim = 2) /// /// *Arguments* /// value0 (double) /// The first vector element. /// value1 (double) /// The second vector element. /// /// *Example* /// .. code-block:: c++ /// /// Constant B(0.0, 1.0); /// Constant(double value0, double value1); /// Create vector constant (dim = 3) /// /// *Arguments* /// value0 (double) /// The first vector element. /// value1 (double) /// The second vector element. /// value2 (double) /// The third vector element. /// /// *Example* /// .. code-block:: c++ /// /// Constant T(0.0, 1.0, 0.0); /// Constant(double value0, double value1, double value2); /// Create vector-valued constant /// /// *Arguments* /// values (std::vector) /// Values to create a vector-valued constant from. explicit Constant(std::vector values); /// Create tensor-valued constant for flattened array of values /// /// *Arguments* /// value_shape (std::vector) /// Shape of tensor. /// values (std::vector) /// Values to create tensor-valued constant from. Constant(std::vector value_shape, std::vector values); /// Copy constructor /// /// *Arguments* /// constant (_Constant_) /// Object to be copied. Constant(const Constant& constant); /// Destructor ~Constant(); /// Assignment operator /// /// *Arguments* /// constant (_Constant_) /// Another constant. const Constant& operator= (const Constant& constant); /// Assignment operator /// /// *Arguments* /// constant (double) /// Another constant. const Constant& operator= (double constant); /// Cast to double (for scalar constants) /// /// *Returns* /// double /// The scalar value. operator double() const; //--- Implementation of Expression interface --- void eval(Array& values, const Array& x) const; private: // Values of constant function std::vector _values; }; } #endif dolfin-1.3.0/dolfin/function/GenericFunction.cpp0000644000175000017500000001377712263014601021546 0ustar johannrjohannr// Copyright (C) 2009-2013 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2009-09-28 // Last changed: 2013-02-27 #include #include #include #include "GenericFunction.h" using namespace dolfin; //----------------------------------------------------------------------------- GenericFunction::GenericFunction() : Variable("u", "a function") { // Do nothing } //----------------------------------------------------------------------------- GenericFunction::~GenericFunction() { // Do nothing } //----------------------------------------------------------------------------- void GenericFunction::eval(Array& values, const Array& x, const ufc::cell& cell) const { // Redirect to simple eval eval(values, x); } //----------------------------------------------------------------------------- void GenericFunction::eval(Array& values, const Array& x) const { dolfin_error("GenericFunction.cpp", "evaluate function", "Missing eval() function (must be overloaded)"); } //----------------------------------------------------------------------------- double GenericFunction::operator() (double x) { // Check that function is scalar if (value_rank() != 0) { dolfin_error("GenericFunction.cpp", "evaluate function at point", "Function is not scalar"); } // Set up Array arguments Array values(1); const Array _x(1, &x); // Call eval eval(values, _x); // Return value return values[0]; } //----------------------------------------------------------------------------- double GenericFunction::operator() (double x, double y) { // Check that function is scalar if (value_rank() != 0) { dolfin_error("GenericFunction.cpp", "evaluate function at point", "Function is not scalar"); } // Set up Array arguments Array values(1); Array _x(2); _x[0] = x; _x[1] = y; // Call eval eval(values, _x); // Return value return values[0]; } //----------------------------------------------------------------------------- double GenericFunction::operator() (double x, double y, double z) { // Check that function is scalar if (value_rank() != 0) { dolfin_error("GenericFunction.cpp", "evaluate function at point", "Function is not scalar"); } // Set up Array arguments Array values(1); Array _x(3); _x[0] = x; _x[1] = y; _x[2] = z; // Call eval eval(values, _x); // Return value return values[0]; } //----------------------------------------------------------------------------- double GenericFunction::operator() (const Point& p) { return (*this)(p.x(), p.y(), p.z()); } //----------------------------------------------------------------------------- void GenericFunction::operator() (Array& values, double x) { // Set up Array argument const Array _x(1, &x); // Call eval eval(values, _x); } //----------------------------------------------------------------------------- void GenericFunction::operator() (Array& values, double x, double y) { // Set up Array argument Array _x(2); _x[0] = x; _x[1] = y; // Call eval eval(values, _x); } //----------------------------------------------------------------------------- void GenericFunction::operator() (Array& values, double x, double y, double z) { // Set up Array argument Array _x(3); _x[0] = x; _x[1] = y; _x[2] = z; // Call eval eval(values, _x); } //----------------------------------------------------------------------------- void GenericFunction::operator() (Array& values, const Point& p) { (*this)(values, p.x(), p.y(), p.z()); } //----------------------------------------------------------------------------- std::size_t GenericFunction::value_size() const { std::size_t size = 1; for (std::size_t i = 0; i < value_rank(); ++i) size *= value_dimension(i); return size; } //----------------------------------------------------------------------------- void GenericFunction::evaluate(double* values, const double* coordinates, const ufc::cell& cell) const { dolfin_assert(values); dolfin_assert(coordinates); // Wrap data Array _values(value_size(), values); const Array x(cell.geometric_dimension, const_cast(coordinates)); // Redirect to eval eval(_values, x, cell); } //----------------------------------------------------------------------------- void GenericFunction::restrict_as_ufc_function(double* w, const FiniteElement& element, const Cell& dolfin_cell, const double* vertex_coordinates, const ufc::cell& ufc_cell) const { dolfin_assert(w); // Evaluate dofs to get the expansion coefficients const int cell_orientation = 0; element.evaluate_dofs(w, *this, vertex_coordinates, cell_orientation, ufc_cell); } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/function/GenericFunction.h0000644000175000017500000001112312263014601021172 0ustar johannrjohannr// Copyright (C) 2009 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Garth N. Wells, 2009. // // First added: 2009-09-28 // Last changed: 2011-01-19 #ifndef __GENERIC_FUNCTION_H #define __GENERIC_FUNCTION_H #include #include #include namespace dolfin { class Mesh; class Cell; class Point; class FiniteElement; /// This is a common base class for functions. Functions can be /// evaluated at a given point and they can be restricted to a given /// cell in a finite element mesh. This functionality is implemented /// by sub-classes that implement the eval() and restrict() functions. /// /// DOLFIN provides two implementations of the GenericFunction /// interface in the form of the classes Function and Expression. /// /// Sub-classes may optionally implement the update() function that /// will be called prior to restriction when running in parallel. class GenericFunction : public ufc::function, public Variable { public: /// Constructor GenericFunction(); /// Destructor virtual ~GenericFunction(); //--- Functions that must be implemented by sub-classes --- /// Return value rank virtual std::size_t value_rank() const = 0; /// Return value dimension for given axis virtual std::size_t value_dimension(std::size_t i) const = 0; /// Evaluate at given point in given cell virtual void eval(Array& values, const Array& x, const ufc::cell& cell) const; /// Evaluate at given point virtual void eval(Array& values, const Array& x) const; /// Restrict function to local cell (compute expansion coefficients w) virtual void restrict(double* w, const FiniteElement& element, const Cell& dolfin_cell, const double* vertex_coordinates, const ufc::cell& ufc_cell) const = 0; /// Compute values at all mesh vertices virtual void compute_vertex_values(std::vector& vertex_values, const Mesh& mesh) const = 0; //--- Optional functions to be implemented by sub-classes --- /// Update off-process ghost coefficients virtual void update() const {} //--- Convenience functions --- /// Evaluation at given point (scalar function) double operator() (double x); /// Evaluation at given point (scalar function) double operator() (double x, double y); /// Evaluation at given point (scalar function) double operator() (double x, double y, double z); /// Evaluation at given point (scalar function) double operator() (const Point& p); /// Evaluation at given point (vector-valued function) void operator() (Array& values, double x); /// Evaluation at given point (vector-valued function) void operator() (Array& values, double x, double y); /// Evaluation at given point (vector-valued function) void operator() (Array& values, double x, double y, double z); /// Evaluation at given point (vector-valued function) void operator() (Array& values, const Point& p); /// Evaluation at given point /// Return value size (product of value dimensions) std::size_t value_size() const; //--- Implementation of ufc::function interface --- /// Evaluate function at given point in cell virtual void evaluate(double* values, const double* coordinates, const ufc::cell& cell) const; protected: // Restrict as UFC function (by calling eval) void restrict_as_ufc_function(double* w, const FiniteElement& element, const Cell& dolfin_cell, const double* vertex_coordinates, const ufc::cell& ufc_cell) const; }; } #endif dolfin-1.3.0/dolfin/function/FunctionAXPY.h0000644000175000017500000000536612263014601020413 0ustar johannrjohannr// Copyright (C) 2013 Johan Hake // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-02-11 // Last changed: 2013-02-14 #ifndef __FUNCTION_AXPY_H #define __FUNCTION_AXPY_H #include #include namespace dolfin { class Function; /// This class represents a linear combination of functions. It is /// mostly used as an intermediate class for operations such as u = /// 3*u0 + 4*u1; where the rhs generates an FunctionAXPY. class FunctionAXPY { public: /// Enum to decide what way AXPY is constructed enum Direction { ADD_ADD = 0, SUB_ADD = 1, ADD_SUB = 2, SUB_SUB = 3 }; /// Constructor FunctionAXPY(const Function& func, double scalar); /// Constructor FunctionAXPY(const FunctionAXPY& axpy, double scalar); /// Constructor FunctionAXPY(const Function& func0, const Function& func1, Direction direction); /// Constructor FunctionAXPY(const FunctionAXPY& axpy, const Function& func, Direction direction); /// Constructor FunctionAXPY(const FunctionAXPY& axpy0, const FunctionAXPY& axpy1, Direction direction); /// Constructor FunctionAXPY(std::vector > pairs); /// Copy constructor FunctionAXPY(const FunctionAXPY& axpy); /// Addition operator FunctionAXPY operator+(const Function& func) const; /// Addition operator FunctionAXPY operator+(const FunctionAXPY& axpy) const; /// Substraction operator FunctionAXPY operator-(const Function& func) const; /// Substraction operator FunctionAXPY operator-(const FunctionAXPY& axpy) const; /// Scale operator FunctionAXPY operator*(double scale) const; /// Scale operator FunctionAXPY operator/(double scale) const; /// Return the scalar and Function pairs const std::vector >& pairs() const; private: /// Register another AXPY object void _register(const FunctionAXPY& axpy0, double scale); std::vector > _pairs; }; } #endif dolfin-1.3.0/dolfin/function/CCFEMFunctionSpace.cpp0000644000175000017500000000766412263014601021761 0ustar johannrjohannr// Copyright (C) 2013 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-08-05 // Last changed: 2013-09-19 #include #include #include #include #include "FunctionSpace.h" #include "CCFEMFunctionSpace.h" using namespace dolfin; //----------------------------------------------------------------------------- CCFEMFunctionSpace::CCFEMFunctionSpace() : _dofmap(new CCFEMDofMap()) { // Do nothing } //----------------------------------------------------------------------------- CCFEMFunctionSpace::~CCFEMFunctionSpace() { // Do nothing } //----------------------------------------------------------------------------- std::size_t CCFEMFunctionSpace::dim() const { dolfin_assert(_dofmap); return _dofmap->global_dimension(); } //----------------------------------------------------------------------------- boost::shared_ptr CCFEMFunctionSpace::dofmap() const { dolfin_assert(_dofmap); return _dofmap; } //----------------------------------------------------------------------------- std::size_t CCFEMFunctionSpace::num_parts() const { return _function_spaces.size(); } //----------------------------------------------------------------------------- boost::shared_ptr CCFEMFunctionSpace::part(std::size_t i) const { dolfin_assert(i < _function_spaces.size()); return _function_spaces[i]; } //----------------------------------------------------------------------------- void CCFEMFunctionSpace::add(boost::shared_ptr function_space) { _function_spaces.push_back(function_space); log(PROGRESS, "Added function space to CCFEM space; space has %d part(s).", _function_spaces.size()); } //----------------------------------------------------------------------------- void CCFEMFunctionSpace::add(const FunctionSpace& function_space) { add(reference_to_no_delete_pointer(function_space)); } //----------------------------------------------------------------------------- void CCFEMFunctionSpace::build() { begin(PROGRESS, "Building CCFEM function space."); // Build dofmap dolfin_assert(_dofmap); _dofmap->clear(); for (std::size_t i = 0; i < num_parts(); i++) _dofmap->add(_function_spaces[i]->dofmap()); _dofmap->build(*this); // Build bounding box trees for all meshes begin(PROGRESS, "Building bounding box trees for all meshes."); _trees.clear(); for (std::size_t i = 0; i < num_parts(); i++) { boost::shared_ptr tree(new BoundingBoxTree()); tree->build(*_function_spaces[i]->mesh()); _trees.push_back(tree); } end(); // Compute collisions between all meshes begin(PROGRESS, "Computing collisions between meshes."); for (std::size_t i = 0; i < num_parts(); i++) { for (std::size_t j = i + 1; j < num_parts(); j++) { log(PROGRESS, "Computing collisions for mesh %d overlapped by mesh %d.", i, j); _trees[i]->compute_collisions(*_trees[j]); } } end(); end(); } //----------------------------------------------------------------------------- void CCFEMFunctionSpace::clear() { dolfin_assert(_dofmap); _function_spaces.clear(); _trees.clear(); _dofmap->clear(); } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/function/Function.cpp0000644000175000017500000006162012263014601020237 0ustar johannrjohannr// Copyright (C) 2003-2012 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Garth N. Wells 2005-2010 // Modified by Martin Sandve Alnes 2008 // Modified by Andre Massing 2009 // // First added: 2003-11-28 // Last changed: 2013-10-25 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Expression.h" #include "FunctionSpace.h" #include "Function.h" using namespace dolfin; //----------------------------------------------------------------------------- Function::Function(const FunctionSpace& V) : Hierarchical(*this), _function_space(reference_to_no_delete_pointer(V)), allow_extrapolation(dolfin::parameters["allow_extrapolation"]) { // Check that we don't have a subspace if (!V.component().empty()) { dolfin_error("Function.cpp", "create function", "Cannot be created from subspace. Consider collapsing the function space"); } // Initialize vector init_vector(); } //----------------------------------------------------------------------------- Function::Function(boost::shared_ptr V) : Hierarchical(*this), _function_space(V), allow_extrapolation(dolfin::parameters["allow_extrapolation"]) { // Check that we don't have a subspace if (!V->component().empty()) { dolfin_error("Function.cpp", "create function", "Cannot be created from subspace. Consider collapsing the function space"); } // Initialize vector init_vector(); } //----------------------------------------------------------------------------- Function::Function(boost::shared_ptr V, boost::shared_ptr x) : Hierarchical(*this), _function_space(V), _vector(x), allow_extrapolation(dolfin::parameters["allow_extrapolation"]) { // We do not check for a subspace since this constructor is used for // creating subfunctions // Assertion uses '<=' to deal with sub-functions dolfin_assert(V->dofmap()); dolfin_assert(V->dofmap()->global_dimension() <= x->size()); } //----------------------------------------------------------------------------- Function::Function(const FunctionSpace& V, std::string filename) : Hierarchical(*this), _function_space(reference_to_no_delete_pointer(V)), allow_extrapolation(dolfin::parameters["allow_extrapolation"]) { // Check that we don't have a subspace if (!V.component().empty()) { dolfin_error("Function.cpp", "create function", "Cannot be created from subspace. Consider collapsing the function space"); } // Initialize vector init_vector(); // Check size of vector if (_vector->size() != _function_space->dim()) { dolfin_error("Function.cpp", "read function from file", "The number of degrees of freedom (%d) does not match dimension of function space (%d)", _vector->size(), _function_space->dim()); } // Read function data from file File file(filename); file >> *this; } //----------------------------------------------------------------------------- Function::Function(boost::shared_ptr V, std::string filename) : Hierarchical(*this), _function_space(V), allow_extrapolation(dolfin::parameters["allow_extrapolation"]) { // Check that we don't have a subspace if (!V->component().empty()) { dolfin_error("Function.cpp", "create function", "Cannot be created from subspace. Consider collapsing the function space"); } // Initialize vector init_vector(); // Check size of vector if (_vector->size() != _function_space->dim()) { dolfin_error("Function.cpp", "read function from file", "The number of degrees of freedom (%d) does not match dimension of function space (%d)", _vector->size(), _function_space->dim()); } // Read function data from file File file(filename); file >> *this; } //----------------------------------------------------------------------------- Function::Function(const Function& v) : Hierarchical(*this), allow_extrapolation(dolfin::parameters["allow_extrapolation"]) { // Assign data *this = v; } //----------------------------------------------------------------------------- Function::Function(const Function& v, std::size_t i) : Hierarchical(*this), allow_extrapolation(dolfin::parameters["allow_extrapolation"]) { // Copy function space pointer this->_function_space = v[i]._function_space; // Copy vector pointer this->_vector = v[i]._vector; } //----------------------------------------------------------------------------- Function::~Function() { // Do nothing } //----------------------------------------------------------------------------- const Function& Function::operator= (const Function& v) { dolfin_assert(v._vector); // Make a copy of all the data, or if v is a sub-function, then we // collapse the dof map and copy only the relevant entries from the // vector of v. if (v._vector->size() == v._function_space->dim()) { // Copy function space _function_space = v._function_space; // Copy vector _vector = v._vector->copy(); // Clear subfunction cache sub_functions.clear(); } else { // Create new collapsed FunctionSpace boost::unordered_map collapsed_map; _function_space = v._function_space->collapse(collapsed_map); // Get row indices of original and new vectors boost::unordered_map::const_iterator entry; std::vector new_rows(collapsed_map.size()); std::vector old_rows(collapsed_map.size()); std::size_t i = 0; for (entry = collapsed_map.begin(); entry != collapsed_map.end(); ++entry) { new_rows[i] = entry->first; old_rows[i++] = entry->second; } // Gather values into a vector std::vector gathered_values; dolfin_assert(v.vector()); v.vector()->gather(gathered_values, old_rows); // Initial new vector (global) init_vector(); dolfin_assert(_function_space->dofmap()); dolfin_assert(_vector->size() == _function_space->dofmap()->global_dimension()); // Set values in vector this->_vector->set(gathered_values.data(), collapsed_map.size(), new_rows.data()); this->_vector->apply("insert"); } // Call assignment operator for base class Hierarchical::operator=(v); return *this; } //----------------------------------------------------------------------------- const Function& Function::operator= (const Expression& v) { interpolate(v); return *this; } //----------------------------------------------------------------------------- Function& Function::operator[] (std::size_t i) const { // Check if sub-Function is in the cache, otherwise create and add // to cache boost::ptr_map::iterator sub_function = sub_functions.find(i); if (sub_function != sub_functions.end()) return *(sub_function->second); else { // Extract function subspace std::vector component = boost::assign::list_of(i); boost::shared_ptr sub_space(_function_space->extract_sub_space(component)); // Insert sub-Function into map and return reference sub_functions.insert(i, new Function(sub_space, _vector)); return *(sub_functions.find(i)->second); } } //----------------------------------------------------------------------------- FunctionAXPY Function::operator+(const Function& other) const { return FunctionAXPY(*this, other, FunctionAXPY::ADD_ADD); } //----------------------------------------------------------------------------- FunctionAXPY Function::operator+(const FunctionAXPY& axpy) const { return FunctionAXPY(axpy, *this, FunctionAXPY::ADD_ADD); } //----------------------------------------------------------------------------- FunctionAXPY Function::operator-(const Function& other) const { return FunctionAXPY(*this, other, FunctionAXPY::ADD_SUB); } //----------------------------------------------------------------------------- FunctionAXPY Function::operator-(const FunctionAXPY& axpy) const { return FunctionAXPY(axpy, *this, FunctionAXPY::SUB_ADD); } //----------------------------------------------------------------------------- FunctionAXPY Function::operator*(double scalar) const { return FunctionAXPY(*this, scalar); } //----------------------------------------------------------------------------- FunctionAXPY Function::operator/(double scalar) const { return FunctionAXPY(*this, 1.0/scalar); } //----------------------------------------------------------------------------- void Function::operator=(const FunctionAXPY& axpy) { if (axpy.pairs().size() == 0) { dolfin_error("Function.cpp", "assign function", "FunctionAXPY is empty."); } // Make an initial assign and scale *this = *(axpy.pairs()[0].second); if (axpy.pairs()[0].first != 1.0) *_vector *= axpy.pairs()[0].first; // Start from item 2 and axpy std::vector >::const_iterator it; for (it = axpy.pairs().begin()+1; it != axpy.pairs().end(); it++) _vector->axpy(it->first, *(it->second->vector())); } //----------------------------------------------------------------------------- boost::shared_ptr Function::function_space() const { dolfin_assert(_function_space); return _function_space; } //----------------------------------------------------------------------------- boost::shared_ptr Function::vector() { dolfin_assert(_vector); dolfin_assert(_function_space->dofmap()); // Check that this is not a sub function. if (_vector->size() != _function_space->dofmap()->global_dimension()) { dolfin_error("Function.cpp", "access vector of degrees of freedom", "Cannot access a non-const vector from a subfunction"); } return _vector; } //----------------------------------------------------------------------------- boost::shared_ptr Function::vector() const { dolfin_assert(_vector); return _vector; } //----------------------------------------------------------------------------- bool Function::in(const FunctionSpace& V) const { dolfin_assert(_function_space); return *_function_space == V; } //----------------------------------------------------------------------------- std::size_t Function::geometric_dimension() const { dolfin_assert(_function_space); dolfin_assert(_function_space->mesh()); return _function_space->mesh()->geometry().dim(); } //----------------------------------------------------------------------------- void Function::eval(Array& values, const Array& x) const { dolfin_assert(_function_space); dolfin_assert(_function_space->mesh()); const Mesh& mesh = *_function_space->mesh(); // Find the cell that contains x const double* _x = x.data(); const Point point(mesh.geometry().dim(), _x); // FIXME: Testing int ID = 0; // Get index of first cell containing point unsigned int id = mesh.bounding_box_tree()->compute_first_entity_collision(point); // If not found, use the closest cell if (id == std::numeric_limits::max()) { if (allow_extrapolation) { id = mesh.bounding_box_tree()->compute_closest_entity(point).first; cout << "Extrapolating function value at x = " << point << " (not inside domain)." << endl; } else { cout << point << endl; dolfin_error("Function.cpp", "evaluate function at point", "The point is not inside the domain. Consider setting \"allow_extrapolation\" to allow extrapolation"); } } ID = id; // Create cell that contains point const Cell cell(mesh, ID); ufc::cell ufc_cell; cell.get_cell_data(ufc_cell); // Call evaluate function eval(values, x, cell, ufc_cell); } //----------------------------------------------------------------------------- void Function::eval(Array& values, const Array& x, const Cell& dolfin_cell, const ufc::cell& ufc_cell) const { // Developer note: work arrays/vectors are re-created each time this // function is called for thread-safety dolfin_assert(_function_space->element()); const FiniteElement& element = *_function_space->element(); // Compute in tensor (one for scalar function, . . .) const std::size_t value_size_loc = value_size(); dolfin_assert(values.size() == value_size_loc); // Create work vector for expansion coefficients std::vector coefficients(element.space_dimension()); // Cell vertices (re-allocated inside function for thread safety) std::vector vertex_coordinates; dolfin_cell.get_vertex_coordinates(vertex_coordinates); // Restrict function to cell restrict(coefficients.data(), element, dolfin_cell, vertex_coordinates.data(), ufc_cell); // Create work vector for basis std::vector basis(value_size_loc); // Initialise values for (std::size_t j = 0; j < value_size_loc; ++j) values[j] = 0.0; // Compute linear combination const int cell_orientation = 0; for (std::size_t i = 0; i < element.space_dimension(); ++i) { element.evaluate_basis(i, basis.data(), x.data(), vertex_coordinates.data(), cell_orientation); for (std::size_t j = 0; j < value_size_loc; ++j) values[j] += coefficients[i]*basis[j]; } } //----------------------------------------------------------------------------- void Function::interpolate(const GenericFunction& v) { // Gather off-process dofs v.update(); // Initialise vector init_vector(); // Interpolate dolfin_assert(_function_space); _function_space->interpolate(*_vector, v); } //----------------------------------------------------------------------------- void Function::extrapolate(const Function& v) { Extrapolation::extrapolate(*this, v); } //----------------------------------------------------------------------------- std::size_t Function::value_rank() const { dolfin_assert(_function_space); dolfin_assert(_function_space->element()); return _function_space->element()->value_rank(); } //----------------------------------------------------------------------------- std::size_t Function::value_dimension(std::size_t i) const { dolfin_assert(_function_space); dolfin_assert(_function_space->element()); return _function_space->element()->value_dimension(i); } //----------------------------------------------------------------------------- void Function::eval(Array& values, const Array& x, const ufc::cell& ufc_cell) const { dolfin_assert(_function_space); dolfin_assert(_function_space->mesh()); const Mesh& mesh = *_function_space->mesh(); // Check if UFC cell comes from mesh, otherwise redirect to // evaluate on non-matching cell dolfin_assert(ufc_cell.mesh_identifier >= 0); if (ufc_cell.mesh_identifier == (int) mesh.id()) { const Cell cell(mesh, ufc_cell.index); eval(values, x, cell, ufc_cell); } else non_matching_eval(values, x, ufc_cell); } //----------------------------------------------------------------------------- void Function::non_matching_eval(Array& values, const Array& x, const ufc::cell& ufc_cell) const { dolfin_assert(_function_space); dolfin_assert(_function_space->mesh()); const Mesh& mesh = *_function_space->mesh(); const double* _x = x.data(); const std::size_t gdim = mesh.geometry().dim(); const Point point(gdim, _x); // FIXME: Testing int ID = 0; // Alternative 1: Find cell that point (x) intersects unsigned int id = mesh.bounding_box_tree()->compute_first_entity_collision(point); // Check whether we are allowed to extrapolate to evaluate if (id == std::numeric_limits::max() && !allow_extrapolation) { dolfin_error("Function.cpp", "evaluate function at point", "The point is not inside the domain. Consider setting \"allow_extrapolation\" to allow extrapolation"); } // Alternative 2: Compute closest cell to point (x) if (id == std::numeric_limits::max() && allow_extrapolation) id = mesh.bounding_box_tree()->compute_closest_entity(point).first; // Throw error if all alternatives failed if (id == std::numeric_limits::max()) { dolfin_error("Function.cpp", "evaluate function at point", "No matching cell found"); } ID = id; // Create cell that contains point const Cell cell(mesh, ID); ufc::cell new_ufc_cell; cell.get_cell_data(new_ufc_cell); // Call evaluate function eval(values, x, cell, new_ufc_cell); } //----------------------------------------------------------------------------- void Function::restrict(double* w, const FiniteElement& element, const Cell& dolfin_cell, const double* vertex_coordinates, const ufc::cell& ufc_cell) const { dolfin_assert(w); dolfin_assert(_function_space); dolfin_assert(_function_space->dofmap()); // Check if we are restricting to an element of this function space if (_function_space->has_element(element) && _function_space->has_cell(dolfin_cell)) { // Get dofmap for cell const GenericDofMap& dofmap = *_function_space->dofmap(); const std::vector& dofs = dofmap.cell_dofs(dolfin_cell.index()); // Pick values from vector(s) _vector->get_local(w, dofs.size(), dofs.data()); } else { // Restrict as UFC function (by calling eval) restrict_as_ufc_function(w, element, dolfin_cell, vertex_coordinates, ufc_cell); } } //----------------------------------------------------------------------------- void Function::compute_vertex_values(std::vector& vertex_values, const Mesh& mesh) const { dolfin_assert(_function_space); dolfin_assert(_function_space->mesh()); // Check that the mesh matches. Notice that the hash is only // compared if the pointers are not matching. if (&mesh != _function_space->mesh().get() && mesh.hash() != _function_space->mesh()->hash()) { dolfin_error("Function.cpp", "interpolate function values at vertices", "Non-matching mesh"); } // Update ghosts dofs update(); // Get finite element dolfin_assert(_function_space->element()); const FiniteElement& element = *_function_space->element(); // Get restriction if any boost::shared_ptr restriction = _function_space->dofmap()->restriction(); // Local data for interpolation on each cell const std::size_t num_cell_vertices = mesh.type().num_vertices(mesh.topology().dim()); // Compute in tensor (one for scalar function, . . .) const std::size_t value_size_loc = value_size(); // Resize Array for holding vertex values vertex_values.resize(value_size_loc*(mesh.num_vertices())); // Create vector to hold cell vertex values std::vector cell_vertex_values(value_size_loc*num_cell_vertices); // Create vector for expansion coefficients std::vector coefficients(element.space_dimension()); // Interpolate vertex values on each cell (using last computed value // if not continuous, e.g. discontinuous Galerkin methods) ufc::cell ufc_cell; std::vector vertex_coordinates; for (CellIterator cell(mesh); !cell.end(); ++cell) { // Skip cells not included in restriction if (restriction && !restriction->contains(*cell)) continue; // Update to current cell cell->get_vertex_coordinates(vertex_coordinates); cell->get_cell_data(ufc_cell); // Pick values from global vector restrict(coefficients.data(), element, *cell, vertex_coordinates.data(), ufc_cell); // Interpolate values at the vertices const int cell_orientation = 0; element.interpolate_vertex_values(cell_vertex_values.data(), coefficients.data(), vertex_coordinates.data(), cell_orientation, ufc_cell); // Copy values to array of vertex values for (VertexIterator vertex(*cell); !vertex.end(); ++vertex) { for (std::size_t i = 0; i < value_size_loc; ++i) { const std::size_t local_index = vertex.pos()*value_size_loc + i; const std::size_t global_index = i*mesh.num_vertices()+vertex->index(); vertex_values[global_index] = cell_vertex_values[local_index]; } } } } //----------------------------------------------------------------------------- void Function::compute_vertex_values(std::vector& vertex_values) { dolfin_assert(_function_space); dolfin_assert(_function_space->mesh()); compute_vertex_values(vertex_values, *_function_space->mesh()); } //----------------------------------------------------------------------------- void Function::update() const { _vector->update_ghost_values(); } //----------------------------------------------------------------------------- void Function::init_vector() { Timer timer("Init dof vector"); // Check that function space is not a subspace (view) dolfin_assert(_function_space); if (_function_space->dofmap()->is_view()) { dolfin_error("Function.cpp", "initialize vector of degrees of freedom for function", "Cannot be created from subspace. Consider collapsing the function space"); } // Get global size const std::size_t N = _function_space->dofmap()->global_dimension(); // Get local range const std::pair range = _function_space->dofmap()->ownership_range(); const std::size_t local_size = range.second - range.first; // Determine ghost vertices if dof map is distributed std::vector ghost_indices; if (N > local_size) compute_ghost_indices(range, ghost_indices); // Create vector of dofs if (!_vector) { DefaultFactory factory; _vector = factory.create_vector(); } dolfin_assert(_vector); // Initialize vector of dofs _vector->resize(range, ghost_indices); _vector->zero(); } //----------------------------------------------------------------------------- void Function::compute_ghost_indices(std::pair range, std::vector& ghost_indices) const { // Clear data ghost_indices.clear(); // Get mesh dolfin_assert(_function_space); dolfin_assert(_function_space->mesh()); const Mesh& mesh = *_function_space->mesh(); // Get dof map dolfin_assert(_function_space->dofmap()); const GenericDofMap& dofmap = *_function_space->dofmap(); // Get local range const std::size_t n0 = range.first; const std::size_t n1 = range.second; // Iterate over local mesh and check which dofs are needed for (CellIterator cell(mesh); !cell.end(); ++cell) { // Get dofs on cell const std::vector& dofs = dofmap.cell_dofs(cell->index()); for (std::size_t d = 0; d < dofs.size(); ++d) { const std::size_t dof = dofs[d]; if (dof < n0 || dof >= n1) { // FIXME: Could we use dolfin::Set here? Or unordered_set? if (std::find(ghost_indices.begin(), ghost_indices.end(), dof) == ghost_indices.end()) { ghost_indices.push_back(dof); } } } } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/function/SubSpace.h0000644000175000017500000000357412263014601017630 0ustar johannrjohannr// Copyright (C) 2008 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2008-11-03 // Last changed: 2008-11-03 #ifndef __SUB_SPACE_H #define __SUB_SPACE_H #include #include "FunctionSpace.h" namespace dolfin { /// This class represents a subspace (component) of a function space. /// /// The subspace is specified by an array of indices. For example, /// the array [3, 0, 2] specifies subspace 2 of subspace 0 of /// subspace 3. /// /// A typical example is the function space W = V x P for Stokes. /// Here, V = W[0] is the subspace for the velocity component and /// P = W[1] is the subspace for the pressure component. Furthermore, /// W[0][0] = V[0] is the first component of the velocity space etc. class SubSpace : public FunctionSpace { public: /// Create subspace for given component (one level) SubSpace(const FunctionSpace& V, std::size_t component); /// Create subspace for given component (two levels) SubSpace(const FunctionSpace& V, std::size_t component, std::size_t sub_component); /// Create subspace for given component (n levels) SubSpace(const FunctionSpace& V, const std::vector& component); }; } #endif dolfin-1.3.0/dolfin/function/dolfin_function.h0000644000175000017500000000121012263014601021264 0ustar johannrjohannr#ifndef __DOLFIN_FUNCTION_H #define __DOLFIN_FUNCTION_H // DOLFIN function interface #include #include #include #include #include #include #include #include #include #include #include #include #include #endif dolfin-1.3.0/dolfin/function/CCFEMFunctionSpace.h0000644000175000017500000000603112263014601021411 0ustar johannrjohannr// Copyright (C) 2013 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-08-05 // Last changed: 2013-09-25 #ifndef __CCFEM_FUNCTION_SPACE_H #define __CCFEM_FUNCTION_SPACE_H #include #include namespace dolfin { // Forward declarations class FunctionSpace; class BoundingBoxTree; class CCFEMDofMap; class GenericDofMap; /// This class represents a cut and composite finite element /// function space (CCFEM) defined on one or more possibly /// intersecting meshes. /// /// FIXME: Document usage of class with add() followed by build() class CCFEMFunctionSpace { public: /// Create empty CCFEM function space CCFEMFunctionSpace(); /// Destructor ~CCFEMFunctionSpace(); /// Return dimension of the CCFEM function space /// /// *Returns* /// std::size_t /// The dimension of the CCFEM function space. std::size_t dim() const; /// Return CCFEM dofmap /// /// *Returns* /// _CCFEMDofMap_ /// The dofmap. boost::shared_ptr dofmap() const; /// Return the number function spaces (parts) of the CCFEM function space /// /// *Returns* /// std::size_t /// The number of function spaces (parts) of the CCFEM function space. std::size_t num_parts() const; /// Return function space (part) number i /// /// *Returns* /// _FunctionSpace_ /// Function space (part) number i boost::shared_ptr part(std::size_t i) const; /// Add function space (shared pointer version) /// /// *Arguments* /// function_space (_FunctionSpace_) /// The function space. void add(boost::shared_ptr function_space); /// Add function space (reference version) /// /// *Arguments* /// function_space (_FunctionSpace_) /// The function space. void add(const FunctionSpace& function_space); /// Build CCFEM function space void build(); /// Clear CCFEM function space void clear(); private: // List of function spaces std::vector > _function_spaces; // List of bounding box trees for meshes std::vector > _trees; // CCFEM dofmap boost::shared_ptr _dofmap; }; } #endif dolfin-1.3.0/dolfin/function/CoefficientAssigner.cpp0000644000175000017500000000321412263014601022357 0ustar johannrjohannr// Copyright (C) 2008-2009 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Martin Alnes, 2008. // // First added: 2008-10-28 // Last changed: 2009-10-04 #include #include #include #include "CoefficientAssigner.h" using namespace dolfin; //----------------------------------------------------------------------------- CoefficientAssigner::CoefficientAssigner(Form& form, std::size_t number) : _form(form), _number(number) { // Do nothing } //----------------------------------------------------------------------------- CoefficientAssigner::~CoefficientAssigner() { // Do nothing } //----------------------------------------------------------------------------- void CoefficientAssigner::operator= (const GenericFunction& coefficient) { boost::shared_ptr c(&coefficient, NoDeleter()); _form.set_coefficient(_number, c); } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/function/assign.h0000644000175000017500000000442212263014601017400 0ustar johannrjohannr// Copyright (C) 2013 Johan Hake // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-11-07 // Last changed: 2013-11-11 #ifndef __DOLFIN_ASSIGN_H #define __DOLFIN_ASSIGN_H #include #include namespace dolfin { class Function; /// Assign one function to another. The functions must reside in the /// same type of FunctionSpace. One or both functions can be sub /// functions. /// /// *Arguments* /// receiving_func (boost::shared_ptr<_Function_>) /// The recieving function /// assigning_func (boost::shared_ptr<_Function_>) /// The assigning function void assign(boost::shared_ptr receiving_func, boost::shared_ptr assigning_func); /// Assign several functions to sub functions of a mixed receiving /// function. The number of receiving functions must sum up to the /// number of sub functions in the assigning mixed function. The sub /// spaces of the assigning mixed space must be of the same type ans /// size as the receiving spaces. void assign(boost::shared_ptr receiving_func, std::vector > assigning_funcs); /// Assign sub functions of a single mixed function to single /// receiving functions. The number of sub functions in the /// assigning mixed function must sum up to the number of receiving /// functions. The sub spaces of the receiving mixed space must be /// of the same type ans size as the assigning spaces. void assign(std::vector > receiving_funcs, boost::shared_ptr assigning_func); } #endif dolfin-1.3.0/dolfin/function/Constant.cpp0000644000175000017500000000743512263014601020247 0ustar johannrjohannr// Copyright (C) 2006-2011 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Martin Sandve Alnes 2008 // Modified by Garth N. Wells 2009-2011 // // First added: 2006-02-09 // Last changed: 2011-11-14 #include #include "Constant.h" using namespace dolfin; //----------------------------------------------------------------------------- Constant::Constant(double value) { _values.resize(1); _values[0] = value; } //----------------------------------------------------------------------------- Constant::Constant(double value0, double value1) : Expression(2) { _values.resize(2); _values[0] = value0; _values[1] = value1; } //----------------------------------------------------------------------------- Constant::Constant(double value0, double value1, double value2) : Expression(3) { _values.resize(3); _values[0] = value0; _values[1] = value1; _values[2] = value2; } //----------------------------------------------------------------------------- Constant::Constant(std::vector values) : Expression(values.size()), _values(values) { // Do nothing } //----------------------------------------------------------------------------- Constant::Constant(std::vector value_shape, std::vector values) : Expression(value_shape), _values(values) { // Do nothing } //----------------------------------------------------------------------------- Constant::Constant(const Constant& constant) : Expression(constant) { *this = constant; } //----------------------------------------------------------------------------- Constant::~Constant() { // Do nothing } //----------------------------------------------------------------------------- const Constant& Constant::operator= (const Constant& constant) { // Check value shape if (constant._value_shape != _value_shape) { dolfin_error("Constant.cpp", "assign value to constant", "Value shape mismatch"); } // Assign values _values = constant._values; return *this; } //----------------------------------------------------------------------------- const Constant& Constant::operator= (double constant) { // Check value shape if (!_value_shape.empty()) { dolfin_error("Constant.cpp", "assign scalar value to constant", "Constant is not a scalar"); } // Assign value dolfin_assert(_values.size() == 1); _values[0] = constant; return *this; } //----------------------------------------------------------------------------- Constant::operator double() const { // Check value shape if (!_value_shape.empty()) { dolfin_error("Constant.cpp", "convert constant to double", "Constant is not a scalar"); } // Return value dolfin_assert(_values.size() == 1); return _values[0]; } //----------------------------------------------------------------------------- void Constant::eval(Array& values, const Array& x) const { // Copy values for (std::size_t j = 0; j < _values.size(); j++) values[j] = _values[j]; } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/function/Expression.cpp0000644000175000017500000001150712263014601020610 0ustar johannrjohannr// Copyright (C) 2009-2011 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Johan Hake, 2009. // // First added: 2009-09-28 // Last changed: 2011-11-14 #include #include #include #include #include "Expression.h" using namespace dolfin; //----------------------------------------------------------------------------- Expression::Expression() { // Do nothing } //----------------------------------------------------------------------------- Expression::Expression(std::size_t dim) { _value_shape.resize(1); _value_shape[0] = dim; } //----------------------------------------------------------------------------- Expression::Expression(std::size_t dim0, std::size_t dim1) { _value_shape.resize(2); _value_shape[0] = dim0; _value_shape[1] = dim1; } //----------------------------------------------------------------------------- Expression::Expression(std::vector value_shape) : _value_shape(value_shape) { // Do nothing } //----------------------------------------------------------------------------- Expression::Expression(const Expression& expression) : _value_shape(expression._value_shape) { // Do nothing } //----------------------------------------------------------------------------- Expression::~Expression() { // Do nothing } //----------------------------------------------------------------------------- void Expression::eval(Array& values, const Array& x, const ufc::cell& cell) const { // Redirect to simple eval eval(values, x); } //----------------------------------------------------------------------------- void Expression::eval(Array& values, const Array& x) const { dolfin_error("Expression.cpp", "evaluate expression", "Missing eval() function (must be overloaded)"); } //----------------------------------------------------------------------------- std::size_t Expression::value_rank() const { return _value_shape.size(); } //----------------------------------------------------------------------------- std::size_t Expression::value_dimension(std::size_t i) const { if (i >= _value_shape.size()) { dolfin_error("Expression.cpp", "evaluate expression", "Illegal axis %d for value dimension for value of rank %d", i, _value_shape.size()); } return _value_shape[i]; } //----------------------------------------------------------------------------- void Expression::restrict(double* w, const FiniteElement& element, const Cell& dolfin_cell, const double* vertex_coordinates, const ufc::cell& ufc_cell) const { // Restrict as UFC function (by calling eval) restrict_as_ufc_function(w, element, dolfin_cell, vertex_coordinates, ufc_cell); } //----------------------------------------------------------------------------- void Expression::compute_vertex_values(std::vector& vertex_values, const Mesh& mesh) const { // Local data for vertex values const std::size_t size = value_size(); Array local_vertex_values(size); // Resize vertex_values vertex_values.resize(size*mesh.num_vertices()); // Iterate over cells, overwriting values when repeatedly visiting vertices ufc::cell ufc_cell; for (CellIterator cell(mesh); !cell.end(); ++cell) { // Update cell data cell->get_cell_data(ufc_cell); // Iterate over cell vertices for (VertexIterator vertex(*cell); !vertex.end(); ++vertex) { // Wrap coordinate data const Array x(mesh.geometry().dim(), const_cast(vertex->x())); // Evaluate at vertex eval(local_vertex_values, x, ufc_cell); // Copy to array for (std::size_t i = 0; i < size; i++) { const std::size_t global_index = i*mesh.num_vertices() + vertex->index(); vertex_values[global_index] = local_vertex_values[i]; } } } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/function/CCFEMFunction.h0000644000175000017500000000555712263014601020451 0ustar johannrjohannr// Copyright (C) 2013 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-09-25 // Last changed: 2013-10-22 #ifndef __CCFEM_FUNCTION_H #define __CCFEM_FUNCTION_H #include #include namespace dolfin { // Forward declacations class CCFEMFunctionSpace; class GenericVector; class Function; /// This class represents a function on a cut and composite finite /// element function space (CCFEM) defined on one or more possibly /// intersecting meshes. class CCFEMFunction { public: /// Create CCFEM function on given CCFEM function space /// /// *Arguments* /// V (_CCFEMFunctionSpace_) /// The CCFEM function space. /// /// *Example* /// .. code-block:: c++ /// /// CCFEMFunction u(V); /// explicit CCFEMFunction(const CCFEMFunctionSpace& V); /// Create CCFEM function on given CCFEM function space (shared /// pointer version) /// /// *Arguments* /// V (_CCFEMFunctionSpace_) /// The CCFEM function space. explicit CCFEMFunction(boost::shared_ptr V); /// Destructor virtual ~CCFEMFunction(); /// Return function (part) number i /// /// *Returns* /// _Function_ /// Function (part) number i const Function& part(std::size_t i) const; /// Return vector of expansion coefficients (non-const version) /// /// *Returns* /// _GenericVector_ /// The vector of expansion coefficients. boost::shared_ptr vector(); /// Return vector of expansion coefficients (const version) /// /// *Returns* /// _GenericVector_ /// The vector of expansion coefficients (const). boost::shared_ptr vector() const; private: // Initialize vector void init_vector(); // The function space boost::shared_ptr _function_space; // The vector of expansion coefficients (local) boost::shared_ptr _vector; // Collection of functions for parts which share data mutable boost::ptr_map _function_parts; }; } #endif dolfin-1.3.0/dolfin/function/FunctionAXPY.cpp0000644000175000017500000001224312263014601020736 0ustar johannrjohannr// Copyright (C) 2013 Johan Hake // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-02-11 // Last changed: 2013-02-15 #include #include "Function.h" #include "FunctionSpace.h" #include "FunctionAXPY.h" using namespace dolfin; //----------------------------------------------------------------------------- FunctionAXPY::FunctionAXPY(const Function& func, double scalar) : _pairs() { _pairs.push_back(std::make_pair(scalar, &func)); } //----------------------------------------------------------------------------- FunctionAXPY::FunctionAXPY(const FunctionAXPY& axpy, double scalar) : _pairs() { _register(axpy, scalar); } //----------------------------------------------------------------------------- FunctionAXPY::FunctionAXPY(const Function& func0, const Function& func1, Direction direction) : _pairs() { if (!func0.in(*func1.function_space())) { dolfin_error("FunctionAXPY.cpp", "Construct FunctionAXPY", "Expected Functions to be in the same FunctionSpace"); } const double scale0 = direction % 2 == 0 ? 1.0 : -1.0; _pairs.push_back(std::make_pair(scale0, &func0)); const double scale1 = direction < 2 ? 1.0 : -1.0; _pairs.push_back(std::make_pair(scale1, &func1)); } //----------------------------------------------------------------------------- FunctionAXPY::FunctionAXPY(const FunctionAXPY& axpy, const Function& func, Direction direction) : _pairs() { _register(axpy, direction % 2 == 0 ? 1.0 : -1.0); if (_pairs.size()>0 && !_pairs[0].second->in(*func.function_space())) { dolfin_error("FunctionAXPY.cpp", "Construct FunctionAXPY", "Expected Functions to have the same FunctionSpace"); } const double scale = direction < 2 ? 1.0 : -1.0; _pairs.push_back(std::make_pair(scale, &func)); } //----------------------------------------------------------------------------- FunctionAXPY::FunctionAXPY(const FunctionAXPY& axpy0, const FunctionAXPY& axpy1, Direction direction) : _pairs() { _register(axpy0, direction % 2 == 0 ? 1.0 : -1.0); _register(axpy1, direction < 2 ? 1.0 : -1.0); } //----------------------------------------------------------------------------- FunctionAXPY::FunctionAXPY(const FunctionAXPY& axpy) : _pairs(axpy._pairs) {} //----------------------------------------------------------------------------- FunctionAXPY::FunctionAXPY(std::vector > pairs) : _pairs(pairs) {} //----------------------------------------------------------------------------- FunctionAXPY FunctionAXPY::operator+(const Function& func) const { return FunctionAXPY(*this, func, FunctionAXPY::ADD_ADD); } //----------------------------------------------------------------------------- FunctionAXPY FunctionAXPY::operator+(const FunctionAXPY& axpy) const { return FunctionAXPY(*this, axpy, FunctionAXPY::ADD_ADD); } //----------------------------------------------------------------------------- FunctionAXPY FunctionAXPY::operator-(const Function& func) const { return FunctionAXPY(*this, func, FunctionAXPY::ADD_SUB); } //----------------------------------------------------------------------------- FunctionAXPY FunctionAXPY::operator-(const FunctionAXPY& axpy) const { return FunctionAXPY(*this, axpy, FunctionAXPY::ADD_SUB); } //----------------------------------------------------------------------------- const std::vector >& FunctionAXPY::pairs() const { return _pairs; } //----------------------------------------------------------------------------- void FunctionAXPY::_register(const FunctionAXPY& axpy, double scale) { if (_pairs.size() > 0 && axpy._pairs.size() > 0 &&!_pairs[0].second->in(*axpy._pairs[0].second->function_space())) { dolfin_error("FunctionAXPY.cpp", "Construct FunctionAXPY", "Expected Functions to have the same FunctionSpace"); } for (std::vector >::const_iterator it=axpy.pairs().begin(); it!=axpy.pairs().end(); it++) { _pairs.push_back(std::make_pair(it->first*scale, it->second)); } } //----------------------------------------------------------------------------- FunctionAXPY FunctionAXPY::operator*(double scale) const { return FunctionAXPY(*this, scale); } //----------------------------------------------------------------------------- FunctionAXPY FunctionAXPY::operator/(double scale) const { return FunctionAXPY(*this, 1.0/scale); } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/function/CCFEMFunction.cpp0000644000175000017500000000730412263014601020774 0ustar johannrjohannr// Copyright (C) 2013 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-09-25 // Last changed: 2013-10-22 #include #include #include #include #include "Function.h" #include "CCFEMFunctionSpace.h" #include "CCFEMFunction.h" using namespace dolfin; //----------------------------------------------------------------------------- CCFEMFunction::CCFEMFunction(const CCFEMFunctionSpace& V) : _function_space(reference_to_no_delete_pointer(V)) { // Initialize vector init_vector(); } //----------------------------------------------------------------------------- CCFEMFunction::CCFEMFunction(boost::shared_ptr V) : _function_space(V) { // Initialize vector init_vector(); } //----------------------------------------------------------------------------- CCFEMFunction::~CCFEMFunction() { // Do nothing } //----------------------------------------------------------------------------- const Function& CCFEMFunction::part(std::size_t i) const { // FIXME /* // Check if sub-Function is in the cache, otherwise create and add to cache boost::ptr_map::iterator sub_function = sub_functions.find(i); if (sub_function != sub_functions.end()) return *(sub_function->second); else { // Extract function subspace std::vector component = boost::assign::list_of(i); boost::shared_ptr sub_space(_function_space->extract_sub_space(component)); // Insert sub-Function into map and return reference sub_functions.insert(i, new Function(sub_space, _vector)); return *(sub_functions.find(i)->second); } */ return *(_function_parts.find(0)->second); } //----------------------------------------------------------------------------- boost::shared_ptr CCFEMFunction::vector() { dolfin_assert(_vector); return _vector; } //----------------------------------------------------------------------------- boost::shared_ptr CCFEMFunction::vector() const { dolfin_assert(_vector); return _vector; } //----------------------------------------------------------------------------- void CCFEMFunction::init_vector() { // Get global size //const std::size_t N = _function_space->dofmap()->global_dimension(); // Get local range const std::pair range = _function_space->dofmap()->ownership_range(); //const std::size_t local_size = range.second - range.first; // Determine ghost vertices if dof map is distributed std::vector ghost_indices; // FIXME: Does not work in parallel //if (N > local_size) // compute_ghost_indices(range, ghost_indices); // Create vector of dofs if (!_vector) { DefaultFactory factory; _vector = factory.create_vector(); } dolfin_assert(_vector); // Initialize vector of dofs _vector->resize(range, ghost_indices); _vector->zero(); } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/function/FunctionSpace.h0000644000175000017500000001724212263014601020661 0ustar johannrjohannr// Copyright (C) 2008-2011 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Garth N. Wells 2008-2011 // Modified by Kent-Andre Mardal 2009 // Modified by Ola Skavhaug 2009 // // First added: 2008-09-11 // Last changed: 2013-09-19 #ifndef __FUNCTION_SPACE_H #define __FUNCTION_SPACE_H #include #include #include #include #include #include #include #include #include #include namespace dolfin { class Function; class GenericDofMap; class GenericFunction; class GenericVector; class Mesh; /// This class represents a finite element function space defined by /// a mesh, a finite element, and a local-to-global mapping of the /// degrees of freedom (dofmap). class FunctionSpace : public Variable, public Hierarchical { public: /// Create function space for given mesh, element and dofmap /// (shared data) /// /// *Arguments* /// mesh (_Mesh_) /// The mesh. /// element (_FiniteElement_) /// The element. /// dofmap (_GenericDofMap_) /// The dofmap. FunctionSpace(boost::shared_ptr mesh, boost::shared_ptr element, boost::shared_ptr dofmap); protected: /// Create empty function space for later initialization. This /// constructor is intended for use by any sub-classes which need /// to construct objects before the initialisation of the base /// class. Data can be attached to the base class using /// FunctionSpace::attach(...). /// /// *Arguments* /// mesh (_Mesh_) /// The mesh. explicit FunctionSpace(boost::shared_ptr mesh); public: /// Copy constructor /// /// *Arguments* /// V (_FunctionSpace_) /// The object to be copied. FunctionSpace(const FunctionSpace& V); /// Destructor virtual ~FunctionSpace(); protected: /// Attach data to an empty function space /// /// *Arguments* /// element (_FiniteElement_) /// The element. /// dofmap (_GenericDofMap_) /// The dofmap. void attach(boost::shared_ptr element, boost::shared_ptr dofmap); public: /// Assignment operator /// /// *Arguments* /// V (_FunctionSpace_) /// Another function space. const FunctionSpace& operator= (const FunctionSpace& V); /// Equality operator /// /// *Arguments* /// V (_FunctionSpace_) /// Another function space. bool operator== (const FunctionSpace& V) const; /// Unequality operator /// /// *Arguments* /// V (_FunctionSpace_) /// Another function space. bool operator!= (const FunctionSpace& V) const; /// Return mesh /// /// *Returns* /// _Mesh_ /// The mesh. boost::shared_ptr mesh() const; /// Return finite element /// /// *Returns* /// _FiniteElement_ /// The finite element. boost::shared_ptr element() const; /// Return dofmap /// /// *Returns* /// _GenericDofMap_ /// The dofmap. boost::shared_ptr dofmap() const; /// Return dimension of function space /// /// *Returns* /// std::size_t /// The dimension of the function space. std::size_t dim() const; /// Interpolate function v into function space, returning the /// vector of expansion coefficients /// /// *Arguments* /// expansion_coefficients (_GenericVector_) /// The expansion coefficients. /// v (_GenericFunction_) /// The function to be interpolated. void interpolate(GenericVector& expansion_coefficients, const GenericFunction& v) const; /// Extract subspace for component /// /// *Arguments* /// i (std::size_t) /// Index of the subspace. /// *Returns* /// _FunctionSpace_ /// The subspace. boost::shared_ptr operator[] (std::size_t i) const; /// Extract subspace for component /// /// *Arguments* /// component (std::vector) /// The component. /// /// *Returns* /// _FunctionSpace_ /// The subspace. boost::shared_ptr extract_sub_space(const std::vector& component) const; /// Collapse a subspace and return a new function space /// /// *Returns* /// _FunctionSpace_ /// The new function space. boost::shared_ptr collapse() const; /// Collapse a subspace and return a new function space and a map /// from new to old dofs /// /// *Arguments* /// collapsed_dofs (boost::unordered_map) /// The map from new to old dofs. /// /// *Returns* /// _FunctionSpace_ /// The new function space. boost::shared_ptr collapse(boost::unordered_map& collapsed_dofs) const; /// Check if function space has given cell /// /// *Arguments* /// cell (_Cell_) /// The cell. /// /// *Returns* /// bool /// True if the function space has the given cell. bool has_cell(const Cell& cell) const { return &cell.mesh() == &(*_mesh); } /// Check if function space has given element /// /// *Arguments* /// element (_FiniteElement_) /// The finite element. /// /// *Returns* /// bool /// True if the function space has the given element. bool has_element(const FiniteElement& element) const { return element.hash() == _element->hash(); } /// Return component /// /// *Returns* /// std::vector /// The component (relative to superspace). std::vector component() const; /// Return informal string representation (pretty-print) /// /// *Arguments* /// verbose (bool) /// Flag to turn on additional output. /// /// *Returns* /// std::string /// An informal representation of the function space. std::string str(bool verbose) const; /// Print dofmap (useful for debugging) void print_dofmap() const; private: // The mesh boost::shared_ptr _mesh; // The finite element boost::shared_ptr _element; // The dofmap boost::shared_ptr _dofmap; // The component (for sub spaces) std::vector _component; // Cache of sub spaces mutable std::map, boost::shared_ptr > subspaces; }; } #endif dolfin-1.3.0/dolfin/function/SpecialFacetFunction.h0000644000175000017500000000435112263014601022146 0ustar johannrjohannr// Copyright (C) 2010 Marie E. Rognes // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2010-10-13 // Last changed: 2011-07-04 #ifndef __SPECIAL_FACET_FUNCTION_H #define __SPECIAL_FACET_FUNCTION_H #include #include namespace ufc { class cell; } namespace dolfin { /// A _SpecialFacetFunction_ is a representation of a global /// function that is in P(f) for each _Facet_ f in a _Mesh_ /// for some _FunctionSpace_ P template class Array; class Function; class SpecialFacetFunction : public Expression { public: /// Create (scalar-valued) SpecialFacetFunction /// /// *Arguments* /// f_e (std::vector<_Function_>) /// Separate _Function_s for each facet explicit SpecialFacetFunction(std::vector& f_e); /// Create (vector-valued) SpecialFacetFunction /// /// *Arguments* /// f_e (std::vector<_Function_>) /// Separate _Function_s for each facet /// /// dim (int) /// The value-dimension of the Functions SpecialFacetFunction(std::vector& f_e, std::size_t dim); /// Evaluate SpecialFacetFunction (cf _Expression_.eval) /// Evaluate function for given cell void eval(Array& values, const Array& x, const ufc::cell& cell) const; /// Extract sub-function i /// /// *Arguments* /// i (int) /// component /// /// *Returns* /// _Function_ Function& operator[] (std::size_t i) const; private: std::vector& _f_e; }; } #endif dolfin-1.3.0/dolfin/function/SpecialFacetFunction.cpp0000644000175000017500000000361712263014601022505 0ustar johannrjohannr// Copyright (C) 2010 Marie E. Rognes // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2010-10-13 // Last changed: 2011-01-04 #include #include #include "SpecialFacetFunction.h" using namespace dolfin; //----------------------------------------------------------------------------- SpecialFacetFunction::SpecialFacetFunction(std::vector& f_e, std::size_t dim) : Expression(dim), _f_e(f_e) { // Do nothing } //----------------------------------------------------------------------------- SpecialFacetFunction::SpecialFacetFunction(std::vector& f_e) : Expression(), _f_e(f_e) { // Do nothing } //----------------------------------------------------------------------------- Function& SpecialFacetFunction::operator[] (std::size_t i) const { dolfin_assert(i < _f_e.size()); return _f_e[i]; } //----------------------------------------------------------------------------- void SpecialFacetFunction::eval(Array& values, const Array& x, const ufc::cell& cell) const { values[0] = 0.0; if (cell.local_facet >= 0) _f_e[cell.local_facet].eval(values, x, cell); } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/function/FunctionAssigner.cpp0000644000175000017500000004064112263014601021733 0ustar johannrjohannr// Copyright (C) 2013 Johan Hake // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-09-20 // Last changed: 2013-12-04 #include #include #include #include #include #include #include #include #include "FunctionAssigner.h" using namespace dolfin; //----------------------------------------------------------------------------- FunctionAssigner::FunctionAssigner(boost::shared_ptr receiving_space, boost::shared_ptr assigning_space) : _receiving_spaces(1, receiving_space),_assigning_spaces(1, assigning_space), _receiving_indices(1), _assigning_indices(1), _transfer(1) { // Get mesh const Mesh& mesh = _get_mesh(); // Build vectors of indices _check_and_build_indices(mesh, _receiving_spaces, _assigning_spaces); } //----------------------------------------------------------------------------- FunctionAssigner::FunctionAssigner(std::vector > receiving_spaces, boost::shared_ptr assigning_space) : _receiving_spaces(receiving_spaces), _assigning_spaces(1, assigning_space), _receiving_indices(receiving_spaces.size()), _assigning_indices(receiving_spaces.size()), _transfer(receiving_spaces.size()) { // Get mesh const Mesh& mesh = _get_mesh(); // Check that the number of assigning subspaces are the same as number // of receiving spaces const std::size_t N = _receiving_spaces.size(); dolfin_assert(_assigning_spaces[0]); if (_assigning_spaces[0]->element()->num_sub_elements() != N) { dolfin_error("FunctionAssigner.cpp", "create function assigner", "Expected the same number of sub spaces in the assigning " \ "FunctionSpace as the number of receiving FunctionSpaces"); } // Collect assigning sub spaces std::vector > assigning_sub_spaces; for (std::size_t sub_space_ind = 0; sub_space_ind < N; sub_space_ind++) assigning_sub_spaces.push_back((*_assigning_spaces[0])[sub_space_ind]); // Build vectors of indices _check_and_build_indices(mesh, _receiving_spaces, assigning_sub_spaces); } //----------------------------------------------------------------------------- FunctionAssigner::FunctionAssigner(boost::shared_ptr receiving_space, std::vector > assigning_spaces) :_receiving_spaces(1, receiving_space), _assigning_spaces(assigning_spaces), _receiving_indices(assigning_spaces.size()), _assigning_indices(assigning_spaces.size()), _transfer(assigning_spaces.size()) { // Get mesh const Mesh& mesh = _get_mesh(); // Check that the number of receiving subspaces are the same as number // of assigning spaces const std::size_t N = assigning_spaces.size(); dolfin_assert(_receiving_spaces[0]); if (_receiving_spaces[0]->element()->num_sub_elements()!=N) { dolfin_error("FunctionAssigner.cpp", "create function assigner", "Expected the same number of sub spaces in the receiving "\ "FunctionSpace as the number of assigning FunctionSpaces"); } // Collect receiving sub spaces std::vector > receiving_sub_spaces; for (std::size_t sub_space_ind = 0; sub_space_ind < N; sub_space_ind++) receiving_sub_spaces.push_back((*_receiving_spaces[0])[sub_space_ind]); // Build vectors of indices _check_and_build_indices(mesh, receiving_sub_spaces, _assigning_spaces); } //----------------------------------------------------------------------------- FunctionAssigner::~FunctionAssigner() { // Do nothing } //----------------------------------------------------------------------------- void FunctionAssigner::assign(boost::shared_ptr receiving_func, boost::shared_ptr assigning_func) const { // Wrap functions std::vector > receiving_funcs(1, receiving_func); std::vector > assigning_funcs(1, assigning_func); // Do the assignment _assign(receiving_funcs, assigning_funcs); } //----------------------------------------------------------------------------- void FunctionAssigner::assign(boost::shared_ptr receiving_func, std::vector > assigning_funcs) const { // Num assigning functions const std::size_t N = assigning_funcs.size(); if (receiving_func->function_space()->element()->num_sub_elements() != N) { dolfin_error("FunctionAssigner.cpp", "assigning functions", "Expected the same number of sub functions in the receiving "\ "Function as the number of assigning Functions"); } // Collect receiving sub functions std::vector > receiving_funcs(0); for (std::size_t i = 0; i < N; i++) { boost::shared_ptr func(reference_to_no_delete_pointer((*receiving_func)[i])); receiving_funcs.push_back(func); } // Do the assignment _assign(receiving_funcs, assigning_funcs); } //----------------------------------------------------------------------------- void FunctionAssigner::assign(std::vector > receiving_funcs, boost::shared_ptr assigning_func) const { // Num receiving functions const std::size_t N = receiving_funcs.size(); if (assigning_func->function_space()->element()->num_sub_elements() != N) { dolfin_error("FunctionAssigner.cpp", "assigning functions", "Expected the same number of sub functions in the assigning "\ "Function as the number of receiving Functions"); } // Collect receiving sub functions std::vector > assigning_funcs(0); for (std::size_t i = 0; i < N; i++) { boost::shared_ptr func(reference_to_no_delete_pointer((*assigning_func)[i])); assigning_funcs.push_back(func); } // Do the assignment _assign(receiving_funcs, assigning_funcs); } //----------------------------------------------------------------------------- void FunctionAssigner::_assign(std::vector > receiving_funcs, std::vector > assigning_funcs) const { // Num spaces const std::size_t N = std::max(_assigning_spaces.size(), _receiving_spaces.size()); if (assigning_funcs.size() != N) { dolfin_error("FunctionAssigner.cpp", "assign functions", "Expected the same number of assigning (sub)functions as " "the number of assigning (sub)spaces."); } if (receiving_funcs.size() != N) { dolfin_error("FunctionAssigner.cpp", "assign functions", "Expected the same number of receiving (sub)functions as " "the number of receiving (sub)spaces."); } // Flag to determine if the receiving vector is the same bool same_receiving_vector = true; const GenericVector* recieving_vector = receiving_funcs[0]->_vector.get(); // Iterate over the spaces and do the assignments for (std::size_t i = 0; i < N; i++) { // Check that the functions are in the FunctionAssigner spaces if (_receiving_spaces.size() == 1) { dolfin_assert(_receiving_spaces[0]); // Check 1-1 assignment if (_assigning_spaces.size() == 1) { dolfin_assert(receiving_funcs[0]); if (!receiving_funcs[0]->in(*_receiving_spaces[0])) { dolfin_error("FunctionAssigner.cpp", "assign functions", "The receiving Function is not in the receiving FunctionSpaces"); } } // Check N-1 assignment else { dolfin_assert(receiving_funcs[i]); dolfin_assert((*_receiving_spaces[0])[i]); if (!receiving_funcs[i]->in(*(*_receiving_spaces[0])[i])) { dolfin_error("FunctionAssigner.cpp", "assign functions", "The receiving sub Functions are not in the receiving sub FunctionSpaces"); } } } else { // Check 1-N assignment if (!receiving_funcs[i]->in(*_receiving_spaces[i])) { dolfin_error("FunctionAssigner.cpp", "assign functions", "The receiving Functions are not in the receiving FunctionSpaces"); } } if (_assigning_spaces.size() == 1) { dolfin_assert(_assigning_spaces[0]); // Check 1-1 assignment if (_receiving_spaces.size() == 1) { dolfin_assert(assigning_funcs[0]); if (!assigning_funcs[0]->in(*_assigning_spaces[0])) { dolfin_error("FunctionAssigner.cpp", "assign functions", "The assigning Function is not in the assigning FunctionSpaces"); } } // Check 1-N assignment else { dolfin_assert(assigning_funcs[i]); dolfin_assert((*_assigning_spaces[0])[i]); if (!assigning_funcs[i]->in(*(*_assigning_spaces[0])[i])) { dolfin_error("FunctionAssigner.cpp", "assign functions", "The assigning sub Functions are not in the assigning sub FunctionSpaces"); } } } else { dolfin_assert(assigning_funcs[i]); dolfin_assert(_assigning_spaces[i]); // Check N-1 assignment if (!assigning_funcs[i]->in(*_assigning_spaces[i])) { dolfin_error("FunctionAssigner.cpp", "assign function", "The assigning Functions are not in the assigning FunctionSpaces"); } } // Check if the receiving vector is the same if (i != 0) { dolfin_assert(receiving_funcs[i]->_vector); same_receiving_vector = (recieving_vector!=receiving_funcs[i]->_vector.get()) && same_receiving_vector; } // Get assigning values assigning_funcs[i]->_vector->get_local(&_transfer[i][0], _transfer[i].size(), &_assigning_indices[i][0]); // Set receiving values receiving_funcs[i]->_vector->set(&_transfer[i][0], _transfer[i].size(), &_receiving_indices[i][0]); // If not same receiving vector if (!same_receiving_vector) receiving_funcs[i]->_vector->apply("insert"); } // If same receiving vector if (same_receiving_vector) receiving_funcs[0]->_vector->apply("insert"); } //----------------------------------------------------------------------------- const Mesh& FunctionAssigner::_get_mesh() const { // Check for empty space vectors if (_assigning_spaces.size() == 0) { dolfin_error("FunctionAssigner.cpp", "create function assigner", "Expected at least one FunctionSpace for the assigning spaces"); } if (_receiving_spaces.size()==0) { dolfin_error("FunctionAssigner.cpp", "create function assigner", "Expected at least one FunctionSpace for the receiving spaces"); } // Get mesh dolfin_assert(_assigning_spaces[0]); dolfin_assert(_assigning_spaces[0]->mesh()); const Mesh& mesh = *_assigning_spaces[0]->mesh(); // Check that function spaces uses the same mesh. for (std::size_t i = 1; i < _assigning_spaces.size(); i++) { // Compare pointers dolfin_assert(_assigning_spaces[i]); dolfin_assert(_assigning_spaces[i]->mesh()); if (&mesh != _assigning_spaces[i]->mesh().get()) { dolfin_error("FunctionAssigner.cpp", "create function assigner", "Expected all FunctionSpaces to be defined over the same Mesh"); } } for (std::size_t i = 0; i < _receiving_spaces.size(); i++) { // Compare pointers dolfin_assert(_receiving_spaces[i]); dolfin_assert(_receiving_spaces[i]->mesh()); if (&mesh != _receiving_spaces[i]->mesh().get()) { dolfin_error("FunctionAssigner.cpp", "create function assigner", "Expected all FunctionSpaces to be defined over the same Mesh"); } } // Return checked mesh return mesh; } //----------------------------------------------------------------------------- void FunctionAssigner::_check_and_build_indices(const Mesh& mesh, const std::vector >& receiving_spaces, const std::vector >& assigning_spaces) { // Num spaces const std::size_t N = receiving_spaces.size(); // Check num entity dofs for the receiving and assigning spaces corresponds for (std::size_t i = 0; i < N; i++) { // Iterate over all entity dimensions for (std::size_t entity_dim=0; entity_dim < mesh.topology().dim(); entity_dim++) { // Check num entity dofs for assigning spaces if (assigning_spaces[i]->dofmap()->num_entity_dofs(entity_dim) != receiving_spaces[i]->dofmap()->num_entity_dofs(entity_dim)) { dolfin_error("FunctionAssigner.cpp", "create function assigner", "The assigning and receiving FunctionSpaces have incompatible" " number of entity dofs for entity %d and space no: %d", entity_dim, i); } } } dolfin_assert(_receiving_indices.size()==N); dolfin_assert(_assigning_indices.size()==N); // Iterate over all spaces and collect dofs for (std::size_t i = 0; i < N; i++) { // Get dofmaps dolfin_assert(assigning_spaces[i]); dolfin_assert(assigning_spaces[i]->dofmap()); const GenericDofMap& assigning_dofmap = *assigning_spaces[i]->dofmap(); dolfin_assert(receiving_spaces[i]); dolfin_assert(receiving_spaces[i]->dofmap()); const GenericDofMap& receiving_dofmap = *receiving_spaces[i]->dofmap(); std::set assigning_dofs; std::set receiving_dofs; // Get on-process dof ranges const std::size_t assigning_n0 = assigning_dofmap.ownership_range().first; const std::size_t assigning_n1 = assigning_dofmap.ownership_range().second; const std::size_t receiving_n0 = receiving_dofmap.ownership_range().first; const std::size_t receiving_n1 = receiving_dofmap.ownership_range().second; // Iterate over cells and collect cell dofs for (CellIterator cell(mesh); !cell.end(); ++cell) { // Get local cell dofs const std::vector& assigning_cell_dofs = assigning_dofmap.cell_dofs(cell->index()); const std::vector& receiving_cell_dofs = receiving_dofmap.cell_dofs(cell->index()); // Check that both spaces have the same number of dofs if (assigning_cell_dofs.size()!=receiving_cell_dofs.size()) { dolfin_error("FunctionAssigner.cpp", "create function assigner", "The receiving and assigning spaces do not have the same " "number of dofs per cell"); } // Iterate over the local dofs and collect on-process dofs for (std::size_t i=0; i= assigning_n0 && assigning_dof < assigning_n1) assigning_dofs.insert(assigning_dof); const std::size_t receiving_dof = receiving_cell_dofs[i]; if (receiving_dof >= receiving_n0 && receiving_dof < receiving_n1) receiving_dofs.insert(receiving_dof); } } // Check that both spaces have the same number of dofs if (assigning_dofs.size() != receiving_dofs.size()) { dolfin_error("FunctionAssigner.cpp", "create function assigner", "The receiving and assigning spaces do not have the same " "number of dofs per space"); } // Transfer dofs to contiguous vectors _assigning_indices[i].reserve(assigning_dofs.size()); _receiving_indices[i].reserve(receiving_dofs.size()); std::set::const_iterator it; for (it = assigning_dofs.begin(); it != assigning_dofs.end(); ++it) _assigning_indices[i].push_back(*it); for (it = receiving_dofs.begin(); it != receiving_dofs.end(); ++it) _receiving_indices[i].push_back(*it); // Resize transfer vector _transfer[i].resize(assigning_dofs.size()); } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/function/CoefficientAssigner.h0000644000175000017500000000312712263014601022027 0ustar johannrjohannr// Copyright (C) 2008-2009 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2008-10-28 // Last changed: 2009-10-04 #ifndef __COEFFICIENT_ASSIGNER_H #define __COEFFICIENT_ASSIGNER_H #include namespace dolfin { class Form; class GenericFunction; /// This class is used for assignment of coefficients to /// forms, which allows magic like /// /// a.f = f /// a.g = g /// /// which will insert the coefficients f and g in the correct /// positions in the list of coefficients for the form. class CoefficientAssigner { public: /// Create coefficient assigner for coefficient with given number CoefficientAssigner(Form& form, std::size_t number); /// Destructor ~CoefficientAssigner(); /// Assign coefficient void operator= (const GenericFunction& coefficient); private: // The form Form& _form; // The number of the coefficient std::size_t _number; }; } #endif dolfin-1.3.0/dolfin/function/Function.h0000644000175000017500000002767412263014601017717 0ustar johannrjohannr// Copyright (C) 2003-2012 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Garth N. Wells, 2005-2010. // Modified by Kristian B. Oelgaard, 2007. // Modified by Martin Sandve Alnes, 2008. // Modified by Andre Massing, 2009. // // First added: 2003-11-28 // Last changed: 2013-10-22 #ifndef __FUNCTION_H #define __FUNCTION_H #include #include #include #include #include #include #include #include "GenericFunction.h" #include "FunctionAXPY.h" namespace ufc { // Forward declarations class cell; } namespace dolfin { // Forward declarations class DirichletBC; class Expression; class FunctionSpace; class GenericVector; class SubDomain; template class Array; /// This class represents a function :math:`u_h` in a finite /// element function space :math:`V_h`, given by /// /// .. math:: /// /// u_h = \sum_{i=1}^{n} U_i \phi_i /// /// where :math:`\{\phi_i\}_{i=1}^{n}` is a basis for :math:`V_h`, /// and :math:`U` is a vector of expansion coefficients for :math:`u_h`. class Function : public GenericFunction, public Hierarchical { public: /// Create function on given function space /// /// *Arguments* /// V (_FunctionSpace_) /// The function space. /// /// *Example* /// .. code-block:: c++ /// /// Function u(V); /// explicit Function(const FunctionSpace& V); /// Create function on given function space (shared data) /// /// *Arguments* /// V (_FunctionSpace_) /// The function space. explicit Function(boost::shared_ptr V); /// Create function on given function space with a given vector /// (shared data) /// /// *Warning: This constructor is intended for internal library use only* /// /// *Arguments* /// V (_FunctionSpace_) /// The function space. /// x (_GenericVector_) /// The vector. Function(boost::shared_ptr V, boost::shared_ptr x); /// Create function from vector of dofs stored to file /// /// *Arguments* /// V (_FunctionSpace_) /// The function space. /// filename_vector (std::string) /// The name of the file containing the vector. /// filename_dofdata (std::string) /// The name of the file containing the dofmap data. Function(const FunctionSpace& V, std::string filename); /// Create function from vector of dofs stored to file (shared data) /// /// *Arguments* /// V (_FunctionSpace_) /// The function space. /// filename_dofdata (std::string) /// The name of the file containing the dofmap data. Function(boost::shared_ptr V, std::string filename); /// Copy constructor /// /// *Arguments* /// v (_Function_) /// The object to be copied. Function(const Function& v); /// Sub-function constructor with shallow copy of vector (used in Python /// interface) /// /// *Arguments* /// v (_Function_) /// The function to be copied. /// i (std::size_t) /// Index of subfunction. /// Function(const Function& v, std::size_t i); /// Destructor virtual ~Function(); /// Assignment from function /// /// *Arguments* /// v (_Function_) /// Another function. const Function& operator= (const Function& v); /// Assignment from expression using interpolation /// /// *Arguments* /// v (_Expression_) /// The expression. const Function& operator= (const Expression& v); /// Assignment from linear combination of function /// /// *Arguments* /// v (_FunctionAXPY_) /// A linear combination of other Functions void operator=(const FunctionAXPY& axpy); /// Extract subfunction /// /// *Arguments* /// i (std::size_t) /// Index of subfunction. /// *Returns* /// _Function_ /// The subfunction. Function& operator[] (std::size_t i) const; /// Add operator with other function /// /// *Returns* /// _FunctionAXPY_ /// Return a linear combination of Functions FunctionAXPY operator+(const Function& other) const; /// Add operator with other linear combination of functions /// /// *Returns* /// _FunctionAXPY_ /// Return a linear combination of Functions FunctionAXPY operator+(const FunctionAXPY& axpy) const; /// Substraction operator with other function /// /// *Returns* /// _FunctionAXPY_ /// Return a linear combination of Functions FunctionAXPY operator-(const Function& other) const; /// Substraction operator with other linear combination of functions /// /// *Returns* /// _FunctionAXPY_ /// Return a linear combination of Functions FunctionAXPY operator-(const FunctionAXPY& axpy) const; /// Scale operator /// /// *Returns* /// _FunctionAXPY_ /// Return a linear combination of Functions FunctionAXPY operator*(double scalar) const; /// Scale operator /// /// *Returns* /// _FunctionAXPY_ /// Return a linear combination of Functions FunctionAXPY operator/(double scalar) const; /// Return shared pointer to function space /// /// *Returns* /// _FunctionSpace_ /// Return the shared pointer. boost::shared_ptr function_space() const; /// Return vector of expansion coefficients (non-const version) /// /// *Returns* /// _GenericVector_ /// The vector of expansion coefficients. boost::shared_ptr vector(); /// Return vector of expansion coefficients (const version) /// /// *Returns* /// _GenericVector_ /// The vector of expansion coefficients (const). boost::shared_ptr vector() const; /// Check if function is a member of the given function space /// /// *Arguments* /// V (_FunctionSpace_) /// The function space. /// /// *Returns* /// bool /// True if the function is in the function space. bool in(const FunctionSpace& V) const; /// Return geometric dimension /// /// *Returns* /// std::size_t /// The geometric dimension. std::size_t geometric_dimension() const; /// Evaluate function at given coordinates /// /// *Arguments* /// values (_Array_ ) /// The values. /// x (_Array_ ) /// The coordinates. void eval(Array& values, const Array& x) const; /// Evaluate function at given coordinates in given cell /// /// *Arguments* /// values (_Array_ ) /// The values. /// x (_Array_ ) /// The coordinates. /// dolfin_cell (_Cell_) /// The cell. /// ufc_cell (ufc::cell) /// The ufc::cell. void eval(Array& values, const Array& x, const Cell& dolfin_cell, const ufc::cell& ufc_cell) const; /// Interpolate function (on possibly non-matching meshes) /// /// *Arguments* /// v (_GenericFunction_) /// The function to be interpolated. void interpolate(const GenericFunction& v); /// Extrapolate function (from a possibly lower-degree function space) /// /// *Arguments* /// v (_Function_) /// The function to be extrapolated. void extrapolate(const Function& v); //--- Implementation of GenericFunction interface --- /// Return value rank /// /// *Returns* /// std::size_t /// The value rank. virtual std::size_t value_rank() const; /// Return value dimension for given axis /// /// *Arguments* /// i (std::size_t) /// The index of the axis. /// /// *Returns* /// std::size_t /// The value dimension. virtual std::size_t value_dimension(std::size_t i) const; /// Evaluate at given point in given cell /// /// *Arguments* /// values (_Array_ ) /// The values at the point. /// x (_Array_ ) /// The coordinates of the point. /// cell (ufc::cell) /// The cell which contains the given point. virtual void eval(Array& values, const Array& x, const ufc::cell& cell) const; /// Evaluate function for given data (non-matching meshes) /// /// *Arguments* /// values (_Array_ ) /// The values at the point. /// x (_Array_ ) /// The coordinates of the point. /// cell (ufc::cell) /// The cell. void non_matching_eval(Array& values, const Array& x, const ufc::cell& ufc_cell) const; /// Restrict function to local cell (compute expansion coefficients w) /// /// *Arguments* /// w (list of doubles) /// Expansion coefficients. /// element (_FiniteElement_) /// The element. /// dolfin_cell (_Cell_) /// The cell. /// ufc_cell (ufc::cell). /// The ufc::cell. virtual void restrict(double* w, const FiniteElement& element, const Cell& dolfin_cell, const double* vertex_coordinates, const ufc::cell& ufc_cell) const; /// Compute values at all mesh vertices /// /// *Arguments* /// vertex_values (_Array_ ) /// The values at all vertices. /// mesh (_Mesh_) /// The mesh. virtual void compute_vertex_values(std::vector& vertex_values, const Mesh& mesh) const; /// Compute values at all mesh vertices /// /// *Arguments* /// vertex_values (_Array_ ) /// The values at all vertices. void compute_vertex_values(std::vector& vertex_values); /// Update off-process ghost coefficients virtual void update() const; private: // Friends friend class FunctionSpace; friend class FunctionAssigner; // Collection of sub-functions which share data with the function mutable boost::ptr_map sub_functions; // Compute lists of off-process dofs void compute_off_process_dofs() const; // Initialize vector void init_vector(); // Get coefficients from the vector(s) void compute_ghost_indices(std::pair range, std::vector& ghost_indices) const; // The function space boost::shared_ptr _function_space; // The vector of expansion coefficients (local) boost::shared_ptr _vector; // True if extrapolation should be allowed bool allow_extrapolation; }; } #endif dolfin-1.3.0/dolfin/function/SubSpace.cpp0000644000175000017500000000431012263014601020150 0ustar johannrjohannr// Copyright (C) 2008 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Garth N. Wells, 2009. // // First added: 2008-11-03 // Last changed: 2009-05-17 #include #include "SubSpace.h" using namespace dolfin; //----------------------------------------------------------------------------- SubSpace::SubSpace(const FunctionSpace& V, std::size_t component) : FunctionSpace(V.mesh(), V.element(), V.dofmap()) { // Create array std::vector c; c.push_back(component); // Extract subspace and assign boost::shared_ptr _V(V.extract_sub_space(c)); *static_cast(this) = *_V; } //----------------------------------------------------------------------------- SubSpace::SubSpace(const FunctionSpace& V, std::size_t component, std::size_t sub_component) : FunctionSpace(V.mesh(), V.element(), V.dofmap()) { // Create array std::vector c; c.push_back(component); c.push_back(sub_component); // Extract subspace and assign boost::shared_ptr _V(V.extract_sub_space(c)); *static_cast(this) = *_V; } //----------------------------------------------------------------------------- SubSpace::SubSpace(const FunctionSpace& V, const std::vector& component) : FunctionSpace(V.mesh(), V.element(), V.dofmap()) { // Extract subspace and assign boost::shared_ptr _V(V.extract_sub_space(component)); *static_cast(this) = *_V; } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/function/assign.cpp0000644000175000017500000000512212263014601017731 0ustar johannrjohannr// Copyright (C) 2013 Johan Hake // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-11-07 // Last changed: 2013-11-07 #include #include #include "assign.h" #include "FunctionAssigner.h" //----------------------------------------------------------------------------- void dolfin::assign(boost::shared_ptr receiving_func, boost::shared_ptr assigning_func) { // Instantiate FunctionAssigner and call assign const FunctionAssigner assigner(receiving_func->function_space(), assigning_func->function_space()); assigner.assign(receiving_func, assigning_func); } //----------------------------------------------------------------------------- void dolfin::assign(boost::shared_ptr receiving_func, std::vector > assigning_funcs) { // Instantiate FunctionAssigner and call assign std::vector > assigning_spaces; for (std::size_t i = 0; i < assigning_funcs.size(); i++) assigning_spaces.push_back(assigning_funcs[i]->function_space()); const FunctionAssigner assigner(receiving_func->function_space(), assigning_spaces); assigner.assign(receiving_func, assigning_funcs); } //----------------------------------------------------------------------------- void dolfin::assign(std::vector > receiving_funcs, boost::shared_ptr assigning_func) { // Instantiate FunctionAssigner and call assign std::vector > receiving_spaces; for (std::size_t i = 0; i < receiving_funcs.size(); i++) receiving_spaces.push_back(receiving_funcs[i]->function_space()); const FunctionAssigner assigner(receiving_spaces, assigning_func->function_space()); assigner.assign(receiving_funcs, assigning_func); } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/function/FunctionSpace.cpp0000644000175000017500000002415312263014601021213 0ustar johannrjohannr// Copyright (C) 2008-2009 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Kristoffer Selim, 2008. // Modified by Martin Alnes, 2008. // Modified by Garth N. Wells, 2008-2011. // Modified by Kent-Andre Mardal, 2009. // Modified by Ola Skavhaug, 2009. // // First added: 2008-09-11 // Last changed: 2011-05-15 #include #include #include #include #include #include #include #include #include "GenericFunction.h" #include "FunctionSpace.h" using namespace dolfin; //----------------------------------------------------------------------------- FunctionSpace::FunctionSpace(boost::shared_ptr mesh, boost::shared_ptr element, boost::shared_ptr dofmap) : Hierarchical(*this), _mesh(mesh), _element(element), _dofmap(dofmap) { // Do nothing } //----------------------------------------------------------------------------- FunctionSpace::FunctionSpace(boost::shared_ptr mesh) : Hierarchical(*this), _mesh(mesh) { // Do nothing } //----------------------------------------------------------------------------- FunctionSpace::FunctionSpace(const FunctionSpace& V) : Hierarchical(*this) { // Assign data (will be shared) *this = V; } //----------------------------------------------------------------------------- FunctionSpace::~FunctionSpace() { // Do nothing } //----------------------------------------------------------------------------- void FunctionSpace::attach(boost::shared_ptr element, boost::shared_ptr dofmap) { _element = element; _dofmap = dofmap; } //----------------------------------------------------------------------------- const FunctionSpace& FunctionSpace::operator=(const FunctionSpace& V) { // Assign data (will be shared) _mesh = V._mesh; _element = V._element; _dofmap = V._dofmap; _component = V._component; // Call assignment operator for base class Hierarchical::operator=(V); return *this; } //----------------------------------------------------------------------------- bool FunctionSpace::operator==(const FunctionSpace& V) const { // Compare pointers to shared objects return _element.get() == V._element.get() && _mesh.get() == V._mesh.get() && _dofmap.get() == V._dofmap.get(); } //----------------------------------------------------------------------------- bool FunctionSpace::operator!=(const FunctionSpace& V) const { // Compare pointers to shared objects return !(*this == V); } //----------------------------------------------------------------------------- boost::shared_ptr FunctionSpace::mesh() const { return _mesh; } //----------------------------------------------------------------------------- boost::shared_ptr FunctionSpace::element() const { return _element; } //----------------------------------------------------------------------------- boost::shared_ptr FunctionSpace::dofmap() const { return _dofmap; } //----------------------------------------------------------------------------- std::size_t FunctionSpace::dim() const { dolfin_assert(_dofmap); return _dofmap->global_dimension(); } //----------------------------------------------------------------------------- void FunctionSpace::interpolate(GenericVector& expansion_coefficients, const GenericFunction& v) const { dolfin_assert(_mesh); dolfin_assert(_element); dolfin_assert(_dofmap); // Check that function ranks match if (_element->value_rank() != v.value_rank()) { dolfin_error("FunctionSpace.cpp", "interpolate function into function space", "Rank of function (%d) does not match rank of function space (%d)", v.value_rank(), element()->value_rank()); } // Check that function dims match for (std::size_t i = 0; i < _element->value_rank(); ++i) { if (_element->value_dimension(i) != v.value_dimension(i)) { dolfin_error("FunctionSpace.cpp", "interpolate function into function space", "Dimension %d of function (%d) does not match dimension %d of function space (%d)", i, v.value_dimension(i), i, element()->value_dimension(i)); } } // Initialize vector of expansion coefficients //expansion_coefficients.resize(_dofmap->global_dimension()); if (expansion_coefficients.size() != _dofmap->global_dimension()) { dolfin_error("FunctionSpace.cpp", "interpolate function into function space", "Wrong size of vector"); } expansion_coefficients.zero(); // Initialize local arrays std::vector cell_coefficients(_dofmap->max_cell_dimension()); // Iterate over mesh and interpolate on each cell ufc::cell ufc_cell; std::vector vertex_coordinates; for (CellIterator cell(*_mesh); !cell.end(); ++cell) { // Update to current cell cell->get_vertex_coordinates(vertex_coordinates); cell->get_cell_data(ufc_cell); // Restrict function to cell v.restrict(cell_coefficients.data(), *_element, *cell, vertex_coordinates.data(), ufc_cell); // Tabulate dofs const std::vector& cell_dofs = _dofmap->cell_dofs(cell->index()); // Copy dofs to vector expansion_coefficients.set(cell_coefficients.data(), _dofmap->cell_dimension(cell->index()), cell_dofs.data()); } // Finalise changes expansion_coefficients.apply("insert"); } //----------------------------------------------------------------------------- boost::shared_ptr FunctionSpace::operator[] (std::size_t i) const { std::vector component; component.push_back(i); return extract_sub_space(component); } //----------------------------------------------------------------------------- boost::shared_ptr FunctionSpace::extract_sub_space(const std::vector& component) const { dolfin_assert(_mesh); dolfin_assert(_element); dolfin_assert(_dofmap); // Check if sub space is already in the cache std::map, boost::shared_ptr >::const_iterator subspace; subspace = subspaces.find(component); if (subspace != subspaces.end()) return subspace->second; else { // Extract sub element boost::shared_ptr element(_element->extract_sub_element(component)); // Extract sub dofmap boost::shared_ptr dofmap(_dofmap->extract_sub_dofmap(component, *_mesh)); // Create new sub space boost::shared_ptr new_sub_space(new FunctionSpace(_mesh, element, dofmap)); // Set component new_sub_space->_component.resize(component.size()); for (std::size_t i = 0; i < component.size(); i++) new_sub_space->_component[i] = component[i]; // Insert new sub space into cache subspaces.insert(std::pair, boost::shared_ptr >(component, new_sub_space)); return new_sub_space; } } //----------------------------------------------------------------------------- boost::shared_ptr FunctionSpace::collapse() const { boost::unordered_map collapsed_dofs; return collapse(collapsed_dofs); } //----------------------------------------------------------------------------- boost::shared_ptr FunctionSpace::collapse(boost::unordered_map& collapsed_dofs) const { dolfin_assert(_mesh); if (_component.empty()) { dolfin_error("FunctionSpace.cpp", "collapse function space", "Function space is not a subspace"); } // Create collapsed DofMap boost::shared_ptr collapsed_dofmap(_dofmap->collapse(collapsed_dofs, *_mesh)); // Create new FunctionsSpace and return boost::shared_ptr collapsed_sub_space(new FunctionSpace(_mesh, _element, collapsed_dofmap)); return collapsed_sub_space; } //----------------------------------------------------------------------------- std::vector FunctionSpace::component() const { return _component; } //----------------------------------------------------------------------------- std::string FunctionSpace::str(bool verbose) const { std::stringstream s; if (verbose) { s << str(false) << std::endl << std::endl; // No verbose output implemented } else s << ""; return s.str(); } //----------------------------------------------------------------------------- void FunctionSpace::print_dofmap() const { // Note: static_cast is used below to supoort types that cannot be // directed to dolfin::cout dolfin_assert(_mesh); for (CellIterator cell(*_mesh); !cell.end(); ++cell) { const std::vector& dofs = _dofmap->cell_dofs(cell->index()); cout << cell->index() << ":"; for (std::size_t i = 0; i < dofs.size(); i++) cout << " " << static_cast(dofs[i]); cout << endl; } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/function/SpecialFunctions.h0000644000175000017500000000366612263014601021376 0ustar johannrjohannr// Copyright (C) 2006-2011 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Kristian B. Oelgaard 2007 // Modified by Martin Sandve Alnes 2008 // Modified by Garth N. Wells 2008 // // First added: 2006-02-09 // Last changed: 2011-11-16 #ifndef __SPECIAL_FUNCTIONS_H #define __SPECIAL_FUNCTIONS_H #include #include #include "Expression.h" namespace dolfin { class Mesh; /// This Function represents the mesh coordinates on a given mesh. class MeshCoordinates : public Expression { public: /// Constructor explicit MeshCoordinates(const Mesh& mesh); /// Evaluate function void eval(Array& values, const Array& x, const ufc::cell& cell) const; private: // The mesh const Mesh& _mesh; }; /// This function represents the area/length of a cell facet on a given mesh. class FacetArea : public Expression { public: /// Constructor explicit FacetArea(const Mesh& mesh); /// Evaluate function void eval(Array& values, const Array& x, const ufc::cell& cell) const; private: // The mesh const Mesh& _mesh; // Warning when evaluating on cells mutable Event not_on_boundary; }; } #endif dolfin-1.3.0/dolfin/function/FunctionAssigner.h0000644000175000017500000001432712263014601021402 0ustar johannrjohannr// Copyright (C) 2013 Johan Hake // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2013-09-20 // Last changed: 2013-11-11 #ifndef __DOLFIN_FUNCTION_ASSIGNER_H #define __DOLFIN_FUNCTION_ASSIGNER_H #include #include namespace dolfin { class Function; class FunctionSpace; class Mesh; /// This class facilitate assignments between Function and sub /// Functions. It builds and caches maps between compatible /// dofs. These maps are used in the assignment methods which /// perform the actual assignment. Optionally can a MeshFunction be /// passed together with a label, facilitating FunctionAssignment /// over sub domains. class FunctionAssigner { public: /// Create a FunctionAssigner between functions residing in the /// same type of FunctionSpace. One or both functions can be sub /// functions. /// /// *Arguments* /// receiving_space (_FunctionSpace_) /// The function space of the receiving function /// assigning_space (_FunctionSpace_) /// The function space of the assigning function FunctionAssigner(boost::shared_ptr receiving_space, boost::shared_ptr assigning_space); /// Create a FunctionAssigner between one mixed function /// (assigning) and several functions (receiving). The number of /// receiving functions must sum up to the number of sub functions /// in the assigning mixed function. The sub spaces of the /// assigning mixed space must be of the same type ans size as the /// receiving spaces. /// /// *Arguments* /// receiving_spaces (std::vector<_FunctionSpace_>) /// The recieving function spaces /// assigning_space (_FunctionSpace_) /// The assigning function space FunctionAssigner(std::vector > receiving_spaces, boost::shared_ptr assigning_space); /// Create a FunctionAssigner between several functions /// (assigning) and one mixed function (receiving). The number of /// sub functions in the assigning mixed function must sum up to /// the number of receiving functions. The sub spaces of the /// receiving mixed space must be of the same type ans size as the /// assigning spaces. /// /// *Arguments* /// receiving_space (boost::shared_ptr<_FunctionSpace_>) /// The recieving function space /// assigning_spaces (std::vector >) /// The assigning function spaces FunctionAssigner(boost::shared_ptr receiving_space, std::vector > assigning_spaces); /// Assign one function to another /// /// *Arguments* /// receiving_func (boost::shared_ptr<_Function_>) /// The recieving function /// assigning_func (boost::shared_ptr<_Function_>) /// The assigning function void assign(boost::shared_ptr receiving_func, boost::shared_ptr assigning_func) const; /// Assign several functions to sub functions of a mixed receiving /// function /// /// *Arguments* /// receiving_func (boost::shared_ptr<_Function_>) /// The recieving mixed function /// assigning_funcs (std::vector >) /// The assigning functions void assign(boost::shared_ptr receiving_func, std::vector > assigning_funcs) const; /// Assign sub functions of a single mixed function to single /// receiving functions /// /// *Arguments* /// receiving_funcs (std::vector >) /// The recieving functions /// assigning_func (boost::shared_ptr<_Function_>) /// The assigning mixed function void assign(std::vector > receiving_funcs, boost::shared_ptr assigning_func) const; /// Destructor ~FunctionAssigner(); /// Return the number of assiging functions inline std::size_t num_assigning_functions() const { return _assigning_spaces.size(); } /// Return the number of receiving functions inline std::size_t num_receiving_functions() const { return _receiving_spaces.size(); } private: // Utility function to actually do the assignment void _assign(std::vector > receiving_funcs, std::vector > assigning_funcs) const; // Check the compatability of the meshes and return a reference to // the mesh const Mesh& _get_mesh() const; // Check the compatability of the arguments to the constructor and // build indices for assignment void _check_and_build_indices(const Mesh& mesh, const std::vector >& receiving_spaces, const std::vector >& assigning_spaces); // Shared pointers to the original FunctionSpaces std::vector > _receiving_spaces; std::vector > _assigning_spaces; // Indices for accessing values to receiving Functions std::vector > _receiving_indices; // Indices for accessing values from assigning Functions std::vector > _assigning_indices; // Vector for value transfer between assigning and receiving Function mutable std::vector > _transfer; }; } #endif dolfin-1.3.0/dolfin/function/Expression.h0000644000175000017500000001203112263014601020246 0ustar johannrjohannr// Copyright (C) 2009 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2009-09-28 // Last changed: 2011-08-15 #ifndef __EXPRESSION_H #define __EXPRESSION_H #include #include #include #include "GenericFunction.h" namespace dolfin { class Mesh; /// This class represents a user-defined expression. Expressions can /// be used as coefficients in variational forms or interpolated /// into finite element spaces. /// /// An expression is defined by overloading the eval() method. Users /// may choose to overload either a simple version of eval(), in the /// case of expressions only depending on the coordinate x, or an /// optional version for expressions depending on x and mesh data /// like cell indices or facet normals. /// /// The geometric dimension (the size of x) and the value rank and /// dimensions of an expression must supplied as arguments to the /// constructor. class Expression : public GenericFunction { public: /// Create scalar expression. Expression(); /// Create vector-valued expression with given dimension. /// /// *Arguments* /// dim (std::size_t) /// Dimension of the vector-valued expression. explicit Expression(std::size_t dim); /// Create matrix-valued expression with given dimensions. /// /// *Arguments* /// dim0 (std::size_t) /// Dimension (rows). /// dim1 (std::size_t) /// Dimension (columns). Expression(std::size_t dim0, std::size_t dim1); /// Create tensor-valued expression with given shape. /// /// *Arguments* /// value_shape (std::vector) /// Shape of expression. explicit Expression(std::vector value_shape); /// Copy constructor /// /// *Arguments* /// expression (_Expression_) /// Object to be copied. Expression(const Expression& expression); /// Destructor virtual ~Expression(); //--- Implementation of GenericFunction interface --- /// Note: The reimplementation of eval is needed for the Python interface. /// Evaluate at given point in given cell. /// /// *Arguments* /// values (_Array_ ) /// The values at the point. /// x (_Array_ ) /// The coordinates of the point. /// cell (ufc::cell) /// The cell which contains the given point. virtual void eval(Array& values, const Array& x, const ufc::cell& cell) const; /// Evaluate at given point. /// /// *Arguments* /// values (_Array_ ) /// The values at the point. /// x (_Array_ ) /// The coordinates of the point. virtual void eval(Array& values, const Array& x) const; /// Return value rank. /// /// *Returns* /// std::size_t /// The value rank. virtual std::size_t value_rank() const; /// Return value dimension for given axis. /// /// *Arguments* /// i (std::size_t) /// Integer denoting the axis to use. /// /// *Returns* /// std::size_t /// The value dimension (for the given axis). virtual std::size_t value_dimension(std::size_t i) const; /// Restrict function to local cell (compute expansion coefficients w). /// /// *Arguments* /// w (list of doubles) /// Expansion coefficients. /// element (_FiniteElement_) /// The element. /// dolfin_cell (_Cell_) /// The cell. /// ufc_cell (ufc::cell) /// The ufc::cell. virtual void restrict(double* w, const FiniteElement& element, const Cell& dolfin_cell, const double* vertex_coordinates, const ufc::cell& ufc_cell) const; /// Compute values at all mesh vertices. /// /// *Arguments* /// vertex_values (_Array_ ) /// The values at all vertices. /// mesh (_Mesh_) /// The mesh. virtual void compute_vertex_values(std::vector& vertex_values, const Mesh& mesh) const; protected: // Value shape std::vector _value_shape; }; } #endif dolfin-1.3.0/dolfin/function/SpecialFunctions.cpp0000644000175000017500000000477212263014601021730 0ustar johannrjohannr// Copyright (C) 2006-2011 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Kristian B. Oelgaard, 2007, 2008. // Modified by Martin Sandve Alnes, 2008. // Modified by Garth N. Wells, 2008, 2009. // // First added: 2008-07-17 // Last changed: 2011-11-16 #include #include #include #include "SpecialFunctions.h" using namespace dolfin; //----------------------------------------------------------------------------- MeshCoordinates::MeshCoordinates(const Mesh& mesh) : Expression(mesh.geometry().dim()), _mesh(mesh) { // Do nothing } //----------------------------------------------------------------------------- void MeshCoordinates::eval(Array& values, const Array& x, const ufc::cell& cell) const { dolfin_assert(cell.geometric_dimension == _mesh.geometry().dim()); dolfin_assert(x.size() == _mesh.geometry().dim()); for (std::size_t i = 0; i < cell.geometric_dimension; ++i) values[i] = x[i]; } //----------------------------------------------------------------------------- FacetArea::FacetArea(const Mesh& mesh) : _mesh(mesh), not_on_boundary("*** Warning: evaluating special function FacetArea on a " "non-facet domain, returning zero.") { // Do nothing } //----------------------------------------------------------------------------- void FacetArea::eval(Array& values, const Array& x, const ufc::cell& cell) const { dolfin_assert(cell.geometric_dimension == _mesh.geometry().dim()); if (cell.local_facet >= 0) { Cell c(_mesh, cell.index); values[0] = c.facet_area(cell.local_facet); } else { not_on_boundary(); values[0] = 0.0; } } //----------------------------------------------------------------------------- dolfin-1.3.0/dolfin/adaptivity/0000755000175000017500000000000012263014601016272 5ustar johannrjohannrdolfin-1.3.0/dolfin/adaptivity/Extrapolation.h0000644000175000017500000000747112263014601021305 0ustar johannrjohannr// Copyright (C) 2009 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // Modified by Marie E. Rognes 2010. // Modified by Garth N. Wells 2010. // // First added: 2009-12-08 // Last changed: 2010-12-28 #ifndef __EXTRAPOLATION_H #define __EXTRAPOLATION_H #include #include #include #include #include namespace ufc { class cell; } namespace dolfin { class Cell; class DirichletBC; class Function; class FunctionSpace; /// This class implements an algorithm for extrapolating a function /// on a given function space from an approximation of that function /// on a possibly lower-order function space. /// /// This can be used to obtain a higher-order approximation of a /// computed dual solution, which is necessary when the computed /// dual approximation is in the test space of the primal problem, /// thereby being orthogonal to the residual. /// /// It is assumed that the extrapolation is computed on the same /// mesh as the original function. class Extrapolation { public: /// Compute extrapolation w from v static void extrapolate(Function& w, const Function& v); private: // Build data structures for unique dofs on patch of given cell static void build_unique_dofs(std::set& unique_dofs, std::map >& cell2dof2row, const Cell& cell0, const FunctionSpace& V); // Compute unique dofs in given cell static std::map compute_unique_dofs(const Cell& cell, const FunctionSpace& V, std::size_t& row, std::set& unique_dofs); // Compute coefficients on given cell static void compute_coefficients(std::vector >& coefficients, const Function&v, const FunctionSpace& V, const FunctionSpace& W, const Cell& cell0, const std::vector& vertex_coordinates0, const ufc::cell& c0, const std::vector& dofs, std::size_t& offset); // Add equations for current cell static void add_cell_equations(Eigen::MatrixXd& A, Eigen::VectorXd& b, const Cell& cell0, const Cell& cell1, const std::vector& vertex_coordinates0, const std::vector& vertex_coordinates1, const ufc::cell& c0, const ufc::cell& c1, const FunctionSpace& V, const FunctionSpace& W, const Function& v, std::map& dof2row); // Average coefficients static void average_coefficients(Function& w, std::vector >& coefficients); }; } #endif dolfin-1.3.0/dolfin/adaptivity/TimeSeries.cpp0000644000175000017500000003133712263014601021056 0ustar johannrjohannr// Copyright (C) 2009-2012 Anders Logg // // This file is part of DOLFIN. // // DOLFIN is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // DOLFIN is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with DOLFIN. If not, see . // // First added: 2009-11-11 // Last changed: 2012-05-28 #include #include #include #include #include #include #include #include #include #include #include "TimeSeries.h" using namespace dolfin; // Template function for storing objects template void store_object(const T& object, double t, std::vector& times, std::string series_name, std::string type_name, bool compressed, bool store_connectivity) { // Write object BinaryFile file_data(TimeSeries::filename_data(series_name, type_name, times.size(), compressed), store_connectivity); file_data << object; // Check that time values are strictly increasing const std::size_t n = times.size(); if (n >= 2 and (times[n - 1] - times[n - 2])*(t - times[n - 1]) <= 0.0) { dolfin_error("TimeSeries.cpp", "store object to time series", "Sample points must be strictly monotone (t_0 = %g, t_1 = %g, t_2 = %g)", times[n - 2], times[n - 1], t); } // Add time times.push_back(t); // Store times BinaryFile file_times(TimeSeries::filename_times(series_name, type_name, compressed)); file_times << times; } //----------------------------------------------------------------------------- TimeSeries::TimeSeries(std::string name, bool compressed, bool store_connectivity) : _name(name), _cleared(false), _compressed(compressed), _store_connectivity(store_connectivity) { not_working_in_parallel("Storing of data to time series"); // Set default parameters parameters = default_parameters(); // Read vector times if any std::string filename_vector = TimeSeries::filename_times(_name, "vector", _compressed); if (File::exists(filename_vector)) { // Read from file File file(filename_vector); file >> _vector_times; log(PROGRESS, "Found %d vector sample(s) in time series.", _vector_times.size()); if (!monotone(_vector_times)) { dolfin_error("TimeSeries.cpp", "read time series from file", "Sample points for vector data are not strictly monotone in series \"%s\"", name.c_str()); } } else log(PROGRESS, "No vector samples found in time series."); // Read mesh times if any std::string filename_mesh = TimeSeries::filename_times(_name, "mesh", _compressed); if (File::exists(filename_mesh)) { // Read from file File file(filename_mesh); file >> _mesh_times; log(PROGRESS, "Found %d mesh sample(s) in time series.", _mesh_times.size()); if (!monotone(_mesh_times)) { dolfin_error("TimeSeries.cpp", "read time series from file", "Sample points for mesh data are not strictly monotone in series \"%s\"", name.c_str()); } } else log(PROGRESS, "No mesh samples found in time series."); // Create subdirectories (should really be enough with just one call) File::create_parent_path(filename_vector); File::create_parent_path(filename_mesh); } //----------------------------------------------------------------------------- TimeSeries::~TimeSeries() { // Do nothing (keep files) } //----------------------------------------------------------------------------- void TimeSeries::store(const GenericVector& vector, double t) { // Clear earlier history first time we store a value const bool clear_on_write = this->parameters["clear_on_write"]; if (!_cleared && clear_on_write) clear(); // Store object store_object(vector, t, _vector_times, _name, "vector", _compressed, false); } //----------------------------------------------------------------------------- void TimeSeries::store(const Mesh& mesh, double t) { // Clear earlier history first time we store a value const bool clear_on_write = this->parameters["clear_on_write"]; if (!_cleared && clear_on_write) clear(); // Store object store_object(mesh, t, _mesh_times, _name, "mesh", _compressed, _store_connectivity); } //----------------------------------------------------------------------------- void TimeSeries::retrieve(GenericVector& vector, double t, bool interpolate) const { // Interpolate value if (interpolate) { // Find closest pair const std::pair index_pair = find_closest_pair(t, _vector_times, _name, "vector"); const std::size_t i0 = index_pair.first; const std::size_t i1 = index_pair.second; // Special case: same index if (i0 == i1) { File f(filename_data(_name, "vector", i0, _compressed)); f >> vector; log(PROGRESS, "Reading vector value at t = %g.", _vector_times[0]); return; } log(PROGRESS, "Interpolating vector value at t = %g in interval [%g, %g].", t, _vector_times[i0], _vector_times[i1]); // Read vectors GenericVector& x0(vector); boost::shared_ptr x1 = x0.factory().create_vector(); File f0(filename_data(_name, "vector", i0, _compressed)); File f1(filename_data(_name, "vector", i1, _compressed)); f0 >> x0; f1 >> *x1; // Check that the vectors have the same size if (x0.size() != x1->size()) { dolfin_error("TimeSeries.cpp", "interpolate vector value in time series", "Vector sizes don't match (%d and %d)", x0.size(), x1->size()); } // Compute weights for linear interpolation const double dt = _vector_times[i1] - _vector_times[i0]; dolfin_assert(std::abs(dt) > DOLFIN_EPS); const double w0 = (_vector_times[i1] - t) / dt; const double w1 = 1.0 - w0; // Interpolate x0 *= w0; x0.axpy(w1, *x1); } // Read closest value else { // Find closest index const std::size_t index = find_closest_index(t, _vector_times, _name, "vector"); log(PROGRESS, "Reading vector at t = %g (close to t = %g).", _vector_times[index], t); // Read vector File file(filename_data(_name, "vector", index, _compressed)); file >> vector; } } //----------------------------------------------------------------------------- void TimeSeries::retrieve(Mesh& mesh, double t) const { // Get index closest to given time const std::size_t index = find_closest_index(t, _mesh_times, _name, "mesh"); log(PROGRESS, "Reading mesh at t = %g (close to t = %g).", _mesh_times[index], t); // Read mesh std::cout << "Mesh file name: " << filename_data(_name, "mesh", index, _compressed) << std::endl; File file(filename_data(_name, "mesh", index, _compressed)); file >> mesh; } //----------------------------------------------------------------------------- std::vector TimeSeries::vector_times() const { return _vector_times; } //----------------------------------------------------------------------------- std::vector TimeSeries::mesh_times() const { return _mesh_times; } //----------------------------------------------------------------------------- void TimeSeries::clear() { _vector_times.clear(); _mesh_times.clear(); _cleared = true; } //----------------------------------------------------------------------------- std::string TimeSeries::filename_data(std::string series_name, std::string type_name, std::size_t index, bool compressed) { std::stringstream s; s << series_name << "_" << type_name << "_" << index << ".bin"; if (compressed) s << ".gz"; return s.str(); } //----------------------------------------------------------------------------- std::string TimeSeries::filename_times(std::string series_name, std::string type_name, bool compressed) { std::stringstream s; s << series_name << "_" << type_name << "_times" << ".bin"; if (compressed) s << ".gz"; return s.str(); } //----------------------------------------------------------------------------- std::string TimeSeries::str(bool verbose) const { std::stringstream s; if (verbose) { s << str(false) << std::endl << std::endl; s << "Vectors:"; for (std::size_t i = 0; i < _vector_times.size(); ++i) s << " " << i << ": " << _vector_times[i]; s << std::endl; s << "Meshes:"; for (std::size_t i = 0; i < _mesh_times.size(); ++i) s << " " << i << ": " << _mesh_times[i]; s << std::endl; } else { s << "